Categories

Examining Eclipse

GettingStarted

What this guide is all about?

This is a hands-on guide to learn the Eclipse internals. You are expected to follow along with your own installation of Eclipse. We start off by taking a classic download of Eclipse and then getting a minimal set of plug-ins from it – the smallest running instance of Eclipse along with a GUI (around 30 MB). Once we have a small running instance we start learning the Eclipse internals by running it in debug mode from within another complete instance of Eclipse.

Why do you want a minimal install?

Having a minimal install helps eliminate noise. This will help us study the Eclipse workbench, without unnecessary plug-ins interfering our observations.

What this guide is not

This guide is not for those who are new to Eclipse. It assumes you have a decent knowledge of Eclipse – you understand the concept of views, perspectives and workspace.

Getting a minimal install

This section helps you get a small working installation of Eclipse. This will help you examine and learn about Eclipse without wondering if the behavior you see is because of some plug-in that you should not have bothered about in the first place.

The steps here although cumbersome help you learn some of the parts of Eclipse. You will see how flexible Eclipse is and the fact that the plug-ins that come with the classic install do not have any special privileges and are like any other plug-in.

If you don’t want to go through these cumbersome steps, but still want to learn the Eclipse internals, you could use the next best – the Platform Runtime Binary available here: http://download.eclipse.org/eclipse/downloads/drops/R-3.3.1.1-200710231652/ and continue here: Examining the experimental Eclipse. However it is strongly advised that you try the initial steps.

Getting a minimal install

Getting Things Ready
Playing with the configuration
Tweaking the configuration
Changing the product feature
Disabling unnecessary platform plugins

Examining Eclipse

Examining the experimental Eclipse

Winding Up

About me

Getting Things Ready

Initial instructions – very important

  • To begin with, have a clean installation of Eclipse. I suggest you begin with the most minimal installation that is available here: http://www.eclipse.org/downloads/. Since most of you have the classic Eclipse installation, I started with the Eclipse Classic 3.3.1.1 but any of them should be fine.
  • Whenever the instruction says, “backup your work”, make a copy of the installation.
  • The instructions below are for Linux, but it should be very similar for Windows as well.

Ensure that you have a clean installation of Eclipse, an experimental copy and a backup

  • Create a directory called Eclipse.
gautham@ubuntu:~$ mkdir eclipse
gautham@ubuntu:~$ cd eclipse
  • Copy the Eclipse archive to the directory
gautham@ubuntu:~/eclipse$ cp (download-location)/eclipse-SDK-3.3.1.1-linux-gtk.tar.gz .
  • Create the following sub-directories – original, experimental, backup
gautham@ubuntu:~/eclipse$ mkdir original
gautham@ubuntu:~/eclipse$ mkdir experimental
gautham@ubuntu:~/eclipse$ mkdir backup
gautham@ubuntu:~/eclipse$ ls
backup  eclipse-SDK-3.3.1.1-linux-gtk.tar.gz  experimental  original
  • Extract the zip
gautham@ubuntu:~/eclipse$ gzip -dc eclipse-SDK-3.3.1.1-linux-gtk.tar.gz | tar xf -
gautham@ubuntu:~/eclipse$
  • Copy the extracted contents to the original and experimental directories
gautham@ubuntu:~/eclipse$ ls
backup  eclipse  eclipse-SDK-3.3.1.1-linux-gtk.tar.gz  experimental  original
gautham@ubuntu:~/eclipse$ cp eclipse original/ -r
gautham@ubuntu:~/eclipse$ mv eclipse/ experimental/
  • You can now remove the zip
gautham@ubuntu:~/eclipse$ rm eclipse-SDK-3.3.1.1-linux-gtk.tar.gz
gautham@ubuntu:~/eclipse$ ls
backup  experimental  original

Although the original and experimental directories have the same contents now, over time the contents of all 3 directories will be very different. We will be mainly working on the directory ‘experimental’ and backing up the contents periodically in ‘backup’. ‘original’ will remain untouched.

  • During the dissection, your Eclipse installation might stop working at any time. In order to keep suspicion to the minimum, ensure that you have no problems to begin with. Just to convince yourself, run your instance of Eclipse and ensure that you don’t have any issues regarding JVM etc.
gautham@ubuntu:~/eclipse$ cd experimental/eclipse/
gautham@ubuntu:~/eclipse/experimental/eclipse$ ./eclipse &
[1] 10058

Remember to use ./ because there could be some other ‘eclipse’ in your path. Once you execute this command, Eclipse would show the splash screen followed by a dialog asking for the workspace. Just press ‘OK’. We will be creating a different workspace later. This step is only to ensure that your Eclipse extract does not have any issues.

If everything is fine, you should see Eclipse as shown below:


Link

Go to Help -> Software Updates -> Manage Configuration


Link

As you can see, Eclipse is running with the core platform plugins, along with JDT, PDE and CVS plugins.

Exit from Eclipse.

  • Look for the features, plugins and configuration directories in your Eclipse install directory.
