2009-01-26 11 views
17

Eclipse IDE es uno de los mejores ejemplos de una gran aplicación de escritorio escrita en Java.¿Por qué Eclipse usa un iniciador nativo?

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

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

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

Respuesta

21

El Equinox launcher utiliza JNI para iniciar la máquina virtual de Java en el mismo proceso que el lanzador. El uso de JNI también nos permite usar widgets SWT en la pantalla de inicio.


En realidad, todavía puede tener un guión, ya que el lanzador ejecutable, eclipse.exe, se ha dividido en 2 piezas desde 3.3M5:

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

El ejecutable vive en la raíz de la instalación de eclipse.
La biblioteca compartida está en un fragmento específico de 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 se encuentra 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í, se puede start Eclipse 3.3 without the native launcher,

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

Tenga en cuenta que el nombre del fichero-jar es ahora dependiente de la versión causando guiones ingenuos, que invocan el frasco utilizando el nombre exacto, para romper una vez que el frasco -file se actualiza

En su lugar, es posible que desee buscar un archivo que coincida con org.eclipse.equinox_*.jar. Afortunadamente, el Eclipse-wiki contiene appropriate scripting templates 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.

10

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

  1. Su integración de shell es muy mejorada en comparación con un script por lotes en el lenguaje de scripts nativo disponible de su plataforma de destino.

  2. No hay necesidad de poner en marcha un proceso adicional para ejecutar la secuencia de comandos (esto puede ser un gran problema si está Scripting el IDE a sí misma como parte de su construcción/prueba/desplegar ciclo.

  3. El ejecutable cabeceras normalmente definen el 'valor de bits' de su programa. por lo tanto el ejecutable puede indicar explícitamente que es permite/no permite 32 o 64 de ejecución poco.

  4. ejecutables en las ventanas pueden ser firmados criptográficamente.

  5. Muchos malware/cortafuegos guardar programas de mantenimiento en 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 se mostrará en ps/task manager como "you_app_name" en lugar de java -jar "su archivo jar". Esto facilita el seguimiento/administración de procesos errantes. Algo no poco común en un entorno de desarrollo.

5

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 el camino a su Java VM", o peor, haga doble clic y nada sucede porque tiene que 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.