2012-07-05 14 views
15

Desde hace algún tiempo, nuestra aplicación Java viene incluida con un JRE en Windows. Tenemos una pequeña aplicación de iniciador escrita en C que hace que la aplicación use nuestro JRE precompuesto. Ahora, con la cruzada de Apple para matar lentamente a Java, hemos decidido que sería prudente algo similar en OSX. ¿Cuál sería la mejor manera de utilizar un JRE pre paquete en OSX?Uso de un paquete JRE en OSX

+0

Apple no quiere matar a Java en Mac OS X, pero se utilice una JVM estándar de Oracle en lugar de su propia versión. – Matteo

+0

¿Estás diciendo que podría agrupar un JRE de Oracle y usarlo en una aplicación Mac de Java? – Mike2012

+0

Podría, pero no veo, por qué debería combinar una JVM con su aplicación. Tendrá que mantenerlo actualizado especialmente para las actualizaciones de seguridad. Nunca confiaría en una JVM incluida. Solo digo que Apple no abandonó Java simplemente decidió no construir el suyo y usar el de Oracle. – Matteo

Respuesta

6

Incluso si me parece una mala idea (ver a continuación), puede agrupar una JVM como OpenJDK y luego iniciar su aplicación con un pequeño script llamando al ejecutable java.

Aviso: No tengo ni idea de si se permite (legal) la redistribución de una JVM, debe comprobar el acuerdo antes de descargar

  • El primer problema que tenemos es que por el momento no es sólo Versión de Apple o Oracle Java 7u6 Versión de desarrollador de Mac OS X Port Preview (que es solo una vista previa). (por ejemplo, http://jdk7.java.net/macportpreview/). Esto cambiará en el futuro cuando Apple deje de suministrar su propia versión. Por lo tanto, en este momento estás atascado con un avance que solo se ejecuta en Lion. Pero te mostraré un ejemplo.

  • Descargar el instalador, montar la imagen de disco, haga clic derecho en el plugin, seleccione "Mostrar contenido del paquete" extraer la carpeta Home, que contiene el JRE

  • continuación, se puede comprobar con

    $ ./Home/bin/java 
    java version "1.7.0_06-ea" 
    Java(TM) SE Runtime Environment (build 1.7.0_06-ea-b18) 
    Java HotSpot(TM) 64-Bit Server VM (build 23.2-b08, mixed mode) 
    

    me cambie el nombre Home en algo así como jre

  • Si empaqueta esta carpeta con su aplicación que sólo tendrá que incluir un pequeño guión con

    #!/bin/sh 
    ./jre/bin/java -classpath myniceapplication.jar 
    
  • Para poder construir una aplicación que necesite una carpeta que contiene applicationname.app/Contents/MacOS guión (que debe ser nombrado applicationname).

  • Ahora parece que necesita las rutas absolutas uso de estos scripts

    /Path/applicationname.app/Contents/MacOS/jre/bin/java -classpath myniceapplication.jar 
    

    supongo que hay una mejor solución para construir un paquete de aplicaciones de Mac OS X, pero yo no soy un experto. Este ejemplo fue solo para mostrar que puede funcionar.

En resumen:

  • Comprobar si se permite redistribuir el JRE (y comprobar cuáles son las condiciones)

  • Yo no lo haría, ya que tendrá que mantenerlo actualizado y actualice su aplicación cada vez que haya una actualización de seguridad de JRE

  • Como usuario confiaría más en Oracle que en un desarrollador aleatorio (nada persona :-) Al llegar a un JRE

+0

Al haber montado el 'jdk-7u5-macosx-x64.dmg' de Oracle, no estoy seguro de dónde encontrar el complemento para hacer clic derecho (sin instalar), ya que solo contiene un' JDK 7 Update 05.pkg 'y cuando hago clic con el botón derecho, no aparece el elemento de menú" Mostrar contenido del paquete ". – Mot

+0

No, OpenJDK no contiene una copia previa a la compilación (debe crearla por lo que recuerdo). El enlace en mi respuesta apunta al plugin de Java que contiene una copia del JRE (http://www.java.net/download/jdk7u6/archive/b19/binaries/JavaAppletPlugin.dmg) – Matteo

+0

Su enlace apunta a una vista previa . Me refería al JDK que se puede descargar del [sitio web estándar de Oracle] (http://www.oracle.com/technetwork/java/javase/downloads/index.html). Un JRE como para las otras plataformas actualmente no está disponible para OSX. – Mot

2

Hay algunas instrucciones detalladas en this blog post sobre la agrupación de un JRE en su aplicación, y para que pueda ser presentado a la App Store.

15

Soy el autor de la publicación del blog vinculada por @Daniel en su respuesta. Agrupe con éxito el OpenJDK y publiqué una aplicación Java en el Mac App Store.

Primero, permítame corregir algunos problemas en la respuesta aceptada.

  • Es perfectamente legal agrupar el OpenJDK y redistribuirlo.
  • El OpenJDK no funciona solo con Lion, lo usé en pre-Lion hasta Mountain Lion. Sin embargo, necesita ser parcheado para funcionar en un sistema operativo de 32 bits.
  • El OpenJDK está en calidad beta, pero aún así es aceptable ejecutar una aplicación compleja de Swing. Hay algunas cuestiones en OSX, pero describen cómo solucionarlos en this post.

No hay necesidad de crear cualquier secuencia de comandos como se describe en @ respuesta de Matteo, puede utilizar una aplicación llamada AppBundler, publicado por Oracle, a crea el ejecutable nativo que iniciará tu aplicación y creará un paquete nativo. AppBundler también generará un archivo Info.plist que contiene información sobre cómo iniciar su aplicación, como el nombre del ejecutable para iniciar, argumentos de Java, etc. ...

De la versión 10.7.5 y superior, su aplicación debe ser Gatekeeper compatible y firmado (por lo tanto, debe inscribirse en el programa de desarrollador Mac pagado) si no desea un diálogo que indique que su aplicación pertenece a un desarrollador no identificado para que aparezca cuando el usuario la abre por primera vez.

Para implementarse en App Store, su aplicación también debe poder funcionar en un entorno de espacio aislado, pero no es un requisito estricto si la distribuye fuera de la App Store.

Tenga en cuenta que AppBundler carecen de algunas funciones útiles, usted puede estar interesado en this fork.

+0

Esta respuesta o la respuesta de @ Daniel debe ser la respuesta aceptada. Responden la pregunta de manera precisa, completa y con información autorizada directamente de Oracle. – Jason

Cuestiones relacionadas