gautham@ubuntu:~/eclipse/experimental/eclipse$ ls
about_files  configuration  eclipse.ini   features  libcairo-swt.so  plugins
about.html   eclipse        epl-v10.html  icon.xpm  notice.html      readme
  • Learn the Eclipse command line arguments

The details on the command line arguments are given in this eclipse.org page.
Give particular importance to the following arguments: clean, configuration, consolelog, data and debug.
Execute the following command

gautham@ubuntu:~/eclipse/experimental/eclipse$ ./eclipse -clean -debug -consolelog &
[1] 10731
gautham@ubuntu:~/eclipse/experimental/eclipse$ Start VM: -Xms40m
-Xmx256m
-Djava.class.path=/home/gautham/eclipse/experimental/eclipse/plugins/org.eclipse.equinox.launcher_1.0.1.R33x_v20070828.jar
-os linux
-ws gtk
-arch x86
-showsplash /home/gautham/eclipse/experimental/eclipse//plugins/org.eclipse.platform_3.3.2.R33x_v20071022/splash.bmp
-launcher /home/gautham/eclipse/experimental/eclipse/eclipse
-name Eclipse
--launcher.library /home/gautham/eclipse/experimental/eclipse/plugins/org.eclipse.equinox.launcher.gtk.linux.x86_1.0.2.R331_v20071019/eclipse_1021.so
-startup /home/gautham/eclipse/experimental/eclipse/plugins/org.eclipse.equinox.launcher_1.0.1.R33x_v20070828.jar
-clean
-debug
-consolelog
-vm /usr/lib/jvm/java-1.5.0-sun-1.5.0.11/jre/bin/../lib/i386/client/libjvm.so
-vmargs
-Xms40m
-Xmx256m
-Djava.class.path=/home/gautham/eclipse/experimental/eclipse/plugins/org.eclipse.equinox.launcher_1.0.1.R33x_v20070828.jar
Install location:
    file:/home/gautham/eclipse/experimental/eclipse/
Configuration file:
    file:/home/gautham/eclipse/experimental/eclipse/configuration/config.ini loaded
Configuration location:
    file:/home/gautham/eclipse/experimental/eclipse/configuration/
Framework located:
    file:/home/gautham/eclipse/experimental/eclipse/plugins/org.eclipse.osgi_3.3.1.R33x_v20070828.jar
Framework classpath:
    file:/home/gautham/eclipse/experimental/eclipse/plugins/org.eclipse.osgi_3.3.1.R33x_v20070828.jar
Splash location:
    /home/gautham/eclipse/experimental/eclipse//plugins/org.eclipse.platform_3.3.2.R33x_v20071022/splash.bmp

Now that you have a clean installation of Eclipse and also know how to use the command line arguments, let’s move to the next step.

Playing with the configuration

Playing with the configuration
The default installation of Eclipse contains the configuration directory in the install directory (as we saw in the previous steps).

gautham@ubuntu:~/eclipse/experimental/eclipse$ ls -l | grep configuration
drwxr-xr-x  8 gautham gautham   4096 2008-02-17 00:21 configuration

But this need not be. We can as well move the configuration to a different location. In fact we can have multiple configurations if we need to. Let’s see how.

  • Create a config directory in the directory ‘experimental’. Move the ‘configuration’ directory from experimental/eclipse to the config directory.
gautham@ubuntu:~/eclipse/experimental/eclipse$ cd ..
gautham@ubuntu:~/eclipse/experimental$ ls
eclipse
gautham@ubuntu:~/eclipse/experimental$ mkdir config
gautham@ubuntu:~/eclipse/experimental$ ls
config  eclipse
gautham@ubuntu:~/eclipse/experimental$ mv eclipse/configuration/ config/
  • Let’s now start Eclipse as before (expect to see an error)
gautham@ubuntu:~/eclipse/experimental$ cd eclipse/
gautham@ubuntu:~/eclipse/experimental/eclipse$ ./eclipse

gautham@ubuntu:~/eclipse/experimental/eclipse$ cat configuration/1203188225591.log
!SESSION 2008-02-17 00:27:05.319 -----------------------------------------------
eclipse.buildId=unknown
java.version=1.5.0_11
java.vendor=Sun Microsystems Inc.
BootLoader constants: OS=linux, ARCH=x86, WS=gtk, NL=en_US
Command-line arguments:  -os linux -ws gtk -arch x86

!ENTRY org.eclipse.osgi 4 0 2008-02-17 00:27:05.880
!MESSAGE Application error
!STACK 1
java.lang.IllegalStateException: Unable to acquire application service. Ensure that the org.eclipse.core.runtime bundle is resolved and started (see config.ini).
        at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:72)
        at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:363)
        at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:176)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:585)
        at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:508)
        at org.eclipse.equinox.launcher.Main.basicRun(Main.java:447)
        at org.eclipse.equinox.launcher.Main.run(Main.java:1173)
  • The configuration directory was created afresh. So I am just going to delete it.
