Notice: this Wiki will be going read only early in 2024 and edits will no longer be possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.
E4/JavaScript
Contents
Introduction
One of the goals of e4 is to provide support for writing plugins in other languages - this page is the home of the effort to use JavaScript to write bundles in Eclipse. There are a number of excellent JavaScript runtimes made available by the browsers however as Eclipse in its current form is Java-based are initially targetting Rhino.
Development Resources
Development is currently being done in the E4 incubator in the "languages" sub-component.
Host: dev.eclipse.org Repository Path: /cvsroot/ Project Path: e4/org.eclipse.e4.languages/bundles and e4/org.eclipse.e4.languages/test
The relevant projects are:
(bundles) -org.eclipse.e4.javascript -org.eclipse.e4.javascript.registry
(tests) -org.eclipse.e4.javascript.test -org.eclipse.e4.javascript.registry.test
Current Work
JavaScript Bundles
Eclipse has been very successful in its use of OSGi as a modularity and deployment technology for packaging Java classes and related resources. The work we're doing in this space aims to provide a similar clean and consistent integration for JavaScript both for working with existing Java resources as well as providing a similar dependency resolution and lifecycle management story for JavaScript components.
The org.eclipse.equinox.e4.javascript bundle contains an OSGi inspired framework suitable for resolving and running JavaScript bundles that can call out to and are callable from the (java) Bundle that houses the script in the OSGi framework. One of the key classes JSFramework provides the means to install bundles and in general inspect the state of the system. Another class JSBundle allow you to observe and manage the state of an individual bundle. Many of the language level concepts in Java do not map to JavaScript however many of the meta concerns of a component system so where possible the JavaScript framework tries to leverage OSGi concepts.