Pregunta

Java es uno de mis lenguajes de programación preferidos.Sin embargo, siempre me encuentro con el problema de distribuir mi aplicación a los usuarios finales.

Darle a un usuario un JAR no siempre es tan fácil de usar como me gustaría y usar Java WebStart requiere que mantenga un servidor web.

¿Cuál es la mejor manera de distribuir una aplicación Java?¿Qué pasa si la aplicación Java necesita instalar artefactos en la computadora del usuario?¿Existe algún buen sistema de instalación/empaquetado de Java?

¿Fue útil?

Solución

Existe una variedad de soluciones, dependiendo de sus requisitos de distribución.

  1. Solo usa un frasco.Esto supone que el usuario tiene instalada la versión correcta de Java; de lo contrario, el usuario obtendrá excepciones de "versión de formato de archivo de clase".Esto está bien para la distribución interna dentro de una empresa.

  2. Utilice launch4j y un instalador como NSIS.Esto le brinda mucho más control, aunque el usuario aún puede hacer cosas estúpidas como desinstalar el tiempo de ejecución de Java.Este es probablemente el enfoque más popular y el que uso actualmente.

  3. Utilice Inicio web.Esto también supone que el usuario tiene instalada la versión correcta de Java, pero es mucho más fácil comenzar.Mi experiencia es que esto está bien para entornos de intranet estrictamente controlados, pero se convierte en una molestia con implementaciones más grandes porque tiene muchas fallas extrañas.Puede mejorar con la nueva tecnología de complementos en Java 1.7.

  4. Utilice un compilador de código nativo como Excelsior JET y distribúyalo como ejecutable, o envuélvalo en un instalador.Es caro y generalmente lo vincula a una versión un poco anterior de Java, y hay algunos problemas con la carga dinámica de clases, pero es muy efectivo para implementaciones a gran escala donde necesita minimizar los problemas de soporte.

Otros consejos

instalador avanzado facilita el empaquetado de aplicaciones java como ejecutables de Windows y es bastante flexible en la forma en que puede configurarlo.Descubrí que para distribuir aplicaciones Java a clientes Windows, esta es la forma más fácil de hacerlo.

JSuave es un programa simple que toma su jar y lo envuelve en un archivo ejecutable estándar de Windows.Viene con una GUI simple que le permite configurar la JVM requerida, empaquetarla con la aplicación o brindar una opción para descargarla si aún no está instalada.Puede enviar el archivo exe tal cual o comprimirlo con posibles dependencias (o dejar que el programa descargue las dependencias adicionales de la red al iniciar).También es gratis, como ocurre con la cerveza y el discurso, lo que puede (o no) ser algo bueno.

Depende de qué tan sofisticados sean sus usuarios objetivo.En la mayoría de los casos querrás aislarlos del hecho de que estás ejecutando una aplicación basada en Java.Bríndeles un instalador nativo que haga lo correcto (crear entradas del menú de inicio, lanzadores, registrarse para agregar o quitar programas, etc.) y que ya incluye un tiempo de ejecución de Java (para que el usuario no necesite saberlo ni preocuparse por ello).Me gustaría sugerir nuestra herramienta de instalación multiplataforma, Constructor de instalación de BitRock.Aunque no está basado en Java, se utiliza habitualmente para empaquetar aplicaciones Java.Se puede integrar fácilmente con Ant y puede crear instaladores de Windows desde Unix/Linux/Mac y viceversa.Debido a que los instaladores generados son nativos, no requieren un paso de autoextracción o que un JRE ya esté presente en el sistema de destino, lo que significa instaladores más pequeños y le ahorra algunos dolores de cabeza.También me gustaría mencionar que tenemos licencias gratuitas para proyectos de código abierto.

Los archivos ejecutables son los mejores, pero están limitados por la plataforma, es decir.utilizar gcj: http://gcc.gnu.org/java/ para Linux para producir ejecutables y utilizar launch4j: http://launch4j.sourceforge.net/ para producir ejecutables de Windows.Para empaquetar en Linux puede usar cualquier empaquetador rpm o deb.Para win32 prueba http://en.wikipedia.org/wiki/Nullsoft_Scriptable_Install_System

