Definition. A language binding is a thin layer that lets an application written in a given language call OfficeAPI's native dynamic library directly. OfficeAPI provides bindings for 5 named languages and supports other popular languages through the same native library.
Which bindings are provided?
| Language | Provided binding | Typical use |
|---|---|---|
| Rust | Yes (the engine's own language) | Native applications and services |
| Go | Yes | Backend services, CLIs |
| Java | Yes | Android and JVM services |
| C++ | Yes | Desktop applications, embedded |
| Python | Yes | Pipelines, tooling |
| Other popular languages | Via the native library | — |
What if your language is not listed?
- Load the dynamic library through your language's native interop mechanism (for example, a foreign function interface).
- Or use process invocation instead, which works from any language that can start a process.
Do bindings change the results?
No. Bindings are thin layers over one Rust core. Conversion and preview behave the same regardless of which language calls them: the same 42 conversion pairs, the same 32 preview extensions, on all 6 operating systems.
Bindings versus process invocation
| Bindings (dynamic library) | Process invocation | |
|---|---|---|
| Languages | Rust, Go, Java, C++, Python, and more | Any |
| Call overhead | In-process | Process boundary |
| Isolation | Shared process | Separate process |
Frequently asked questions
Do I need all five bindings?
No. Use only the binding for the language your application is written in.
Are the bindings available on mobile?
The dynamic library runs on Android, iOS, and HarmonyOS as well as the desktop and server platforms; use the binding that matches your app's language.
Does using a binding require a network connection?
No. OfficeAPI is fully offline regardless of the calling language.