gautham@ubuntu:~/eclipse/experimental/eclipse$ rm -rf configuration/
  • Let’s now try to run Eclipse, by making it point to the new location of the configuration.
gautham@ubuntu:~/eclipse/experimental/eclipse$ ./eclipse -configuration ../config/configuration/ &
[1] 11113

No problems now!
Basically, what we did was to ask Eclipse to look for the configuration directory in a different location. Would it work if I rename the configuration directory? Let’s try that.

gautham@ubuntu:~/eclipse/experimental/eclipse$ cd ../config/
gautham@ubuntu:~/eclipse/experimental/config$ mv configuration/ classic
gautham@ubuntu:~/eclipse/experimental/config$ cd ../eclipse/
gautham@ubuntu:~/eclipse/experimental/eclipse$ ./eclipse -configuration ../config/classic/ &
[1] 11192

No issues. Eclipse runs as if nothing has changed.

Let’s now move on to: Tweaking the configuration

Tweaking the configuration
  • Let’s now make a copy of the configuration.
gautham@ubuntu:~/eclipse/experimental/config$ cd ../config/
gautham@ubuntu:~/eclipse/experimental/config$ cp classic/ minimal -r
gautham@ubuntu:~/eclipse/experimental/config$ ls
classic  minimal
  • cd to the directory minimal/org.eclipse.update
gautham@ubuntu:~/eclipse/experimental/config$ cd minimal/org.eclipse.update/
gautham@ubuntu:~/eclipse/experimental/config/minimal/org.eclipse.update$ ls
bookmarks.xml  history  install.log  last.config.stamp  platform.xml
  • View the contents of platform.xml.
gautham@ubuntu:~/eclipse/experimental/config/minimal/org.eclipse.update$ less platform.xml

(Press ‘q’ when done)
Do you notice anything?
When you are running Eclipse, if you go to Help -> Software Updates -> Manage Configuration, you will see the same contents as what you see in platform.xml.

Eclipse uses the contents of this file to determine the features needed to run Eclipse. Would it work if I add or delete entries from this file?
Let’s try that.

  • Use your favorite editor to remove the ‘feature’ elements related to jdt, pde, cvs and also the source related features from platform.xml. (An ‘element’ is content from the start tag<feature> to the end tag</feature>.)

Once done you should see the following contents:

gautham@ubuntu:~/eclipse/experimental/config/minimal/org.eclipse.update$ cat platform.xml
<?xml version="1.0" encoding="UTF-8"?>
<config date="1203187807180" transient="false" version="3.0">
<site enabled="true" policy="USER-EXCLUDE" updateable="true" url="platform:/base/">
<feature id="org.eclipse.platform" url="features/org.eclipse.platform_3.3.2.R33x_v20071022-_19UEksF-G8Yc6bUv3Dz/" version="3.3.2.R33x_v20071022-_19UEksF-G8Yc6bUv3Dz">
</feature>
<feature id="org.eclipse.rcp" url="features/org.eclipse.rcp_3.3.2.R33x_r20071022-8y8eE9CEV3FspP8HJrY1M2dS/" version="3.3.2.R33x_r20071022-8y8eE9CEV3FspP8HJrY1M2dS">
</feature>
<feature id="org.eclipse.sdk" url="features/org.eclipse.sdk_3.3.2.R33x_r20071022-7M7J7C_Mu2gop0b_GAwplOBhyuKO/" version="3.3.2.R33x_r20071022-7M7J7C_Mu2gop0b_GAwplOBhyuKO">
</feature>
</site>
</config>
  • Ok, let’s run Eclipse now. (This is really exciting!)

Do NOT use -clean to run Eclipse.

gautham@ubuntu:~/eclipse/experimental/config/minimal/org.eclipse.update$ cd ../../../eclipse/
gautham@ubuntu:~/eclipse/experimental/eclipse$ ./eclipse -configuration ../config/minimal/ &
[1] 11506

Eclipse seems to run fine. But surprisingly, the Java and other ‘disabled’ features are still there. 🙁

Let’s inspect the Help -> Software Updates -> Manage Configuration.


Link

Click on Eclipse Project SDK 3.3.2… and then click on Show Properties. Click on Status.

Although there is an error, Eclipse comes up without any issues. However, the JDT, PDE and CVS plugins are still active.

Let’s remove this error now
Look for the feature.xml in features/org.eclipse.sdk… and remove the jdt, pde, cvs and source entries from it:

