Its really exciting to witness how eclipse maturing every year and providing wider set of tools.

Eclipse API helped Imaginea build diverse set of tools for heterogeneous domains from Database, BPM , Rule Engine, Mashup to Service Component Architecture.

Now here is e4 to satisfy the growing demand from the clients for web-enabled eclipse platforms in the domains of mashup and soa.

e4 in a nutshell not only relieves us from IDE-ness and typical desktop-centric experiences; but at the same time simplifies UI-development (xml model based widget declaration), supports all types of dynamic languages and RIA (no longer just a Java-rich-client) and finally dynamic deployment on clouds !

e4’s mantra is – produce, bind and consume ‘Eclipse Application Services’ . In fact, this is how any present-day-application is perceived in a world, turning fast into a Service-only Delivery-channel !

EMF was already REST-compliant and Equinox the perfect OSGi guy !

So what remains is re-organizing eclipse sdk frameworks into well defined RESTful interfaces to make eclipse a set of On-demand offerings !

I hope it will unveil the eclipse super-force and be the strongest weapon in developers armory. e4 will provide much-needed uplift for Eclipse as a common platform for a set of diverse frameworks.

Now lets quickly glance through the compelling features :

(1) XWT (XML Windows Toolkit)  – quickfire design and customization with consistent rendering across platforms and browsers.
So you define your ui-controls (SWT/FLEX/AIR etc.) in ecore model !
e4 will take care of the rest i.e. – Builders will build the controls, bind widgets to layouts and finally javascript-event handlers will be generated to manipulate EMF models (the same way html dom is manipulated in web browser)
Well sounds similar to GWT !  But its more comforting to hear that we handle EMF model at the end of the day not html DOM

XWT will ensure Eclipse is no longer a desktop blackbox rather a web-platform to weave heterogeneous widgets (swt/awt) and styles through dynamic languages on-the-fly!

(2) CSS support and seamless integration of java-script i.e. support/integrate applications written in java-scripts by compiling them using e4 API dynamically.
e4 provides a Javascript Framework – a standalone bundle in OSGi instance.
JavaScript bundles communicates thru JSON manifest files !

(2) PAAS (Platform As Application Service) – what makes e4 so special is its service-oriented programming model based on OSGi.  Now plug-ins can be reused outside a specific enviromnet (a limitation in current desktop editions).
No more tight-coupling with Platform, WorkBench, IDE, ResourcesPlugin and JavaCore API.

In current eclipse architecture, only OSGi Sevice API and Extension Registry API use – ‘Sevice Programming Model’ – with service locator pattern.

Now in e4 incarnation, what sounds most promising is the SOA implementation for all types of eclipse frameworks with the full-fledged support for ‘Dependency Injection’
– that means – if I am a client of Widget-service, I don’t need to be aware of the service producer and service broker. Just simply specify annotations (injection points) widget-services can be accessed and consumed !

So instead of loading the IDE jars, one can simply depend on widget api in client code. Simply put, an eclipse project explorer / language editor can be integrated as a stand-alone entity with a swing/gwt/java script (one of several possibilities) client without depending on the whole eclipse codebase.

Here is a nice blog to get your hand dirty : <a href=”http://www.vogella.de/blog/2009/08/12/eclipse-e4/”>http://www.vogella.de/blog/2009/08/12/eclipse-e4/</a>

e4 is going to be the single most important thing in an eclipse developer’s life.

Well ! Lets all try out e4 today to unleash the power of eclipse !

<strong>Reference :</strong>
<a href=”http://live.eclipse.org/node/724″>http://live.eclipse.org/node/724</a>
<a href=”http://www.eclipse.org/e4/resources/e4-whitepaper-20090729.pdf”>http://www.eclipse.org/e4/resources/e4-whitepaper-20090729.pdf</a>
<a href=”http://wiki.eclipse.org/E4″>http://wiki.eclipse.org/E4</a>
<a href=”http://www.eclipse.org/resources/?sort=date&category=e4″>http://www.eclipse.org/resources/?sort=date&category=e4</a>
<a href=”http://live.eclipse.org/node/782″>http://live.eclipse.org/node/782</a>
<a href=”http://live.eclipse.org/node/782″>http://live.eclipse.org/node/782</a>
<a href=”http://live.eclipse.org/node/791″>http://live.eclipse.org/node/791</a>