Add the ability to write plugins using jruby or groovy.

From Eclipsepedia

Jump to: navigation, search

This project is part of Google Summer of Code 2007, project link is here.

Student: Anton Arhipov

Blog: http://arhipov.blogspot.com

test

SVN repo at SF.net: at eclipse-incub

Contents

About

Scripting language like Groovy (or JRuby) is an ideal choice for Java developer to do quick prototyping. The biggest benefit of Eclipse support for Groovy plug-in development is that while changing the plug-in on-the-fly there's no need to start a separate Eclipse instance or restart the IDE when something was changed in the code. This would rapidly improve the speed of lightweight plug-in development.

This project aims to add ability to write plugins in JVM-based scripting language, like Groovy and JRuby. But it could be a starting point for any other JVM scripting language, like BeanShell or Jython.

Legend

Glass.gif Needs some investigation
Progress.gif Patch in progress
Ok green.gif Bug fixed / Feature added


Repository

SVN repo at SF.net: at eclipse-incub

Status/Timeline

Ok green.gif Implementation of runtime engine to run the scripts. javax.scripting API is in use for this purpose.

The engine, codename yummy, isn't very advanced piece but it is sufficient to run a Groovy/JRuby script.

Ok green.gif How to attach an action, that is implemented using a scripting language (Groovy or JRuby), to an eclipse button or menu. All the extensions will be described just if it would be a normal eclipse plug-in, instead, the implementing class will be specified using using custom syntax line referring to a script location.

Progress.gif How the dependencies (OSGi bundles), that are used by a script, will be handled by the engine.

The dependencies for any specific language PDE implementation are:

  • <language>.jar, e.g. groovy-all.jar
  • <language>-engine.jar, e.g. groovy-engine.jar
  • yummy.jar, i.e. the plug-in for any specific language will use the engine to run the scripts executed by <language>-engine.jar at the end. The brand new scripted plug-in will have to use yummy to enable scripting support.

The dependencies will be provided via "add nature" functionality.

Other dependencies should be attached with the scriptable plug-in, which will be developed by a user.

Glass.gif Plug-In Architecture Notes. When starting the "scriptable" plug-in, the extensions defined in plugin.xml should be processed by a custom handler, that will override the standardized extension processing.

Deliverables

The main results to be reached:

- An Eclipse extension/plug-in to (re)load (Groovy/JRuby) scripts on the fly.

- Command line console support to modify and change the program behavior interactively. This could look like in case Apache Derby ij plug-in