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
Respuesta
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 JREcontinuació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í comojre
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 nombradoapplicationname
).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
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
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
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
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.
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.
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
Aquí es una guía paso a paso desde Oracle a sí mismos sobre cómo empaquetar un JRE para la distribución en el Apple: http://docs.oracle.com/javase/7/docs/technotes/guides/jweb/packagingAppsForMac.html
Esta respuesta o la respuesta de @Marco deberían ser la respuesta aceptada. Estos son los pasos directamente de Oracle sobre cómo agrupar una aplicación Java para Mac y Mac App Store. – Jason
- 1. Cómo degradar JRE/JDK en Mac OSX?
- 2. Uso de make en OSX
- 3. com.sun.awt uso del paquete
- 4. Servidor VM necesario pero no disponible en JRE. Entonces, ¿qué paquete necesito: JRE, JDK?
- 5. Posible incluir Mono Runtimes en el paquete OSX .app?
- 6. Instalación de OpenJDK-7-JRE en Ubuntu 10.04 - Paquete OpenJDK-7-jre no tiene candidato para su instalación
- 7. Paquete de una aplicación Node.js como una aplicación osx
- 8. Uso del paquete data.table dentro de mi propio paquete
- 9. Ayuda en el uso del paquete rgl
- 10. Uso de un paquete de recursos personalizado con Hibernate Validator
- 11. ¿Hay un src.jar en OSX?
- 12. ¿Incrustar un JRE en un ejecutable de Windows?
- 13. ¿Cómo uso las funciones en un paquete R enmascarado por otro paquete?
- 14. Uso de netcat para enviar un paquete UDP sin enlace
- 15. Última modificación de un directorio en OSX
- 16. Encontrando el JRE en Windows
- 17. Java: encuentre la versión de tzdata en uso, independientemente de la versión de JRE
- 18. ¿Cómo agrupar un JRE con Launch4j?
- 19. Agrupación de un JRE privado en Mac OS X
- 20. ¿Cómo se crea una aplicación osx/dmg desde un paquete python?
- 21. MXMLC y 64bit JRE
- 22. JRE incluido con JDK frente a JRE independiente
- 23. Maven confundido acerca de JRE sido usado
- 24. Reducción del tamaño de JRE
- 25. El uso de paquete 'Brobdingnag' en el lenguaje R
- 26. JRE directorio de instalación en Windows
- 27. Ejemplos completos del uso del paquete pySerial
- 28. Java JRE vs GCJ
- 29. Ejecutando un paquete python
- 30. Configurar programáticamente JRE instalados en Eclipse
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
¿Estás diciendo que podría agrupar un JRE de Oracle y usarlo en una aplicación Mac de Java? – Mike2012
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