About this project

JavaForce (JF) is a Java library and SDK, version 118.1, licensed under LGPL, aimed at building desktop apps, console apps and system services. It is built with Apache Ant and requires JDK 25+. Core capabilities described in the README: - SIP/VoIP/RTSP stack - Native bindings for FFmpeg, OpenGL, Vulkan, OpenCL and Camera - PLC I/O - Custom native loaders for console apps, desktop apps and system services - Ant tasks to package apps as msi, deb, rpm, pac and dmg Instead of java.exe, JavaForce builds a custom native loader that embeds the JVM, sets the classpath, registers native methods and starts the program's main method. Native methods are also provided in a shared library for those who prefer not to use the custom loaders. The project has moved from JNI to the FFM (Foreign Function & Memory) API for native access, with some JNI retained to pin arrays for performance. Included applications: the README mentions jfPhone, jfVideo Creator, jfAudio, jfMusic and others, with a complete list in projects/readme.txt. JavaForce is also the core library of jfLinux, a Java-infused Linux distribution, and is used to build jfCraft, a Minecraft clone. Repository layout: /src for Java sources, /lib for generated and dependency jars, /native for native loaders, /projects for sub-project sources, /iso and /linux and /windows for build/install scripts, and /utils for utility apps. Build workflow: install git and Ant, configure line endings, clone the repository, check out a version tag, run ant, then build the native loaders. Packaging tasks include deb, rpm, pac, msi (with bundled JRE, using WiX Toolset v4+), and dmg (using hdiutil on macOS). JRE pre-linking tasks (jre-all, jre-base, jre-base-desktop, jre-base-javac) support native packaging. JavaForce is published to Maven Central; Ant tasks handle dependency download and upload, and a minimal pom.xml is needed for Sonatype publishing. Other features: GraalVM AOT support via graalagent and graal Ant tasks (GraalVM AWT support is still a work in progress), JMX debugging through JF_DEBUG and JF_DEBUG_PORT environment variables or .cfg settings, and a .cfg file format controlling CLASSPATH, MAINCLASS, DEBUG, DEBUG_PORT, OPTIONS, JAVA_HOME and METHOD. Requirements: JDK 25+, Apache Ant 1.10+, gcc on Linux, VC++ and WiX Toolset 4+ on Windows, Xcode gcc on macOS, FFmpeg 7.1+ and glfw 3.5.1 for OpenGL/Vulkan. Wayland, Bluetooth and RDP components are listed as work in progress.