2009-01-07 21 views
20

¿Hay alguna forma de ejecutar el código c simple sobre la JVM?
No se conecta a través de JNI, ejecutándose, como se puede ejecutar el código de ruby ​​a través de JRuby o javascript a través de Rhino.Corriendo/Interpretando C en la parte superior de la JVM?

Si no hay una solución actual, ¿qué recomendaría que haga?
Obviamente, quiero utilizar tantas soluciones de parciales como pueda para hacerlo realidad.

antlr parece ser un buen lugar para empezar, tener una aplicación plena "ANSI C" gramática ...
debo construir un "juguete" VM sobre la JVM utilizando antlr código generado?

+0

Esto es interesante ... tratando de hacer un código * portable * c? –

+2

Intentando interactuar diferentes códigos (de diferentes idiomas) en un terreno común (la JVM) – amitkaz

+0

Ha pasado mucho tiempo desde que miré las especificaciones de JVM, pero IIRC intentó evitar perder demasiado rápido con las conversiones de tipos de datos. Si este sigue siendo el caso, habrá programas C que simplemente no puede ejecutar en la JVM. –

Respuesta

13

Actualizado 2012-01-26: De acuerdo con this page on the company's site el producto ha sido comprado y ya no está disponible.

Sí.

Aquí está a commercial C compiler that produces JVM bytecode.

+0

El enlace está roto en el momento de la comprobación. – h22

+2

Sí; de acuerdo con la página en http://axiomsol.com/ampc-acquired-by-private-company/ el producto ha sido comprado por una empresa privada y ya no está en el mercado. –

8

Tal vez no es exactamente lo que necesita, pero una opción comercial es http://www.axiomsol.com/

+1

El enlace está roto en el momento de la comprobación. – h22

+0

Ver la respuesta anterior. Esta solución ya no existe. – michaelt

11

Hay otras dos posibilidades, tanto de código abierto:

JPC emula un PC completo x86 dentro de la JVM, y es capaz de ejecutar DOS y Linux.

NestedVM proporciona la traducción binaria para Java Bytecode. Esto se hace haciendo que GCC compile a un binario MIPS que luego se traduce a un archivo de clase Java. Por lo tanto, cualquier aplicación escrita en C, C++, Fortran o cualquier otro lenguaje admitido por GCC puede ejecutarse en Java 100% puro sin cambios de fuente.

+1

A partir del 4/2013, JPC y NestedVM son almacenes válidos a costa de la velocidad (ya que están emulados dentro de JavaVM). La solución comercial axiomsol.com ha sido vendida sin más información disponible en su sitio web. – michaelt

+0

sobre JPC, está ordenado, pero ¿cómo podría interactuar con el código x86? – KIC

3

Parece que LLJVM también puede cumplir con su requisito.

LLJVM: El código fuente se compila primero en representación intermedia LLVM (IR) mediante una interfaz como llvm-gcc o clang. LLVM IR luego se traduce al código ensamblador Jasmin, se vincula con otras clases Java y luego se ensambla en bytecode JVM.

2

A partir de 2016 hay una opción joven pero promisoria llamada gcc-bridge. Su intención es aprovechar la implementación de JVM R para hacer uso de R-libaries escritas en C o Fortran. Pero gcc-bridge también se puede usar de forma independiente como un plugin maven.

Cuestiones relacionadas