Sobre el proyecto
JavaForce (JF) es una biblioteca y SDK de Java, versión 118.1, con licencia LGPL, orientado a la creación de aplicaciones de escritorio, aplicaciones de consola y servicios del sistema. Se compila con Apache Ant y requiere JDK 25+.
Capacidades principales descritas en el README:
- Pila SIP/VoIP/RTSP
- Enlaces nativos para FFmpeg, OpenGL, Vulkan, OpenCL y Camera
- E/S de PLC
- Cargadores nativos personalizados para aplicaciones de consola, aplicaciones de escritorio y servicios del sistema
- Tareas Ant para empaquetar aplicaciones como msi, deb, rpm, pac y dmg
En lugar de java.exe, JavaForce compila un cargador nativo personalizado que incorpora la JVM, establece el classpath, registra métodos nativos e inicia el método main del programa. También se proporcionan métodos nativos en una biblioteca compartida para quienes prefieren no usar los cargadores personalizados. El proyecto ha pasado de JNI a la API FFM (Foreign Function & Memory) para el acceso nativo, conservando algo de JNI para fijar arrays por rendimiento.
Aplicaciones incluidas: el README menciona jfPhone, jfVideo Creator, jfAudio, jfMusic y otras, con una lista completa en projects/readme.txt. JavaForce también es la biblioteca central de jfLinux, una distribución de Linux con Java integrado, y se usa para compilar jfCraft, un clon de Minecraft.
Estructura del repositorio: /src para fuentes Java, /lib para jars generados y dependencias, /native para cargadores nativos, /projects para fuentes de subproyectos, /iso y /linux y /windows para scripts de compilación/instalación, y /utils para aplicaciones de utilidad.
Flujo de compilación: instalar git y Ant, configurar los finales de línea, clonar el repositorio, hacer checkout de una etiqueta de versión, ejecutar ant y luego compilar los cargadores nativos. Las tareas de empaquetado incluyen deb, rpm, pac, msi (con JRE incluido, usando WiX Toolset v4+) y dmg (usando hdiutil en macOS). Las tareas de preenlazado del JRE (jre-all, jre-base, jre-base-desktop, jre-base-javac) admiten el empaquetado nativo. JavaForce se publica en Maven Central; las tareas Ant gestionan la descarga y subida de dependencias, y se necesita un pom.xml mínimo para publicar en Sonatype.
Otras características: soporte AOT de GraalVM mediante graalagent y tareas Ant graal (el soporte de GraalVM AWT sigue en desarrollo), depuración JMX a través de las variables de entorno JF_DEBUG y JF_DEBUG_PORT o ajustes en .cfg, y un formato de archivo .cfg que controla CLASSPATH, MAINCLASS, DEBUG, DEBUG_PORT, OPTIONS, JAVA_HOME y METHOD.
Requisitos: JDK 25+, Apache Ant 1.10+, gcc en Linux, VC++ y WiX Toolset 4+ en Windows, Xcode gcc en macOS, FFmpeg 7.1+ y glfw 3.5.1 para OpenGL/Vulkan. Los componentes Wayland, Bluetooth y RDP figuran como trabajo en curso.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.