Java es uno de mis lenguajes de programación de elección. Aunque 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 el uso de Java WebStart requiere que yo mantenga un servidor web.
¿Cuál es la mejor forma de distribuir una aplicación Java? ¿Qué sucede si la aplicación Java necesita instalar artefactos en la computadora del usuario? ¿Existe algún buen sistema de instalación / empaquetado de Java?
java
installer
jar
software-distribution
Laplie Anderson
fuente
fuente
Respuestas:
Existe una variedad de soluciones, según sus requisitos de distribución.
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.
Utilice launch4j y un instalador como NSIS. Esto le da 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 utilizo actualmente.
Utilice Webstart. 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 vuelve un problema con implementaciones más grandes porque tiene algunas fallas extrañas. Puede mejorar con la nueva tecnología de complementos en Java 1.7.
Utilice un compilador de código nativo como Excelsior JET y distribúyalo como ejecutable, o envuélvalo en un instalador. Caro, y generalmente lo vincula a una versión un poco más antigua de java, y hay algunos problemas con la carga de clases dinámica, pero es muy efectivo para implementaciones a gran escala donde necesita minimizar sus problemas de soporte.
fuente
El 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 de Windows, esta es la forma más fácil de hacerlo.
fuente
JSmooth 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 proporcionar una opción para descargarla si aún no está instalada. Puede enviar el archivo exe como está o comprimirlo con posibles dependencias (o dejar que el programa descargue las dependencias adicionales de la red al inicio). También es gratis, como en la cerveza y el habla, lo que puede (o no) ser algo bueno.
fuente
Depende de lo sofisticados que sean sus usuarios objetivo. En la mayoría de los casos, desea aislarlos del hecho de que está ejecutando una aplicación basada en Java. Proporciónelos con un instalador nativo que haga lo correcto (crear entradas del menú de inicio, lanzadores, registrarse con agregar / quitar programas, etc.) y que ya incluya un tiempo de ejecución de Java (por lo que el usuario no necesita saberlo ni preocuparse por él). Me gustaría sugerir nuestra herramienta de instalación multiplataforma, BitRock InstallBuilder. Aunque no está basado en Java, se usa comúnmente para empaquetar aplicaciones Java. Puede integrarse 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.
fuente
Los archivos ejecutables son los mejores, pero están limitados por la plataforma, es decir, use gcj: http://gcc.gnu.org/java/ para linux para producir ejecutables y use 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
fuente
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 usar un instalador nativo para cada una de las plataformas elegidas. La gente de Mac quiere un .dmg y en Windows un instalador .msi o .exe es el camino a seguir. En Windows, prefiero NSIS de NullSoft solo porque es menos objetable que InstallShield o InstallAnywhere. En OSX, puede contar con que la JVM ya estará allí. En Windows, deberá verificarlo e instalarlo si es necesario. La gente de Linux no ejecutará aplicaciones Java GUI, y los pocos que lo harán, sabrán qué hacer con un .jar ejecutable.
fuente
Aunque no he utilizado NSIS (Nullsoft Scriptable Installer System), existen scripts de instalación que comprobarán si el JRE requerido está instalado en el sistema de destino.
Hay muchos scripts de muestra disponibles en las páginas de ejemplos de código e instaladores del mundo real , como:
(Tenga en cuenta que en realidad no he usado ninguno de los guiones, así que no lo tome como un respaldo).
fuente
Necesitaba una forma de empaquetar mi proyecto y sus dependencias en un solo archivo jar.
Encontré lo que necesitaba usando el complemento Maven2 Assembly: Maven2 Assembly Maven2 Assembly plugin
Esto parece duplicar la funcionalidad de one-jar , pero no requiere configuración adicional para que funcione .
fuente
Para aplicaciones simples de Java, me gusta usar Jar's. Es muy sencillo distribuir un archivo en el que un usuario puede hacer clic (Windows), o
En mi humilde opinión, jar es el camino a seguir cuando la simplicidad es un requisito principal.
fuente
Desarrollo aplicaciones de 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 asegurarme de que se utilizará la versión correcta de Java.
Luego empaquetamos con Inno Setup para instalarlo en la máquina del usuario.
fuente
En mi experiencia (al evaluar varias opciones ), install4j es una buena solución. Crea instaladores nativos para cualquier plataforma y está específicamente orientado a la instalación de aplicaciones Java. Para obtener más información, consulte " Funciones " en su sitio web.
install4j es una herramienta comercial. Especialmente si tus necesidades son relativamente simples (solo distribuye una aplicación e instala algunos artefactos), existen muchas otras buenas opciones, incluidas las gratuitas (como izPack o el ya mencionado Lauch4j ). Pero usted preguntó por la mejor manera, y hasta donde yo sé, install4j es la única, especialmente para distribuir aplicaciones Java (EE) más grandes o más complicadas.
fuente
La mejor respuesta depende de la plataforma. Para la implementación en Windows, he obtenido buenos resultados con una combinación de one-jar y launch4j . Me tomó un poco de tiempo configurar correctamente mi entorno de compilación (scripts de hormigas, en su mayoría) pero ahora es bastante sencillo.
fuente
Bueno, desde mi punto de vista, el mecanismo de distribución superior es usar algo como ClickOnce o WebStart 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.
Dado que estoy usando Maven2 para la construcción, la implementación es muy sencilla: copie el jar construido en la ubicación en el servidor, actualice el archivo jnlp si es necesario y listo.
fuente
installanywhere es bueno pero caro - no he encontrado (tan) bueno gratis
fuente
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 (debería ejecutarse sin editar en la mayoría de los casos). Un instalador puede ser útil si desea crear entradas en el menú de inicio, escritorio, bandeja del sistema, etc.
Como usuario, prefiero descomprimir y ejecutar el tipo de instalación (sin entradas del menú de inicio, por favor). Sin embargo, las personas ajenas a la industria de las tecnologías de la información pueden tener preferencias diferentes. Por lo tanto, si la aplicación está destinada principalmente a desarrolladores, la ruta zip-run.bat y las aplicaciones para el público en general se pueden instalar mediante un instalador.
fuente