2010-04-26 10 views
9

Estas personas son finas mis usuarios: http://www.youtube.com/watch?v=o4MwTvtyrUQ¿Existe un mecanismo para distribuir una aplicación con su propio JRE?

Si no desea disfrutar el video aquí es lo esencial: mis usuarios no pueden distinguir entre un archivo y una carpeta, entre un navegador y un sitio web.

Necesito crear una aplicación web Java (Tomcat o Jetty) y desplegarla en la mayoría de sus computadoras, Windows y Mac.

La pregunta es: ¿existe un mecanismo para distribuir una aplicación con su propio JRE? (En el mundo de Tcl hay starpacks y Starkits, en el mundo de Python hay py2exe y otros, esa es la idea). Y también, ¿es legal? Sé que la VM es de código abierto, pero no tengo claras las bibliotecas y sé sobre GNU Classpath, pero no sé si todos los paquetes están allí.

No deseo depender del JRE instalado o de que el usuario tenga suficientes privilegios para instalar uno. En la Mac no quiero depender de Apple (tuve que pasar de Tiger a Snow Leopard solo para tener Java 1.6, no puedo poner a mis usuarios en esa posición)

Cualquier información muy apreciada. Gracias! jb

editar: Me pregunto si puedo simplemente pegar la carpeta JRE debajo de la carpeta de mi aplicación. eso está permitido?

+1

Espera ... ¿quieres instalar la aplicación web y el servidor en la máquina del usuario? ¿Y espera que estas personas analfabetas informáticas inicien su navegador y escriban "http: // localhost: 8080/webapp" para acceder a su aplicación? Recuerde, ellos no conocen la diferencia entre un sitio web y un navegador ... ¿sin mencionar tratar con cosas como el firewall de Windows y el UAC que les impide iniciar el servidor? – Nate

Respuesta

4
 
    To run your application, a user needs the J2SE Runtime Environment, 
    which is freely available from Sun. Or, You can redistribute the 
    J2SE Runtime Environment for free with your application, according 
    to the terms of the Runtime Environment's license. 

De http://java.sun.com/j2se/1.5.0/jre/README

No he leído la letra pequeña, parece que Sun tiene la intención de las personas para redistribuir el JRE. Además, hay muchos productos (por ejemplo, install4j) que facilitan la redistribución del JRE, por lo que parece ser legal.

En cuanto al resto, también podría empaquetar tomcat, con el Servicio incorporado para que su aplicación se inicie automáticamente, y cree un acceso directo en su escritorio a su aplicación web local, para que los usuarios puedan escribir ht tp : // localhost: 8080/webapp. Hay muchos instaladores de FOSS (por ejemplo, izpack) que permitirán a los usuarios instalar el paquete y administrar la creación de accesos directos de escritorio. Usted mencionó que prefiere no usar un instalador, pero incluso la descompresión es una especie de instalación: los usuarios tienen que elegir un directorio al que tengan acceso de escritura, y esto no es diferente con un instalador completo.

Pero, dadas las capacidades de sus usuarios, ¿una solución instalada localmente es la más adecuada para ellos? Una solución en línea podría ofrecer una implementación más simple (por ejemplo, Java web start, o incluso como un applet.)

+0

@mdma: Creo que debería haber leído ese archivo README antes. Gracias por la respuesta. La solución instalada localmente es porque quiero que mantengan sus datos en sus propias computadoras (lo opuesto a "la nube"). Como escribo principalmente código de servidor, nunca tuve que preocuparme por distribuir la plataforma. Es desordenado. Desearía que hubiera algo como web2py (python) para Java. Gracias de nuevo. - jb – user179997

6

Usamos Install4j en nuestro lugar de trabajo. Se encarga de la instalación e instala el JRE si es necesario también. No es gratis sin embargo. Y al menos la versión que utilizamos no proporciona a los usuarios de Mac un JRE integrado. Pero por lo que pude averiguar, eso se debió a algunas restricciones de Apple. Los Mac vienen con su propio JRE y si su usuario tiene una Mac, es seguro asumir que tienen un JRE instalado. Aunque, si el JRE es una versión anterior a la que le gusta, entonces deberían usar Actualización de software para verificar si hay una versión más nueva disponible e instalarla.

+0

+1 Para install4j. – lexicore

+0

@Alinium: Desafortunadamente, no puedo suponer que mi usuario tenga permiso para instalar nada, así que estoy buscando un tipo de distribución "descomprimir y ejecutar". – user179997

1

En OS X, prácticamente está atrapado con lo que Apple le proporcione. En otras plataformas, no es necesario ejecutar un instalador de JRE (que usted señala correctamente que sus usuarios pueden no ser capaces de hacer), simplemente agrupe una carpeta JRE junto con su aplicación. Eso es lo que hacen muchos de nuestros usuarios (mi empresa tiene un instalador multiplataforma llamado InstallBuilder) y hemos empaquetado muchas aplicaciones web Java de esa manera.Puede echar un vistazo a algunos de ellos en BitNami (todos ellos son gratis)

1

O en resumen, se puede intentar esto:

Hacer un archivo JAR auto ejecutable de su aplicación.

  • Proporcione a sus usuarios una configuración de JRE pequeña (aprox. 15 MB para jre6u7) junto con su aplicación.
  • Ahora crea un archivo por lotes (para Windows) que primero ejecutará el instalador JRE.
  • A continuación, seleccione la ruta a la carpeta 'bin' de JRE instalada.
  • Ahora, después de esto, escriba 'java -jar yourAppName.jar' en la secuencia de comandos para ejecutar el archivo jar ejecutable.

por ejemplo: para WIN.BAT escribe lo siguiente:

jre-6u7-windows-i586-p :: this will start the JRE installer 
C:\Program Files\Java\jre1.6.0_07\bin\java -jar yourAppName.jar :: this will start your app 

Puede crear este tipo de scripts para Mac y Linux también.

Cuestiones relacionadas