Si se trata de una aplicación de usuario final con GUI real, debe ignorar el idioma en el que escribió el programa (Java) y utilizar un instalador nativo para cada una de las plataformas elegidas.La gente de Mac quiere un instalador .dmg y en Windows, un instalador .msi o .exe es el camino a seguir.En Windows prefiero NSIS de NullSoft sólo porque es menos objetable que InstallShield o InstallAnywhere.En OSX puede contar con que la JVM ya esté allí.En Windows, deberás comprobarlo e instalarlo si es necesario.La gente de Linux no ejecutará aplicaciones GUI de Java, y los pocos que lo harán sabrán qué hacer con un .jar ejecutable.

Aunque no lo he usado NSIS (Nullsoft Scriptable Installer System), existen scripts de instalación que verificarán si el JRE requerido está instalado en el sistema de destino.

Hay muchos scripts de muestra disponibles en Ejemplos de código y Instaladores del mundo real páginas, tales como:

(Tenga en cuenta que en realidad no he usado ninguno de los guiones, así que no lo tome como un respaldo).

Necesitaba una forma de empaquetar mi proyecto y sus dependencias en un único archivo jar.

Encontré lo que necesitaba usando el complemento Maven2 Assembly: Complemento de ensamblaje Maven2

Esto parece duplicar la funcionalidad de un frasco, pero no requiere configuración adicional para ponerlo en marcha.

Para aplicaciones Java simples, me gusta usar Jar's.Es muy sencillo distribuir un archivo en el que un usuario puede simplemente hacer clic (Windows), o

java -jar jarname.jar

En mi humilde opinión, jar es el camino a seguir cuando la simplicidad es el requisito principal.

Desarrollo aplicaciones eclipse RCP.Normalmente, para iniciar una aplicación de eclipse se incluye un lanzador ejecutable.Incluyo la máquina virtual Java dentro de la carpeta de la aplicación en un subdirectorio /jre para garantizar que se utilizará la versión correcta de Java.

Luego empaquetamos con Inno Setup para su instalación en la máquina del usuario.

¿Cuál es la mejor manera de distribuir una aplicación Java?¿Qué pasa si la aplicación Java necesita instalar artefactos en la computadora del usuario?¿Hay algún buen sistema de instalación/embalaje de Java?

En mi experiencia (de evaluando una serie de opciones), instalar4j es una buena solución.Crea instaladores nativos para cualquier plataforma y está específicamente orientado a la instalación de aplicaciones Java.Para más detalles, consulte "Características" en su sitio web.

Sin embargo, install4j es una herramienta comercial.Especialmente si sus necesidades son relativamente simples (simplemente distribuir una aplicación e instalar algunos artefactos), existen muchas otras buenas opciones, incluidas las gratuitas (como izPack o los ya mencionados Lauch4j).Pero usted pidió el mejor manera, y hasta donde yo sé, install4j es el indicado, especialmente para distribuir aplicaciones Java (EE) más grandes o más complicadas.

La mejor respuesta depende de la plataforma.Para la implementación en Windows, obtuve buenos resultados usando una combinación de un frasco y lanzamiento4j.Me tomó un poco de tiempo configurar mi entorno de compilación correctamente (scripts ant, en su mayoría), pero ahora es bastante sencillo.

Bueno, desde mi punto de vista, el mecanismo de distribución superior es usar algo como Haga clic una vez, o Inicio Web tecnología.Simplemente implementa la versión en el servidor y llega automáticamente a los clientes cuando se lanza la versión.Además, la plataforma Eclipse RCP contiene UpdateManager que hace lo que hace WebStart, pero también mucho más.

Como estoy usando Maven2 para construir, la implementación es muy sencilla:copie el jar creado en la ubicación del servidor, actualice el archivo jnlp si es necesario y listo.

installanywhere es bueno pero caro; no he encontrado uno gratuito tan bueno

Comprimiría el archivo jar junto con otros archivos jar dependientes, archivos de configuración y documentación junto con run.bat/run.sh.El usuario final debería poder descomprimirlo en cualquier ubicación y editar run.bat si es necesario (debe ejecutarse sin editar en la mayoría de los casos).Un instalador puede resultar útil si desea crear entradas en el menú de inicio, el escritorio, la bandeja del sistema, etc.

Como usuario, prefiero descomprimir y ejecutar el tipo de instalación (sin entradas en el menú de inicio, por favor).Sin embargo, las personas ajenas a la industria de TI pueden tener preferencias diferentes.Por lo tanto, si la aplicación está dirigida principalmente a desarrolladores, la ruta zip-run.bat y las aplicaciones para el público en general se pueden instalar mediante un instalador.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top