gautham@ubuntu:~/eclipse/experimental/eclipse$ cd features/org.eclipse.sdk_3.3.2.R33x_r20071022-7M7J7C_Mu2gop0b_GAwplOBhyuKO/
gautham@ubuntu:~/eclipse/experimental/eclipse/features/org.eclipse.sdk_3.3.2.R33x_r20071022-7M7J7C_Mu2gop0b_GAwplOBhyuKO$ (edit feature.xml)
gautham@ubuntu:~/eclipse/experimental/eclipse/features/org.eclipse.sdk_3.3.2.R33x_r20071022-7M7J7C_Mu2gop0b_GAwplOBhyuKO$ cat feature.xml
<?xml version="1.0" encoding="UTF-8"?>
<feature
      id="org.eclipse.sdk"
      label="%featureName"
      version="3.3.2.R33x_r20071022-7M7J7C_Mu2gop0b_GAwplOBhyuKO"
      provider-name="%providerName"
      image="eclipse_update_120.jpg">

   <description>
      %description
   </description>

   <copyright>
      %copyright
   </copyright>

   <license url="%licenseURL">
      %license
   </license>

   <url>
      <update label="%updateSiteName" url="http://update.eclipse.org/updates/3.3"/>
      <discovery label="%updateSiteName" url="http://update.eclipse.org/updates/3.3"/>
      <discovery label="%secondaryUpdateSiteName" url="http://download.eclipse.org/releases/europa"/>
   </url>

   <includes
         id="org.eclipse.platform"
         version="3.3.2.R33x_v20071022-_19UEksF-G8Yc6bUv3Dz"/>

   <plugin
         id="org.eclipse.sdk"
         download-size="0"
         install-size="0"
         version="3.3.2.R33x_v20071022"/>

</feature>
gautham@ubuntu:~/eclipse/experimental/eclipse/features/org.eclipse.sdk_3.3.2.R33x_r20071022-7M7J7C_Mu2gop0b_GAwplOBhyuKO$  cd ../../

Now delete the jdt, pde, cvs and source features:

gautham@ubuntu:~/eclipse/experimental/eclipse$ ls features/
org.eclipse.cvs_1.0.1.R33x_r20070802-7C79_9_KKG-mDM9e3H5D
org.eclipse.cvs.source_1.0.1.R33x_r20070802-7C79_9_KKG-mDM9e3H5D
org.eclipse.jdt_3.3.1.r331_v20070629-7o7jE72EDlXAbqAcnbmyg1rf8RIL
org.eclipse.jdt.source_3.3.1.r331_v20070629-7o7jE72EDlXAbqAcnbmyg1rf8RIL
org.eclipse.pde_3.3.2.R33x_r20071022-7N7M4CYWLBCz-yHkMIuHN
org.eclipse.pde.source_3.3.2.R33x_r20071022-7N7M4CYWLBCz-yHkMIuHN
org.eclipse.platform_3.3.2.R33x_v20071022-_19UEksF-G8Yc6bUv3Dz
org.eclipse.platform.source_3.3.2.R33x_v20071022-_19UEksF-G8Yc6bUv3Dz
org.eclipse.rcp_3.3.2.R33x_r20071022-8y8eE9CEV3FspP8HJrY1M2dS
org.eclipse.rcp.source_3.3.2.R33x_r20071022-8y8eE9CEV3FspP8HJrY1M2dS
org.eclipse.sdk_3.3.2.R33x_r20071022-7M7J7C_Mu2gop0b_GAwplOBhyuKO
gautham@ubuntu:~/eclipse/experimental/eclipse$ cd features
gautham@ubuntu:~/eclipse/experimental/eclipse/features$ rm org.eclipse.jdt* org.eclipse.cvs* org.eclipse.pde*  org.eclipse*.source* -rf
gautham@ubuntu:~/eclipse/experimental/eclipse/features$ ls
org.eclipse.platform_3.3.2.R33x_v20071022-_19UEksF-G8Yc6bUv3Dz
org.eclipse.rcp_3.3.2.R33x_r20071022-8y8eE9CEV3FspP8HJrY1M2dS
org.eclipse.sdk_3.3.2.R33x_r20071022-7M7J7C_Mu2gop0b_GAwplOBhyuKO
gautham@ubuntu:~/eclipse/experimental/eclipse/features$ cd ..
gautham@ubuntu:~/eclipse/experimental/eclipse$ ./eclipse -clean -configuration ../config/minimal/ &

Go to: Help -> Software Updates -> Manage Configuration

You should not see any errors:


Link

Ok, now let’s see if we can delete the jdt, pde, cvs and source plugins and still run Eclipse without issues.

gautham@ubuntu:~/eclipse/experimental/eclipse$ cd plugins
gautham@ubuntu:~/eclipse/experimental/eclipse/plugins$ rm -rf org.eclipse.jdt* org.eclipse.pde* org.eclipse.cvs* org.eclipse*.source*
gautham@ubuntu:~/eclipse/experimental/eclipse/plugins$ cd ..
gautham@ubuntu:~/eclipse/experimental/eclipse$ ./eclipse -clean -configuration ../config/minimal/ &
[3] 11853

Eclipse displays an error saying there is some problem in restoring the workbench layout, but it comes up without any issues.


Link

Wow!

What’s the disk usage like?

gautham@ubuntu:~/eclipse/experimental/eclipse$ cd ../../
gautham@ubuntu:~/eclipse$ du -hs original/
159M    original/
gautham@ubuntu:~/eclipse$ du -hs experimental/
88M     experimental/

Although this is considerable, we can do a lot better than that. Let’s continue with:

