Trente ans de bibliothèques matures, natives à le app
IA, search, data, documents, imaging, réseau — un demi-million de bibliothèques JVM, toutes à un `implementation`.
Le code Kotlin tient sur la JVM — le runtime le plus professionnellement ingénieré jamais construit. IA, recherche, parsing de documents, calcul scientifique, RPC à grande échelle : chaque problème a déjà une bibliothèque endurcie sur Maven Central. Pas de FFI, pas de pont, pas de shim JS. Même process. Même mémoire. Déjà là.
TL;DR
- L'écosystème de bibliothèques JVM est livré dans le binaire — pas d'IPC, pas de daemon hors process.
- Les six piliers (IA/ML, search, data, documents, imaging, réseau) ont des options matures.
- ~500 000 artefacts sur Maven Central — tout ce qu'on veut est à un
implementation. - Deux modules Nucleus comblent des manques UX desktop courants (file dialog, spell check) en pointant sur les meilleures bibliothèques existantes.
IA & ML
Inférence locale, appels à des modèles distants, embarquer un LLM — la JVM a des bindings pour chaque framework qui compte.
- DJL — Deep Java Library, serving multi-engine.
- ONNX Runtime Java — inférence ONNX en prod.
- LangChain4j — scaffolding agents/RAG/tool-use.
- llama.cpp via bindings FFM — inférence LLM locale.
- TensorFlow Java — le framework de Google, port JVM.
Search & indexation
Le stack de recherche le plus déployé au monde tourne sur la JVM. Lucene est le moteur derrière Elasticsearch, Solr, OpenSearch — embarque-le directement.
- Apache Lucene — full-text embarqué.
- OpenSearch client, Elasticsearch client — parle aux clusters.
- Tantivy via JNI — moteur full-text Rust.
- Quickwit — search cloud-native.
Data & analytique
Colonnaire, in-process, distribué — choisis le moteur. La JVM est là où le travail data sérieux se fait, et maintenant ça vit dans le binaire desktop.
- Apache Arrow — format colonnaire in-memory.
- DuckDB JDBC — OLAP embarqué.
- Apache Parquet — format sur disque.
- jOOQ — builder SQL type-safe.
- Apache Spark — in-process pour data moyenne.
Documents & parsing
Parse tout ce que les utilisateurs glissent dans le app. PDF, Word, Excel, HTML brut, 1000+ formats — sans appeler de binaires natifs.
- Apache Tika — 1000+ formats.
- Apache PDFBox — lecture/écriture PDF.
- Apache POI — documents Office.
- Jsoup — parsing HTML.
- commonmark-java — Markdown.
Imaging & vision
Traitement d'image et vision par ordinateur grade prod — utilisés par la NASA, la BioMed, la défense. Maintenant c'est une dép Gradle de le UI.
- BoofCV — vision en Java.
- JavaCV — bindings OpenCV.
- TwelveMonkeys — 40+ formats d'image.
- Skia — 2D GPU (déjà dans le process Compose).
- FFmpeg via JavaCV — vidéo.
Réseau & RPC
Éprouvé à l'échelle de Twitter, Apple, LinkedIn. Netty gère des milliards de connexions quotidiennes — tourne aussi dans le app desktop.
- Netty — I/O async à grande échelle.
- Ktor — client/serveur HTTP Kotlin-natif.
- gRPC Java — framework RPC.
- OkHttp — client HTTP.
- WebRTC Java — media temps réel.
Pour HTTP en particulier, Nucleus livre les variantes native-ssl et native-http qui branchent le trust store géré par l'OS dans n'importe quel client (java.net.http, OkHttp, Ktor). Proxies corporate et CA installées par l'utilisateur fonctionnent direct.
Le demi-million
Chaque autre artefact sur Maven Central — environ 500 000 bibliothèques éprouvées, toutes à un implementation. Pas de pont FFI, pas de compilation native, pas de mainteneurs par OS. Même ligne de dépendance Gradle que le framework de test.
Où Nucleus s'arrête
Deux besoins UX desktop courants n'ont pas de module Nucleus parce que l'écosystème couvre déjà :
- Dialogues de fichier — utilise FileKit.
- Correction orthographique — utilise PlatformSpellCheckerKt.
Le plugin Gradle Nucleus livre des métadonnées de reachability GraalVM préchargées pour FileKit, donc ça marche sous Native Image sans config manuelle.