Extending JDT For Java Like Languages
The Java Development tools provide a high quality development experience when working with pure Java code. However, Java-like languages (languages such as Groovy and Scala that compile to Java byte code and run on the JVM) are not supported directly in JDT. The rising popularity of these languages means that there is a push to provide the same quality of tool support for them as is available for Java. Furthermore, there is an expectation that tooling can support mixed langugage code-bases.
Currently, there are a patchwork of solutions for JDT's lack of extensibility, but there is a large amount of duplication between solutions and some solutions are incompatible.
On this page, we will sketch out the general requirements for tooling for these kinds of languages. There is a large amount of overlap of required functionality between all these languages, but there is also some that is specific to individual languages. There is no expectation that all of the suggestions on this page will be adopted into JDT, but there is a hope that some of these suggestions can be distilled down into a viable patch that can considered for inclusion in future versions of JDT.
There are currently several Java-like languages that use various methods for providing Eclipse-based tools that extend JDT:
- AspectJ AJDT
- Groovy Groovy-Eclipse
- Scala ScalaIDE
- Object Teams Object Teams Development Tooling
- JavaFX JavaFX Eclipse plugin
- Gosu 
These tools either use AOP to weave into JDT in order to open up extensibility, or they ship with a feature patch on JDT core.
Over time, there is an expectation that this list will be growing as there is a push for stronger tool support for more JVM languages.
General areas of extensions
TODO: What are the general pieces that require extensibility?
TODO: Describe existing solutions and catalogue extensibility points, eg- aspects and patches
Open issues against JDT by stakeholder
JDT enhancement ticket
- JDT support for java-like languages https://bugs.eclipse.org/bugs/show_bug.cgi?id=36939
- Change to JUnit creation wizard: https://bugs.eclipse.org/bugs/show_bug.cgi?id=312204