siglo sangre roja lunar luna julio java eclipse native

java - sangre - el eclipse del siglo



¿Por qué Eclipse usa un lanzador nativo? (3)

Algunos de estos son específicos de Windows algunos son generales.

  1. La integración de su shell es mucho mejor en comparación con una secuencia de comandos por lotes en el lenguaje de scripts nativo disponible de su plataforma de destino.

  2. No es necesario iniciar un proceso adicional para ejecutar el script (esto puede ser un gran problema si está scripting el IDE mismo como parte de su ciclo de compilación / prueba / implementación.

  3. Los encabezados ejecutables normalmente definen la ''bitness'' de su programa. Por lo tanto, el ejecutable puede indicar explícitamente que permite / no permite la ejecución de 32 o 64 bits.

  4. Los ejecutables en Windows pueden estar firmados criptográficamente.

  5. Muchos programas de protección contra malware / firewall mantienen por listas blancas ejecutables. Como tal, es mucho más agradable cuando se enciende el eclipse (y se comprueba a sí mismo si hay actualizaciones en la web) por primera vez para que aparezca el mensaje emergente "Eclipse intenta acceder a Internet" en lugar de un genérico "javaw.exe es tratando de acceder a internet ". También permite al usuario un control más detallado sobre este comportamiento.

  6. El proceso aparecerá en ps / task manager como "you_app_name" en lugar de java -jar "your jar file". Esto facilita el seguimiento / administración de procesos errantes. Algo no poco común en un entorno de desarrollo.

Eclipse IDE es uno de los mejores ejemplos de una gran aplicación de escritorio escrita en Java.

La mayoría de las aplicaciones Java que he visto generalmente se basan en un script por lotes o de shell para construir una cadena con la ruta de clase de la aplicación y se ejecuta la JVM con la ruta de clase como una variable env.

Eclipse, por otro lado, confía en un lanzador nativo. Porqué es eso ? ¿Qué hace este iniciador que las secuencias de comandos no hacen?

Recuerdo haber leído un artículo hace un año y medio que explicaba que "estamos mejor con un iniciador nativo", pero id no explicaba el funcionamiento interno del iniciador.


Las otras respuestas han sido muy técnicas, pero en mi opinión, creo que es por razones mucho más simples: experiencia de usuario.

El usuario final no tiene que preocuparse por nada para que funcione. (Sí, PUEDES molestarlo si quieres usar una VM diferente o pasar args a la vm, etc., pero no TIENES que hacerlo).

No hay nada más extraño para un usuario que instalar un programa, luego intente ejecutarlo, solo para obtener un dos cuadro que dice "ingrese la ruta a su Java VM", o peor, haga doble clic en él y no pasa nada porque tiene ir a editar un archivo por lotes para que funcione.

Esto es 2009, no 1996. Ningún usuario (¡ni siquiera los desarrolladores!) Debería tener que editar los archivos por lotes para hacer que un programa se ejecute la primera vez.


El iniciador Equinox utiliza JNI para iniciar Java VM en el mismo proceso que el iniciador. El uso de JNI también nos permite usar widgets SWT en la pantalla de inicio.

En realidad, aún puede tener un script, ya que el ejecutable del launcher, eclipse.exe, se ha dividido en 2 partes desde 3.3M5:

  • el ejecutable, y
  • una biblioteca compartida (por ejemplo: eclipse_1006.dll).

El ejecutable vive en la raíz de la instalación del eclipse.
La biblioteca compartida se encuentra en un fragmento específico de la plataforma, org.eclise.equinox.launcher.[config] , en el directorio de complementos.

Mover la mayoría del código del iniciador a una biblioteca compartida que vive en un fragmento significa que esa parte del código de inicio ahora se puede actualizar desde un sitio de actualización. Además, cuando se inicia desde Java, la biblioteca compartida se puede cargar a través de JNI para mostrar la pantalla de presentación.

Como se explica aquí, puede iniciar Eclipse 3.3 sin el iniciador nativo ,

java -jar plugins/org.eclipse.equinox.launcher_1.0.0.v20070319.jar

Tenga en cuenta que el nombre del archivo jar ahora depende de la versión, lo que provoca que los scripts ingenuos, que invocan al contenedor utilizando el nombre de archivo exacto, se rompan una vez que el archivo jar se actualice.

En su lugar, es posible que desee buscar un archivo que coincida con org.eclipse.equinox_*.jar . Afortunadamente, Eclipse-wiki contiene plantillas de scripts apropiadas que son útiles en este caso.
Si desea evitar la modificación de scripts existentes, también puede buscar el complemento Equinox Launcher, copiarlo en el directorio principal de Eclipse y cambiarle el nombre a startup.jar.