Changing the product feature

Before continuing backup your experimental copy.

gautham@ubuntu:~/eclipse$ cp experimental/* backup/ -r
gautham@ubuntu:~/eclipse$

We can gain some additional space by making a small tweak right away.

  • Go to config.ini in config/minimal and change the product to org.eclipse.platform.ide.
gautham@ubuntu:~/eclipse$ cd experimental/config/minimal/

config.ini

...
# The product to run.  A given Eclipse configuration may contain many products.
# The product identified will supply the branding (window icons, title bar text) etc
# as well as define the default application to run.
eclipse.product=org.eclipse.platform.ide
...
gautham@ubuntu:~/eclipse/experimental/config/minimal$ cd ../../eclipse/features/
gautham@ubuntu:~/eclipse/experimental/eclipse/features$ rm -rf org.eclipse.sdk_3.3.2.R33x_r20071022-7M7J7C_Mu2gop0b_GAwplOBhyuKO/
gautham@ubuntu:~/eclipse/experimental/eclipse/features$ cd ../
gautham@ubuntu:~/eclipse/experimental/eclipse$ ./eclipse -clean -configuration ../config/minimal/ &

Go to: Help -> Software Updates -> Manage Configuration

Next let’s see Disabling unnecessary platform plugins

Disabling unnecessary platform plugins
Before continuing backup your experimental copy.

Our next target is the plugins directory. There are still a whole bunch of plugins there. But a majority of them are not required for Eclipse to come up with a UI.

First step is to remove other source files:

gautham@ubuntu:~/eclipse/experimental/eclipse/plugins$ rm -rf ./*source[._]*

But it is not possible to just delete other plug-ins. These plug-ins are referenced in the feature.xml of org.eclipse.platform….

So the way we tackle this is to understand the dependencies between plug-ins and carefully remove those plug-ins that are not quite required by the platform.

In order to learn the plug-in dependencies, let’s open the ‘experimental’ Eclipse as a Target Platform in the ‘original’ Eclipse.

Here are the steps:

  • Go to the original Eclipse install directory.
  • Start Eclipse with a new workspace, say ~/eclipseoriginal
gautham@ubuntu:~/eclipse/experimental/eclipse$ cd /home/gautham/eclipse/original/eclipse/
gautham@ubuntu:~/eclipse/original/eclipse$ ./eclipse &
  • Go to the Plug-in Development Perspective.
  • Go to Window -> Preferences -> Plug-in Development -> Target Platform. (Actually in Eclipse 3.3 you can just press Ctrl+3 and start typing ‘target platform’ and select Target Platform – Plug-in Development).
  • Set Location of the target platform to the ‘experimental’ Eclipse:

/home/gautham/eclipse/experimental/eclipse

  • Click on Reload.
  • Finally click OK.
  • Click on the Plug-ins view.
  • There is no hard and fast rule on which plug-in can be removed. One hint is to look for every plug-in on which no other plug-in depends and remove them from the plug-ins directory. (However note that this need not be the case for all plug-ins.) The way I find this out is to right-click on the plug-in and then click on Open Dependencies and then click on the ‘Show Callers’ button in the toolbar in Plug-in Dependencies view.

Here are the list of plug-ins that I removed:

com.jcraft.jsch
org.apache.ant
org.apache.ant.ui
org.apache.commons.el
org.apache.jasper
org.eclipse.core.boot
org.eclipse.core.databinding.beans
org.eclipse.core.filesystem.linux.x86 - Gives an error at the end but still works fine.
org.eclipse.core.resources.compatibility
org.eclipse.core.runtime.compatibility
org.eclipse.core.runtime.compatibility.registry
org.eclipse.debug.core
org.eclipse.debug.ui
org.eclipse.equinox.jsp.jasper
org.eclipse.equinox.jsp.jasper.registry
org.eclipse.help.webapp
org.eclipse.jsch.core
org.eclipse.jsch.ui
org.eclipse.ltk.ui.refactoring
org.eclipse.osgi.util
org.eclipse.platform.doc.isv
org.eclipse.platform.doc.user
org.eclipse.search
org.eclipse.team.cvs.core
org.eclipse.team.cvs.ssh
org.eclipse.team.cvs.ssh2
org.eclipse.team.cvs.ui
org.eclipse.tomcat
org.eclipse.ui.browser
org.eclipse.ui.console
org.eclipse.ui.externaltools
org.eclipse.ui.net
org.eclipse.ui.presentations.r21
org.eclipse.ui.workbench.compatibility
org.eclipse.update.core.linux
org.eclipse.update.scheduler
org.junit
org.junit4

If any of the above plugins are found in the file features/org.eclipse.platform… remove that entry. I am printing the contents of the feature.xml for your reference:

gautham@ubuntu:~/eclipse/experimental/eclipse/features/org.eclipse.platform_3.3.2.R33x_v20071022-_19UEksF-G8Yc6bUv3Dz$ cat feature.xml
<?xml version="1.0" encoding="UTF-8"?>
<feature
      id="org.eclipse.platform"
      label="%featureName"
      version="3.3.2.R33x_v20071022-_19UEksF-G8Yc6bUv3Dz"
      provider-name="%providerName"
      image="eclipse_update_120.jpg">

   <description>
      %description
   </description>

   <copyright>
      %copyright
   </copyright>

   <license url="%licenseURL">
      %license
   </license>

   <url>
      <update label="%updateSiteName" url="http://update.eclipse.org/updates/3.3"/>
      <discovery label="%updateSiteName" url="http://update.eclipse.org/updates/3.3"/>
      <discovery label="%secondaryUpdateSiteName" url="http://download.eclipse.org/releases/europa"/>
   </url>

   <includes
         id="org.eclipse.rcp"
         version="3.3.2.R33x_r20071022-8y8eE9CEV3FspP8HJrY1M2dS"/>

   <plugin
         id="javax.servlet"
         download-size="0"
         install-size="0"
         version="2.4.0.v200706111738"
         unpack="false"/>

   <plugin
         id="javax.servlet.jsp"
         download-size="0"
         install-size="0"
         version="2.0.0.v200706191603"
         unpack="false"/>

   <plugin
         id="org.apache.jasper"
         download-size="0"
         install-size="0"
         version="5.5.17.v200706111724"
         unpack="false"/>

   <plugin
         id="org.apache.commons.logging"
         download-size="0"
         install-size="0"
         version="1.0.4.v200706111724"
         unpack="false"/>

   <plugin
         id="org.apache.lucene"
         download-size="0"
         install-size="0"
         version="1.9.1.v200706111724"
         unpack="false"/>

   <plugin
         id="org.apache.lucene.analysis"
         download-size="0"
         install-size="0"
         version="1.9.1.v200706181610"
         unpack="false"/>

   <plugin
         id="org.eclipse.ant.core"
         download-size="0"
         install-size="0"
         version="3.1.200.v20070522"
         unpack="false"/>

   <plugin
         id="org.eclipse.compare"
         download-size="0"
         install-size="0"
         version="3.3.1.r33x_20070906"
         unpack="false"/>

   <plugin
         id="org.eclipse.core.filebuffers"
         download-size="0"
         install-size="0"
         version="3.3.1.r331_v20070829"
         unpack="false"/>

   <plugin
         id="org.eclipse.core.filesystem"
         download-size="0"
         install-size="0"
         version="1.1.0.v20070606"
         unpack="false"/>

   <plugin
         id="org.eclipse.core.net"
         download-size="0"
         install-size="0"
         version="1.0.1.r33x_20070709"
         unpack="false"/>

   <plugin
         id="org.eclipse.core.resources"
         download-size="0"
         install-size="0"
         version="3.3.0.v20070604"
         unpack="false"/>

   <plugin
         id="org.eclipse.osgi.services"
         download-size="0"
         install-size="0"
         version="3.1.200.v20070605"
         unpack="false"/>

   <plugin
         id="org.eclipse.core.variables"
         download-size="0"
         install-size="0"
         version="3.2.0.v20070426"
         unpack="false"/>

   <plugin
         id="org.eclipse.equinox.http.registry"
         download-size="0"
         install-size="0"
         version="1.0.0.v20070608"
         unpack="false"/>

   <plugin
         id="org.eclipse.equinox.http.jetty"
         download-size="0"
         install-size="0"
         version="1.0.1.R33x_v20070816"
         unpack="false"/>

   <plugin
         id="org.eclipse.equinox.http.servlet"
         download-size="0"
         install-size="0"
         version="1.0.1.R33x_v20070816"
         unpack="false"/>

   <plugin
         id="org.eclipse.help.base"
         download-size="0"
         install-size="0"
         version="3.3.1.v20070813_33x"
         unpack="false"/>

   <plugin
         id="org.eclipse.help.ui"
         download-size="0"
         install-size="0"
         version="3.3.1.v20070726_33x"
         unpack="false"/>

   <plugin
         id="org.eclipse.help.appserver"
         download-size="0"
         install-size="0"
         version="3.1.200.v20070510"
         unpack="false"/>

   <plugin
         id="org.eclipse.ltk.core.refactoring"
         download-size="0"
         install-size="0"
         version="3.3.1.r331_v20070829"
         unpack="false"/>

   <plugin
         id="org.eclipse.platform"
         download-size="0"
         install-size="0"
         version="3.3.2.R33x_v20071022"/>

   <plugin
         id="org.eclipse.team.core"
         download-size="0"
         install-size="0"
         version="3.3.1.r33x_20070807"
         unpack="false"/>

   <plugin
         id="org.eclipse.team.ui"
         download-size="0"
         install-size="0"
         version="3.3.1.r33x_20070730"
         unpack="false"/>

   <plugin
         id="org.eclipse.text"
         download-size="0"
         install-size="0"
         version="3.3.0.v20070606-0010"
         unpack="false"/>

   <plugin
         id="org.eclipse.jface.text"
         download-size="0"
         install-size="0"
         version="3.3.1.r331_v20070629"
         unpack="false"/>

   <plugin
         id="org.eclipse.jsch.core"
         download-size="0"
         install-size="0"
         version="1.0.0.I20070426"
         unpack="false"/>

   <plugin
         id="org.eclipse.ui.intro"
         download-size="0"
         install-size="0"
         version="3.2.101.v20070827_33x"
         unpack="false"/>

   <plugin
         id="org.eclipse.ui.intro.universal"
         download-size="0"
         install-size="0"
         version="3.2.100.v20070530A"/>

   <plugin
         id="org.eclipse.ui.cheatsheets"
         download-size="0"
         install-size="0"
         version="3.3.0.v20070507"
         unpack="false"/>

   <plugin
         id="org.eclipse.ui.navigator"
         download-size="0"
         install-size="0"
         version="3.3.2.M20071022-1600a"
         unpack="false"/>

   <plugin
         id="org.eclipse.ui.navigator.resources"
         download-size="0"
         install-size="0"
         version="3.3.1.M20070831-2000"
         unpack="false"/>

   <plugin
         id="org.eclipse.ui.workbench.texteditor"
         download-size="0"
         install-size="0"
         version="3.3.1.r331_v20070806"
         unpack="false"/>

   <plugin
         id="org.eclipse.ui.views"
         download-size="0"
         install-size="0"
         version="3.2.101.M20070910-0800b"
         unpack="false"/>

   <plugin
         id="org.eclipse.ui.editors"
         download-size="0"
         install-size="0"
         version="3.3.1.r331_v20070629"
         unpack="false"/>

   <plugin
         id="org.eclipse.ui.forms"
         download-size="0"
         install-size="0"
         version="3.3.0.v20070511"
         unpack="false"/>

   <plugin
         id="org.eclipse.ui.ide"
         download-size="0"
         install-size="0"
         version="3.3.1.M20070910-0800b"
         unpack="false"/>

   <plugin
         id="org.eclipse.ui.ide.application"
         download-size="0"
         install-size="0"
         version="1.0.0.I20070530-0100"
         unpack="false"/>

   <plugin
         id="org.eclipse.ui.win32"
         ws="win32"
         download-size="0"
         install-size="0"
         version="3.2.100.I20070319-0010"
         fragment="true"
         unpack="false"/>

   <plugin
         id="org.eclipse.update.core"
         download-size="0"
         install-size="0"
         version="3.2.101.R33x_v20070911"
         unpack="false"/>

   <plugin
         id="org.eclipse.update.ui"
         download-size="0"
         install-size="0"
         version="3.2.100.v20070615"
         unpack="false"/>

   <plugin
         id="org.eclipse.ui.workbench.compatibility"
         download-size="0"
         install-size="0"
         version="3.2.0.I20070319-0010"
         fragment="true"/>

   <plugin
         id="org.eclipse.core.resources.win32"
         os="win32"
         download-size="0"
         install-size="0"
         version="3.3.0.v20070226"
         fragment="true"
         unpack="false"/>

   <plugin
         id="org.eclipse.update.core.win32"
         os="win32"
         download-size="0"
         install-size="0"
         version="3.2.100.v20070615"
         fragment="true"
         unpack="false"/>

   <plugin
         id="org.eclipse.ui.views.properties.tabbed"
         download-size="0"
         install-size="0"
         version="3.3.1.M20070831-0800"
         unpack="false"/>

   <plugin
         id="org.mortbay.jetty"
         download-size="0"
         install-size="0"
         version="5.1.11.v200706111724"
         unpack="false"/>

</feature>
gautham@ubuntu:~/eclipse/experimental/eclipse/features/org.eclipse.platform_3.3.2.R33x_v20071022-_19UEksF-G8Yc6bUv3Dz$

Here is the list of plugins that remain

gautham@ubuntu:~/eclipse/experimental/eclipse/plugins$ ls
com.ibm.icu_3.6.1.v20070906.jar
javax.servlet_2.4.0.v200706111738.jar
javax.servlet.jsp_2.0.0.v200706191603.jar
org.apache.commons.logging_1.0.4.v200706111724.jar
org.apache.lucene_1.9.1.v200706111724.jar
org.apache.lucene.analysis_1.9.1.v200706181610.jar
org.eclipse.ant.core_3.1.200.v20070522.jar
org.eclipse.compare_3.3.1.r33x_20070906.jar
org.eclipse.core.commands_3.3.0.I20070605-0010.jar
org.eclipse.core.contenttype_3.2.100.v20070319.jar
org.eclipse.core.databinding_1.0.1.M20070822-0800.jar
org.eclipse.core.expressions_3.3.0.v20070606-0010.jar
org.eclipse.core.filebuffers_3.3.1.r331_v20070829.jar
org.eclipse.core.filesystem_1.1.0.v20070606.jar
org.eclipse.core.jobs_3.3.1.R33x_v20070709.jar
org.eclipse.core.net_1.0.1.r33x_20070709.jar
org.eclipse.core.resources_3.3.0.v20070604.jar
org.eclipse.core.runtime_3.3.100.v20070530.jar
org.eclipse.core.runtime.compatibility.auth_3.2.100.v20070502.jar
org.eclipse.core.variables_3.2.0.v20070426.jar
org.eclipse.equinox.app_1.0.1.R33x_v20070828.jar
org.eclipse.equinox.common_3.3.0.v20070426.jar
org.eclipse.equinox.http.jetty_1.0.1.R33x_v20070816.jar
org.eclipse.equinox.http.registry_1.0.0.v20070608.jar
org.eclipse.equinox.http.servlet_1.0.1.R33x_v20070816.jar
org.eclipse.equinox.launcher_1.0.1.R33x_v20070828.jar
org.eclipse.equinox.launcher.gtk.linux.x86_1.0.2.R331_v20071019
org.eclipse.equinox.preferences_3.2.100.v20070522.jar
org.eclipse.equinox.registry_3.3.1.R33x_v20070802.jar
org.eclipse.help_3.3.1.v20070726_33x.jar
org.eclipse.help.appserver_3.1.200.v20070510.jar
org.eclipse.help.base_3.3.1.v20070813_33x.jar
org.eclipse.help.ui_3.3.1.v20070726_33x.jar
org.eclipse.jface_3.3.1.M20070910-0800b.jar
org.eclipse.jface.databinding_1.1.1.M20070910-0800b.jar
org.eclipse.jface.text_3.3.1.r331_v20070629.jar
org.eclipse.ltk.core.refactoring_3.3.1.r331_v20070829.jar
org.eclipse.osgi_3.3.1.R33x_v20070828.jar
org.eclipse.osgi.services_3.1.200.v20070605.jar
org.eclipse.platform_3.3.2.R33x_v20071022
org.eclipse.rcp_3.2.0.v20070612.jar
org.eclipse.sdk_3.3.2.R33x_v20071022
org.eclipse.swt_3.3.2.v3347.jar
org.eclipse.swt.gtk.linux.x86_3.3.2.v3347.jar
org.eclipse.team.core_3.3.1.r33x_20070807.jar
org.eclipse.team.ui_3.3.1.r33x_20070730.jar
org.eclipse.text_3.3.0.v20070606-0010.jar
org.eclipse.ui_3.3.1.M20070910-0800b.jar
org.eclipse.ui.cheatsheets_3.3.0.v20070507.jar
org.eclipse.ui.editors_3.3.1.r331_v20070629.jar
org.eclipse.ui.forms_3.3.0.v20070511.jar
org.eclipse.ui.ide_3.3.1.M20070910-0800b.jar
org.eclipse.ui.ide.application_1.0.0.I20070530-0100.jar
org.eclipse.ui.intro_3.2.101.v20070827_33x.jar
org.eclipse.ui.intro.universal_3.2.100.v20070530A
org.eclipse.ui.navigator_3.3.2.M20071022-1600a.jar
org.eclipse.ui.navigator.resources_3.3.1.M20070831-2000.jar
org.eclipse.ui.views_3.2.101.M20070910-0800b.jar
org.eclipse.ui.views.properties.tabbed_3.3.1.M20070831-0800.jar
org.eclipse.ui.workbench_3.3.1.M20070921-1200.jar
org.eclipse.ui.workbench.texteditor_3.3.1.r331_v20070806.jar
org.eclipse.update.configurator_3.2.101.R33x_v20070810.jar
org.eclipse.update.core_3.2.101.R33x_v20070911.jar
org.eclipse.update.ui_3.2.100.v20070615.jar
org.mortbay.jetty_5.1.11.v200706111724.jar
gautham@ubuntu:~/eclipse/experimental/eclipse/plugins$

What is the disk usage like?

gautham@ubuntu:~/eclipse$ du -hs experimental/
33M     experimental/

This is how it looks:

Link

Next we examine the ‘experimental’ Eclipse via the ‘original’ Eclipse.

Examining the experimental Eclipse

Let us start our ‘experimental’ Eclipse from within the ‘original’ Eclipse.

gautham@ubuntu:~$ cd eclipse/original/eclipse/
gautham@ubuntu:~/eclipse/original/eclipse$ ./eclipse &
[1] 7817

Once we have set the Target Platform, let’s try to run the ‘experimental’ Eclipse.

  • Go to Run -> Open Run Dialog.
  • Right click ‘Eclipse Application’ -> Select New.
  • Give the launch configuration a name like: Experimental Eclipse.

  • Click Apply and then Run.

You should see your ‘experimental’ Eclipse installation coming up without any issues.

This is how it looks:

Link

As you can see in the screenshot above, there are 2 instances of Eclipse running. The host instance and the target.

  • Exit the target instance.

Let’s now tweak some of the configurations.

  • Open the Run Dialog as before and append the following in Arguments -> Program Arguments:

-clean -debug -consolelog

  • Click Apply and Run.

The host instance would show up some log in the console as shown in the screenshot below.


Link