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.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.