À propos du projet

JavaForce (JF) est une bibliothèque et un SDK Java, version 118.1, sous licence LGPL, destiné à la création d'applications de bureau, d'applications console et de services système. Il est construit avec Apache Ant et nécessite JDK 25+. Capacités principales décrites dans le README : - Pile SIP/VoIP/RTSP - Liaisons natives pour FFmpeg, OpenGL, Vulkan, OpenCL et Camera - E/S PLC - Chargeurs natifs personnalisés pour les applications console, les applications de bureau et les services système - Tâches Ant pour empaqueter les applications en msi, deb, rpm, pac et dmg Au lieu de java.exe, JavaForce construit un chargeur natif personnalisé qui intègre la JVM, définit le classpath, enregistre les méthodes natives et démarre la méthode main du programme. Des méthodes natives sont également fournies dans une bibliothèque partagée pour ceux qui préfèrent ne pas utiliser les chargeurs personnalisés. Le projet est passé de JNI à l'API FFM (Foreign Function & Memory) pour l'accès natif, avec une partie de JNI conservée pour épingler les tableaux afin d'améliorer les performances. Applications incluses : le README mentionne jfPhone, jfVideo Creator, jfAudio, jfMusic et d'autres, avec une liste complète dans projects/readme.txt. JavaForce est également la bibliothèque centrale de jfLinux, une distribution Linux imprégnée de Java, et est utilisée pour construire jfCraft, un clone de Minecraft. Organisation du dépôt : /src pour les sources Java, /lib pour les jars générés et les dépendances, /native pour les chargeurs natifs, /projects pour les sources des sous-projets, /iso et /linux et /windows pour les scripts de build/installation, et /utils pour les applications utilitaires. Flux de build : installer git et Ant, configurer les fins de ligne, cloner le dépôt, extraire un tag de version, exécuter ant, puis construire les chargeurs natifs. Les tâches d'empaquetage incluent deb, rpm, pac, msi (avec JRE intégré, via WiX Toolset v4+) et dmg (via hdiutil sur macOS). Les tâches de pré-liaison du JRE (jre-all, jre-base, jre-base-desktop, jre-base-javac) prennent en charge l'empaquetage natif. JavaForce est publié sur Maven Central ; les tâches Ant gèrent le téléchargement et l'envoi des dépendances, et un pom.xml minimal est nécessaire pour la publication sur Sonatype. Autres fonctionnalités : prise en charge de GraalVM AOT via les tâches Ant graalagent et graal (la prise en charge d'AWT par GraalVM est encore en cours de développement), débogage JMX via les variables d'environnement JF_DEBUG et JF_DEBUG_PORT ou les paramètres .cfg, et un format de fichier .cfg contrôlant CLASSPATH, MAINCLASS, DEBUG, DEBUG_PORT, OPTIONS, JAVA_HOME et METHOD. Prérequis : JDK 25+, Apache Ant 1.10+, gcc sous Linux, VC++ et WiX Toolset 4+ sous Windows, Xcode gcc sous macOS, FFmpeg 7.1+ et glfw 3.5.1 pour OpenGL/Vulkan. Les composants Wayland, Bluetooth et RDP sont indiqués comme en cours de développement.