javascript - versión - syntaxhighlighter




Cómo hacer una compilación cruzada del código fuente de Java a JavaScript? (4)

Si bien la pregunta es acerca de cómo compilar las fuentes Java en JavaScript, creo que vale la pena mencionar que TeaVM compila el bytecode de Java a JavaScript. Nunca lo he intentado, pero parece muy prometedor.

Dado un conjunto de archivos de código fuente de Java, ¿cómo puedo compilarlos en uno o más archivos de JavaScript que se pueden usar con JavaScript hecho a mano?

GWT es una opción, pero cada ejemplo que he visto hasta ahora está dirigido a la construcción de sitios web sofisticados. El caso de uso simple de convertir Java source a Javascript que se puede usar junto con JavaScript artesanal no ha sido bien documentado .

Comencé un hilo en la lista de correo de GWT sobre este tema, pero las opiniones parecen estar mezcladas sobre si esto es incluso factible.

Una persona dio un consejo muy útil, que era verificar GWT-Exporter . El problema es que ni el código fuente ni la documentación están disponibles, aunque hay esto y esto .

editar: el código fuente de GWT-Exporter está aquí

También he visto Java2Script . Pero nuevamente, no pude encontrar ejemplos de cómo resolver mi caso de uso simple.

¿Cuál es el mejor enfoque para este problema? ¿Hay algo mejor que me estoy perdiendo?


Dado un conjunto de archivos de código fuente de Java, ¿cómo puedo compilarlos en uno o más archivos de JavaScript que se pueden usar con JavaScript hecho a mano?

No existe una correlación directa entre la API Java incorporada y las características del lenguaje Java, y las de JavaScript. Entonces cualquier intento de crear un "convertidor" va a estar incompleto. Como ejemplo fundamental, las clases de Java no tienen una expresión idiomática de JavaScript directa.

No se puede saber si una herramienta de conversión incompleta funcionará para su caso de uso sin el código fuente.

Dicho esto, mi sugerencia para resolver su problema sería intentar usar GWT por primera vez : configurar un proyecto de demostración, colocar en el origen de su biblioteca y llamarlo desde el lado de JavaScript y ver qué resultados de GWT en su archivo .js. También vale la pena echarle un vistazo a algunas de las otras herramientas sugeridas por otros carteles aquí.

Si eso es fructífero y te lleva a una parte del camino, genial.

A partir de ahí, necesitará / querrá hacer el resto de la conversión a mano. Después de todo, suponiendo que desea que el código funcione realmente correctamente, una revisión manual definitivamente estaría en orden. Algunas pruebas unitarias que se conviertan junto con él serían ideales también.

Usted no indica qué tan grande es la fuente de su proyecto, pero si es pequeño (digamos que menos de mil líneas de código), incluso una conversión completa a mano no debería ser extremadamente difícil. Si es mucho más grande que eso, le sugiero que revise si realmente lo quiere como código JavaScript de todos modos.


Aquí hay otras dos opciones, cosas para investigar y una tercera opción que no se convierte, simplemente vivir juntos.

  1. Java2Javascript

He querido probar esto. Se parece más a lo que se ha pedido. Citando la página web:

un plugin de compilador de Eclipse Java a JavaScript y una implementación de la versión de JavaScript de Eclipse Standard Widget Toolkit (SWT) con otras utilidades comunes, como java.lang. * y java.util. *. Puede convertir su Rich Client Platform (RCP) SWT-based en Rich Internet Application (RIA) mediante Java2Script Pacemaker.

Una experiencia limitada de Java en JavaScript: necesitaría exportar sus dependencias necesarias o buscar alternativas a través de herramientas como jQuery, etc.

  1. DukeScript

Cuando veo DukeScript, compila JavaScript y llama Java desde el Javascript del navegador. Parece más o menos un enfoque híbrido, por lo que puede utilizar la riqueza de Java de las bibliotecas de Javascript. Voy a caer en una política de seguridad del navegador para Java.

Una experiencia de Javascript más completa en Java aprovechando el tiempo de ejecución de Java. Si quisiera eso fuera del entorno del navegador, usaría Javascript en Java.

  1. Nashhorn

Considere esto como un ejemplo del uso de los recursos de Java como base para Javascript: Nashorn y JavaFX , como un ejemplo para un cliente rico operado por Javascript. De todos modos, con un motor de Javascript dentro de Java no es necesario traducir tanto entre una VM de JavaScript a código de objeto a una Java-VM.


No estoy seguro de si se ajusta a su caso de uso, pero si acepta eliminar las API de Java y usar las API de JavaScript de Java, puede usar JSweet , un transpiler de Java a JavaScript construido sobre la parte superior de TypeScript. Le da acceso a cientos de API de JavaScript bien tipadas (DOM, jQuery, guión bajo, angularjs, etc.). Genera código JavaScript y puede mezclarlo con JavaScript heredado y código TypeScript.

Nota: JSweet no funcionará para el código heredado de Java y las API heredadas de Java, pero su caso de uso no mencionó la reutilización del código heredado.

[ACTUALIZACIÓN] Desde la versión 1.1, JSweet ahora también es compatible con algunas API de Java, como Colecciones (java.util). Por lo tanto, es posible reutilizar el código heredado de Java hasta cierto punto. También es bastante sencillo agregar su propio soporte para API de Java.







code-translation