2009-01-26 9 views
17

Eclipse Die IDE ist eines der besten Beispiele für eine riesige Desktop-Anwendung, die in Java geschrieben ist.Warum verwendet Eclipse einen nativen Launcher?

Die meisten Java-Anwendungen, die ich gesehen habe, verwenden normalerweise ein Batch- oder Shell-Skript, um eine Zeichenfolge mit dem Klassenpfad der Anwendung zu erstellen, und starten die JVM mit dem Klassenpfad als env-Variable.

Eclipse, auf der anderen Seite, stützt sich auf einen nativen Launcher. Warum das ? Was macht dieser Launcher, dass Skripte nicht?

Ich erinnere mich an einen Artikel vor etwa anderthalb Jahren, der erklärte, dass "wir mit einem nativen Launcher besser dran sind", aber ID hat die inneren Abläufe des Launcher nicht erklärt.

Antwort

21

Die Equinox launcher verwendet JNI die Java VM im selben Prozess wie die Trägerrakete zu starten. Mithilfe von JNI können Sie SWT-Widgets auch im Begrüßungsbildschirm verwenden.


Eigentlich kann man noch ein Skript, da die Abschuss ausführbare Datei, eclipse.exe hat in 2 Stücke seit 3.3M5 gebrochen:

  • die ausführbare Datei, und
  • eine gemeinsame Bibliothek (zB: eclipse_1006.dll).

Die ausführbare Datei lebt im Stamm der Eclipse-Installation.
Die gemeinsam genutzte Bibliothek befindet sich in einem plattformspezifischen Fragment, org.eclise.equinox.launcher.[config], im Plugins-Verzeichnis.

Wenn Sie den Großteil des Launcher-Codes in eine gemeinsam genutzte Bibliothek verschieben, die sich in einem Fragment befindet, bedeutet dies, dass dieser Teil des Startcodes nun von einer Aktualisierungssite aktualisiert werden kann. Wenn Sie von Java aus starten, kann die gemeinsam genutzte Bibliothek über JNI geladen werden, um den Begrüßungsbildschirm anzuzeigen.

Wie hier erklärt, können Sie start Eclipse 3.3 without the native launcher,

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

Beachten Sie, dass der Name der jar-Datei ist jetzt Version abhängig verursacht naive Skripte, die das Glas mit der genauen Dateinamen aufrufen, sobald das Glas brechen -Datei wird aktualisiert.

Stattdessen möchten Sie möglicherweise nach einer Datei suchen, die org.eclipse.equinox_*.jar entspricht. Zum Glück enthält das Eclipse-Wiki appropriate scripting templates, die in diesem Fall nützlich sind.
Wenn Sie keine vorhandenen Skripts ändern möchten, können Sie auch nach dem Equinox Launcher-Plug-In suchen, es in das Eclipse-Hauptverzeichnis kopieren und die Kopie in startup.jar umbenennen.

10

Einige dieser Fenster sind bestimmte, einige sind allgemein.

  1. Ihre Shell-Integration ist im Vergleich zu einem Batch-Skript in der nativ verfügbaren Skriptsprache Ihrer Zielplattform erheblich verbessert.

  2. Es besteht keine Notwendigkeit, einen zusätzlichen Prozess starten Sie das Skript (das kann ausführen werden, um eine große Sache, wenn Sie die IDE selbst als Teil Ihres Build/Test werden scripting/Zyklus einsetzen.

  3. Die ausführbare Datei Header normalerweise die ‚Bitness‘ des Programms definieren. So ist die ausführbare Datei kann explizit angeben, es ist erlaubt/verbietet 32 ​​oder 64-Bit-Ausführung.

  4. Executables auf Fenster können kryptographisch signiert werden.

  5. Viele Malware/Firewall Schutzprogramme mainta in ausführbaren weißen Listen. Daher ist es viel schöner, wenn Eclipse (und es überprüft sich selbst auf Updates im Internet) zum ersten Mal mit dem Popup-Fenster "Eclipse versucht, auf das Internet zuzugreifen" präsentiert wird, anstatt mit einem generischen "javaw.exe" versuchen, auf das Internet zuzugreifen ". Es ermöglicht dem Benutzer auch feinere Kontrolle über dieses Verhalten.

  6. Der Prozess wird in ps/task manager als "you_app_name" anstelle von java -jar "Ihre jar-Datei" angezeigt. Dies macht es einfacher, fehlerhafte Prozesse zu verfolgen/zu verwalten. Etwas, was in einer Entwicklungsumgebung nicht ungewöhnlich ist.

5

Die anderen Antworten waren sehr technisch, aber meiner Meinung nach ist es aus einfacheren Gründen: User Experience.

Der Endbenutzer muss sich nicht um irgendetwas kümmern, damit es funktioniert. (Ja, Sie KÖNNEN sich damit beschäftigen, wenn Sie eine andere VM verwenden oder ARGs an die VM übergeben wollen, usw., aber das MÜSSEN SIE NICHT).

Es gibt nichts mehr zu einem Benutzer als ein Programm zu installieren, dann versuchen Sie es auszuführen, nur um eine Dos-Box zu erhalten, die sagt "Geben Sie den Pfad zu Ihrem Java-vm", oder noch schlimmer, doppelklicken Sie darauf und nichts passiert, weil Sie eine Batch-Datei bearbeiten müssen, damit es funktioniert.

Dies ist 2009, nicht 1996. Keine Benutzer (nicht einmal Entwickler!) Sollten Batchdateien bearbeiten müssen, damit ein Programm das erste Mal ausgeführt wird.

Verwandte Themen