Today, the Eclipse Foundation released their ninth annual release train, Juno, bringing together the releases of 72 projects along with several that are new to both Eclipse and the train. The image on the right, created by Holger Voormann, shows the growth of the codebase over the past eight years.
The biggest single change for this year's release is the adoption of the Eclipse 4.x platform. Work on the Eclipse 4 platform begun under the E4 codeword three years prior, and both Eclipse 4.0 and Eclipse 4.1 were released for the Helios and Indigo release trains respectively. As previously covered by InfoQ, there was a go/no-go decision earlier this year to debate whether Eclipse 4.2 would be the default platform for the Eclipse simultaneous release platform or not; that has now been resolved and the Eclipse 3.x stream is officially in maintenance mode. (There will be one final release of the Eclipse 3.8 platform as part of Juno; however, it will not be made the default as part of any of the pre-packaged combinations.)
Eclipse 4 changes the way in which services are accessed by plugin code. In Eclipse 2 and Eclipse 3, singletons and static methods provided access to services. With Eclipse 4, a dependency injection model is used, and components are instantiated and then wired into instance variables, using the JSR 330 annotations. The other change is the way the UI is created – instead of being constructed in code, it is instantiated from a model (serialised to disk with EMF). This allows an application's views to be constructed from a model, instead of problematic code. Eclipse Equinox also brings the new OSGi R5 reference implementation, as covered by InfoQ previously:
"Each year the commitment and dedication of the Eclipse committers demonstrate that Eclipse is a great example of open source distributed development that ships on a predictable schedule, and scales to tens of millions of lines of code," explains Mike Milinkovich, Executive Director of the Eclipse Foundation. "I am especially happy Juno is based on the Eclipse 4.2 platform, thus providing a stable platform for continued innovation in the Eclipse community."
Another significant change in the run-up to Juno was the migration of almost all of the Eclipse projects from CVS and SVN to Git. In the year that Eclipse Subversive (SVN) finally makes its 1.0.0 release, most of the projects at Eclipse have moved to Git. In fact, there's a breakdown of all projects in Juno along with their repository choices. The Git repositories can be viewed at git.eclipse.org, and they are also integrated with Gerrit, a git-based review tool. Many projects have converted to Git specifically for the benefits that Gerrit provies.
Eclipse Juno brings revised versions of many existing projects, and adds several new ones to the mix. The new projects include:
- BPEL Designer, a tool for defining Business Process Engineering Language documents
- Xtend, a statically typed object-oriented language with the conciseness of Scala and the backward compatibility of Java
- Virgo, an OSGi runtime container derived from the Spring Dynamic Modules project
- Eclipse Code Recommenders, which provides feedback in the form of a sample set of snippets using APIs
- Mylyn Intent, which allows documentation to be authored and transformed using Eclipse
- Orion, which is a browser-hosted IDE for web technologies
- Koneki project, which includes a Lua Development Toolset
As well as the new projects joining the train, the stalwarts of the Java Development Toolset and C Development Toolset, along with key technologies like Mylyn and BIRT are present. These each have a new-and-noteworthy document, such as the Java 7 support for JDT.
The C Development Toolset includes a revised version of codan, a static checker for C. More information is available at the static analysis page. Adding to the CDT is the Linux Tools project, which reached 1.0.0 with the Juno release. This extends CDT support with standard Linux processes, such as GNU autoconf, valgrind, man page viewers and rpm support.
Eclipse Juno can be downloaded as one of several standard packages, which are available from the Eclipse Juno page.