Thirty years of mature libraries, native to your app
AI, search, data, documents, imaging, networking — half a million JVM libraries, all an `implementation` away.
Your Kotlin code sits on top of the JVM — the most professionally engineered runtime ever built. AI, search, document parsing, scientific computing, RPC at scale: every problem already has a hardened library on Maven Central. No FFI, no bridges, no JS shim. Same process. Same memory. Already there.
TL;DR
- The JVM library ecosystem ships in your binary — no IPC, no out-of-process daemon.
- All six pillars (AI/ML, search, data, documents, imaging, networking) have mature options.
- ~500,000 artifacts on Maven Central — anything you'd reach for is one
implementationaway. - Two Nucleus modules wrap common desktop UX gaps (file dialog, spell check) by pointing at the best existing libraries.
AI & ML
Run inference locally, call remote models, embed an LLM in your app — the JVM has bindings for every framework that matters.
- DJL — Deep Java Library, multi-engine model serving.
- ONNX Runtime Java — production ONNX inference.
- LangChain4j — agent/RAG/tool-use scaffolding.
- llama.cpp via FFM bindings — local LLM inference.
- TensorFlow Java — Google's framework, JVM port.
Search & indexing
The world's most deployed search stack runs on the JVM. Lucene is the engine behind Elasticsearch, Solr, OpenSearch — embed it directly.
- Apache Lucene — embedded full-text search.
- OpenSearch client, Elasticsearch client — talk to clusters.
- Tantivy via JNI — Rust full-text engine.
- Quickwit — cloud-native search.
Data & analytics
Columnar, in-process, distributed — pick your engine. The JVM is where serious data work happens, and now it ships in your desktop binary.
- Apache Arrow — columnar in-memory format.
- DuckDB JDBC — embedded OLAP.
- Apache Parquet — file format on disk.
- jOOQ — type-safe SQL builder.
- Apache Spark — in-process for medium data.
Documents & parsing
Parse anything users drag into your app. PDFs, Word, Excel, raw HTML, 1000+ formats — without shelling out to native binaries.
- Apache Tika — 1000+ formats.
- Apache PDFBox — PDF read/write.
- Apache POI — Office documents.
- Jsoup — HTML parsing.
- commonmark-java — Markdown.
Imaging & vision
Production-grade image processing and computer vision — used by NASA, BioMed, defense. Now it's a Gradle dep away from your UI.
- BoofCV — computer vision in Java.
- JavaCV — OpenCV bindings.
- TwelveMonkeys — 40+ image formats.
- Skia — GPU 2D (already in your Compose process).
- FFmpeg via JavaCV — video.
Networking & RPC
Battle-tested at the scale of Twitter, Apple, LinkedIn. Netty handles billions of connections daily — runs in your desktop app too.
- Netty — async I/O at scale.
- Ktor — Kotlin-native HTTP client/server.
- gRPC Java — RPC framework.
- OkHttp — HTTP client.
- WebRTC Java — real-time media.
For HTTP in particular, Nucleus ships native-ssl and native-http variants that wire the OS-managed trust store into any client (java.net.http, OkHttp, Ktor). Corporate proxies and user-installed CAs just work.
The half-million
Every other artifact on Maven Central — roughly 500,000 battle-tested libraries, all implementation away. No FFI bridges, no native compilation, no per-OS maintainers. Same Gradle dependency line as your test framework.
Where Nucleus draws the line
Two common desktop UX needs don't have a Nucleus module because the ecosystem already covers them:
- File dialogs — use FileKit.
- Spell check — use PlatformSpellCheckerKt.
The Nucleus Gradle plugin ships preloaded GraalVM reachability metadata for FileKit, so it works under Native Image with zero manual config.