tipo será sera programacion para pago licencia lenguajes gratis desarrollar costo comercial java gcj

será - licencia de java costo



¿GCJ(Compilador de GNU para Java) es una herramienta viable para publicar una aplicación web? (8)

¿Es realmente viable usar GCJ para publicar aplicaciones del lado del servidor? Webapps?

Mi jefe está convencido de que compilar nuestra ( mi ) aplicación web en un ejecutable binario es una idea brillante. (Por otra parte, a él le gustan las cosas sencillas, pequeñas y sencillas con luces parpadeantes que puede entender). Instintivamente no ve problemas en esto, mientras que yo solo veo una serie interminable de problemas y degradaciones. Una vez que empiezo a hablar con él sobre la complejidad de nuestra plataforma, y ​​más en detalle sobre el código de bytes, las JVM, las bibliotecas, las diferencias entre los sistemas operativos, las arquitecturas de los procesadores, etc. ... bueno ... sus ojos se nublan, sonríe y él ha dejado en claro que cree que estoy siendo infantilmente resistivo.

¿Por qué quiere un solo ejecutable mágico? Él ve un par de "beneficios":

  • Si se trata de un ejecutable binario, entonces es difícil realizar una ingeniería inversa y eludir cualquier licencia. La administración vive con el temor constante de que esto esté sucediendo, a pesar de que vendemos a corporaciones más grandes que generalmente no hacen trampa con el software del servidor.
  • Existe la visión de descargar este ejecutable mágico, ejecutarlo, y todo funciona. (No más enviarme a hacer instalaciones de clientes, que no es tan frecuente).

Por lo tanto, he hecho mis 20 minutos obligatorios de googlear, y ahora estoy aquí.

Un poco de historia en mi aplicación:

De qué está hecho:

  • Java 6 (JVM de Sun)
  • AspectJ 1.6
  • Tomcat 6
  • Hibernate 3
  • Primavera 2
  • otras dos docenas de archivos jar de soporte

Que hace

  • Un medio de transmisión CMS
  • Sensible al rendimiento
  • Implementado en Linux, Solaris, Windows (y desarrollado en una Mac)

Como probablemente puedas reunir, soy muy escéptico con respecto a esta cosa de "compilar Java con el código nativo" . Suena como donde Mono (VB en Linux) estaba de vuelta en 2000. ¿Pero estoy siendo demasiado pesimista? ¿Es viable? ¿Debo pasar el tiempo (días si no semanas) para probar esto?

Hay otro hilo similar ( Java Compiler Options para producir archivos .exe ) pero es un poco demasiado simple, los enlaces son anticuados, y no están realmente orientados hacia una pregunta del lado del servidor.

Sus opiniones informadas serán altamente apreciadas, mis queridos Sopedians! TIA!


No creo que una aplicación grande como la suya se compile con el código de máquina. Recuerde que java no es solo la sintaxis de java (puede compilarse en código de máquina) sino también una máquina virtual que se parece más a un entorno de aplicación / proceso. Sugeriría hacer un uberjar o algo así en su lugar.


No sé sobre GCJ, pero mi compañía usa Excelsior JET con éxito. No lo hemos hecho con una aplicación web (todavía), pero debería ser capaz de manejar cualquier cosa que pueda hacer Sun JRE. De hecho, JET es una implementación Java certificada por Sun.


Tener un ejecutable tiene algunas desventajas:

  • No se puede parchar tan fácil (es decir, reemplazar un archivo de clase)
  • No creo que pueda llamarse una aplicación web, supongo que no se ejecutará en Tomcat.
  • No es estándar, por lo que aumenta los costos de mantenimiento.
  • No es estándar, por lo que se reduce el soporte de la herramienta.

Si quiere algo simple, tal vez una guerra o un oído sería mejor. No veo ningún beneficio al hacer esto. Creo que esto podría ser beneficioso, ya que se distribuyó una aplicación independiente para que las personas pudieran hacer doble clic en ella.


Tal vez su jefe solo necesita una demostración de lo fácil que es distribuir y desplegar un archivo war para sus clientes en sus propios servidores de aplicaciones. Cada archivo es "binario", por lo que puede ser demasiado literal al pensar que se refiere a un ejecutable en la línea de comandos.


FWIW: Nunca he tenido buena suerte con GCJ, he tenido muchos problemas al usarlo y he tenido algunos problemas oscuros que tardaron una eternidad en diagnosticar a GCJ en vez de a mí (siempre soy muy reacio a culpar a los demás por los errores externos). bibliotecas). Admitiré abiertamente que esto sucedió hace varios años y nunca más he querido volver a acercarme a GCJ. Para dar más sustancia esto fue cuando estaba en la escuela y estaba trabajando en un programa en su mayoría trivial, así que en un "nivel empresarial" he tenido un temor saludable de GCJ.


Jugaré a los demonios abogar un poco, aunque sé muy poco sobre GCJ.

Compilar con código nativo puede darle a su aplicación un aumento de rendimiento y usar menos memoria, por lo que si se puede hacer que funcione, existen ventajas para el negocio en términos de competencia.

Ser capaz de soportar mejor una aplicación también es bueno para los negocios.

Entonces, quizás valga la pena investigar, teniendo en cuenta que nada puede perder a un cliente más rápido que una aplicación que no funciona.

Necesita un tiempo de proyecto adecuado para probar esto y un cliente, que sabe en lo que se está metiendo, que está dispuesto a darle vueltas (más difícil de encontrar).


Solo he usado GCJ muy brevemente y rápidamente me mudé al JDK de Sun. Los principales problemas que vi fue que GCJ parece estar un poco retrasado con respecto a la versión más reciente de JDK de Sun y que había misteriosos errores misteriosos causados ​​por sutiles diferencias con el JDK de Sun. En la versión 1.5 (que se supone que es compatible con Sun''s v1.5), tuve problemas para compilar utilizando genéricos, y finalmente me rendí y me mudé a Sun''s JDK.

Debo decir que cualquier diferencia en el rendimiento fue insignificante (para mis propósitos, YMMV) y realmente la solución para los problemas de instalación es crear un instalador para su aplicación. La ingeniería inversa de un binario no es realmente tan difícil como el bytecode de ingeniería inversa. Usa un ofuscador si es tan importante.

En general, creo que los problemas de compatibilidad implicados en el uso de GCJ superan con creces cualquier ganancia (que creo que es cuestionable en el mejor de los casos) que posiblemente pueda derivar de ella. Intenta compilar partes de tu aplicación en gcj y ve cómo funciona. Si funciona bien, de lo contrario obtendrás algo sólido para lanzar a tu jefe.


Excelsior JET es la respuesta definitiva