Eclipse contains a native executable launcher that is used to start
Eclipse. There is more to the launcher than just the eclipse
executable in the root of the install.
The launcher executable comes in 2 pieces: the executable (eclipse.exe), and a shared library (eclipse_1017.dll). The executable lives in the root of the eclipse install. The shared library is in a platform specific fragment, org.eclipse.equinox.launcher.[config], in the plugins directory.
Having the majority of the launcher code in a shared library that lives in a fragment means that that portion of the launch code can now be updated from an update site. Also, when starting from java, the shared library can be loaded via JNI in order to display the splash screen.
Previous versions of Eclipse had a startup.jar JAR file in the root of the install. In 3.3, this code has been moved to a plug-in org.eclipse.equinox.launcher in the plugins directory. Eclipse can still be started directly with java using, for example:
java -jar plugins/org.eclipse.equinox.launcher_1.0.0.v20070606.jar
Launching Eclipse involves 3 main pieces: the native executable, the launcher platform specific fragment and the launcher jar. In the example below, notice that the launcher fragment is in folder form, this is necessary so that the native eclipse.exe can load the shared library:
eclipse/
eclipse.exe
plugins/
org.eclipse.equinox.launcher_1.0.0.v20070606.jar
org.eclipse.equinox.launcher.win32.win32.x86_1.0.0.v20070523/
eclipse_1017a.dll
The version numbers above are for illustration purposes only (e.g. 1.0.0.v20070606). The actual version numbers may vary depending on the version of Eclipse you are using.
The Eclipse launcher is capable of loading the Java VM in the
eclipse process using the Java Native Interface Invocation API.
The launcher is still capable of starting the Java VM in a separate
process the same as previous version of Eclipse did. Which method
is used depends on how the VM was found.
When no -vm is specified, the launcher looks for a virtual machine first in a jre directory in the root of eclipse and then on the search path. If java is found in either location, then the launcher looks for a jvm shared library (jvm.dll on Windows, libjvm.so on *nix platforms) relative to that java executable.
Eclipse can be started with "-vm <location>" to indicate a virtual machine to use. There are several possibilities for the value of <location>: