¿Hay alguna forma de compilar desde Java a un código de máquina independiente (o biblioteca) sin requerir una JVM?¿Puedo compilar Java con código nativo?
Respuesta
Solía haber una herramienta llamada GCJ que formaba parte de GCC, pero es been removed. Ahora, todos los enlaces en el sitio de GCC se redireccionan a sus equivalentes que no pertenecen a GCJ.
NB: todos los comentarios se refieren a mi respuesta original, diciendo que se puede compilar Java con código nativo con GCJ.
+1, genial, ¡no sabía de eso! – FrustratedWithFormsDesigner
Sí, gcj es el más conocido. @ isola009: tenga en cuenta que al compilar con código nativo, probablemente trabaje con un subconjunto (posiblemente un subconjunto dramáticamente pequeño) de las * libraries * que Java normalmente tiene de forma predeterminada. Gnu's es bastante bueno, según todos los informes, pero muy por detrás del JDK actual. –
Está muy por detrás de * todos * JDKS comenzando con 1.2. He encontrado muchos problemas de soporte con personas que ejecutan accidentalmente GNU classpath en lugar de Java, y todos fueron curados sin excepción desinstalando y usando Sun JDK. – EJP
Sí, el JIT en la JVM hace exactamente eso para usted.
De hecho, puede producir código más rápido que compilar el código de antemano, ya que puede generar código optimizado para la plataforma específica en función de cómo se usa el código en tiempo de ejecución.
La JVM siempre está involucrada, incluso si se compila un porcentaje muy alto con el código nativo, ya que se puede cargar y ejecutar el código de bytes de forma dinámica.
Sí, tiene razón en que el JIT lo hace y lo hace muy bien. No es un ejecutable autónomo, pero entonces el OP no preguntaba sobre eso ... –
Pareces sugerir que solo los JIT pueden hacer una optimización específica de la plataforma. Creo que es posible cuando envías bytecode. El ART compila bytecode a código nativo en la instalación, y no es un JIT. Peter, ¿tienes algún comentario sobre esto? –
@JanusTroelsen ¿Tiene un enlace a este compilador? ¿Es ampliamente utilizado? ¿Fue agregado en los últimos 5 años? Sin el JIT, no puede hacer una compilación dinámica que probablemente sea más importante. –
Excelsior JET es un compilador de código nativo de Java a Java.
Por si acaso, hay licencias libres para proyectos no comerciales. –
¿cómo se compara con RoboVM? –
- 1. Cómo compilar ocaml al código nativo
- 2. Código fuente del método nativo de Java
- 3. Llamar código Java no nativo de Python
- 4. Android: MediaRecorder @ Código nativo
- 5. Usando Notepad ++ para compilar el código Java
- 6. Teóricamente hablando, ¿puedo obtener OpenJDK JIT y compilar mi código java a native?
- 7. ver código nativo de Eclipse
- 8. ¿Podría extender Corona con código nativo?
- 9. Integrar c/C++ con código nativo de Java como biblioteca compartida (compilada por gcj)
- 10. inspeccionar el código nativo
- 11. acceda al método sincronizado de java desde el código nativo
- 12. Cómo traducir código Byte a código nativo de la máquina
- 13. Operador Java Lanzador nativo
- 14. Ejecutando código nativo en Azure
- 15. Three.js portado al código nativo?
- 16. ¿Se puede compilar una aplicación .NET en nativo?
- 17. Restringir la funcionalidad de código nativo de Java
- 18. No puedo acceder a AAssetManager en el código nativo pasado desde Java en WallpaperService
- 19. ¿Por qué estoy obteniendo este UnsatisfiedLinkError con código nativo?
- 20. Cargando FMOD puramente de código nativo
- 21. Cómo generar archivos de código fuente y compilar con Gradle
- 22. ¿Qué es el código nativo?
- 23. ¿Cómo puedo compilar y vincular código C++ con código C compilado?
- 24. Generar, compilar y usar código Java en tiempo de ejecución?
- 25. Usando código C++ nativo en C# - problema con std :: vector
- 26. ¿Puedo compilar un proyecto de Scala con código mixto de Java y scala con dependencias en ambos sentidos en Maven?
- 27. Quiero compilar un binario nativo de Android Puedo ejecutarlo en la terminal en el teléfono
- 28. ¿Puedo escribir código Java en XCode 3.2.1?
- 29. ¿Puedo compilar el código universal usando el GCC de Macports?
- 30. Compilar con bytecode de java (sin usar Java)
"compilar" es la palabra que está buscando (en lugar de "compilar"). –
Si su interés es la velocidad, no se moleste a menos que esté buscando una plataforma que HotSpot (JVM de Sun) no admita. HotSpot compila bytecode a código nativo sobre la marcha donde aparece un "punto de acceso" de la ruta de ejecución (algo que se ejecuta mucho), y es muy bueno en eso. Pero si está tratando de evitar la necesidad de una JVM, sí, mire la contraseña que James le indicó. –
Otra razón más es la protección contra los decompiladores de Java. En cuanto a HotSpot vs compilador nativo (vs JRockit vs IBM vs GCC vs Visual C++ vs mano-escritura-CPU-instrucciones-en-hex), depende de la aplicación, por lo que YMMV. –