e(fx)clipse - JavaFX tooling and runtime for Eclipse

The project has been created.

e(fx)clipse - JavaFX tooling and runtime for Eclipse

The e(fx)clipse project is a proposed open source project under the Technology.

This proposal is in the Project Proposal Phase (as defined in the Eclipse Development Process) and is written to declare its intent and scope. We solicit additional participation and input from the Eclipse community. Please send all feedback to the Eclipse Proposals Forum.

Background

JavaFX is the new UI and graphics toolkit developed by Oracle and the official successor of Swing. Since Java7 Update 7 it has been part of the JRE/JDK distributions and the entire source code is expected to be open sourced by February 2013 as part of the OpenJDK.

JavaFX is designed to run not only on desktop systems but also on low-cost hardware like the Rasperry PI and Beagleboard and plays an important role in Oracle "Internet of things" vision.

From a developer perspective, developing JavaFX applications involves the following technologies:

  • Java for the logic
  • CSS for the styling (optional)
  • FXML for the UI (optional)

Scope

Tooling

Developers intending to develop a JavaFX application will most likely deal with three technologies: Java, CSS and FXML.

To simplify development, the project provides:

  • Java: wizards and templates for projects
  • CSS: A specialized editor that understands the JavaFX specific CSS properties
  • FXML: A specialized XML editor providing autocompletion based on information gathered from JDT

To help developers to build and deploy their applications, JavaFX provides specialized ant-tasks that aid the developer when packaging an application as an installable unit (msi, rpm, dmg). e(fx)clipse tooling provides a specialized editor to help the developer configure and drive the build process.

For developers who do not want to define their UI in XML, the project provides an alternative format named FXGraph that looks similar to JSON. More information about the format can be found at http://efxclipse.org/trac/wiki/FXGraph

Developers who are developing JavaFX applications on top of OSGi will most likely use PDE as their development tool. Because JavaFX is not on the bootclasspath, PDE needs to be tweaked in order to allow a decent development experience. Besides the low-level integration into PDE, the project also provides wizards to easily bootstrap applications.

Runtime

Equinox

JavaFX is not on the bootclasspath and not JSRed until Java9. So Equinox will not know about it out of the box. e(fx)clipse provides an extension for equinox to fill this gap.

Beside this low level support, the project provides all sorts of utilities, for example easened integration of JavaFX components when run inside OSGi.

Eclipse Databinding

Eclipse Databinding is a technology to bind domain objects to UI-Controls. JavaFX has a custom property and binding system. e(fx)clipse provides adapters for the JavaFX property system so that default Eclipse databinding can be used.

EMF

Developers using EMF to model their domain models often use code generated out of their Ecore definition. This allows them to setup structured controls like List, Table and Tree with very few lines of code. The project provides integration for EMF edit so that developers get the same benefits they do when using EMF in conjunction with SWT.

e4 & Eclipse 4 Application Platform

The Eclipse 4 Application Platform has been designed from day one to be widget toolkit neutral. The e(fx)clipse project provides so called JavaFX-renderers, allowing developers to leverage all parts of the Eclipse 4 Application Platform (Dependency Injection, Application Model, Command-Framework, .....) without using SWT.

Description

e(fx)clipse is a project currently hosted at github (https://github.com/tomsontom/e-fx-clipse), providing tooling and runtime components that help developers to create JavaFX applications.

Since its creation in July 2011, the project has seen sixteen releases and has gained an active user base that has started adopting different parts of the project. The project maintains a public bug-tracker (http://efxclipse.org/trac) and a discussion forum (https://groups.google.com/forum/#!forum/efxclipse).

Why Eclipse?

Like outlined in the initial paragraphs JavaFX is THE next UI-Toolkit for Java and it is expected that many people will develop applications with it in the near future.

To stay relevant in future the Eclipse IDE has to provide top quality support for JavaFX.

The project provides runtime components who can be adopted by other Eclipse.org projects (like Riena, Scout) and because the Eclipse Process ensures IP code the adoption in commercial products is going to be much easier.

Initial Contribution

The current code is hosted at github and provides an implementation of all mentionned editors, wizards and runtime items.

It is structured in OSGi-Bundles and split in 3 categories:

  • tooling bundles: starting with at.bestsolution.efxclipse.tooling
  • runtime bundles: starting with at.bestsolution.efxclipse.runtime
  • sample bundles: starting with at.bestsolution.efxclipse.runtime.demo and at.bestsolution.efxclipse.runtime.examples

Legal Issues

There are some media files (images, videos) who are released under LGPL and need to be removed and replaced by EPL compatible ones.

Committers

The following individuals are proposed as initial committers to the project:

Tom Schindl, BestSolution.at Systemhaus GmbH
Tom is the project lead and main architect
Chrisoph Caks, BestSolution.at Systemhaus GmbH
Christoph is a software developer at BestSolution.at. He's the main author of the CSS-Editor infrastructure and will continue to maintain it.
Martin Blühweis, BestSolution.at Systemhaus GmbH
Martin is a software developer at BestSolution.at and implemented e.g. the build-Editor.
Torsten Sommer, TESIS DYNAware
Torsten is a software developer at TESIS DYNAware and implemented the EMF-Edit support. He's responsible for maintaining and extending it

Mentors

The following Architecture Council members will mentor this project:

  • Tom Schindl
  • Chris Aniszczyk

Interested Parties

The following individuals, organisations, companies and projects have expressed interest in this project:

  • BestSolution.at GmbH - Tom Schindl
  • TESIS DYNAware - Uwe Sander
  • XETICS GmbH - Ralf Muckenhirn
  • BSI AG / Scout - Matthias Zimmermann
  • compeople / Riena - Christian Campo
  • Software Competence Center Hagenberg GmbH - Mario Winterer
  • Sopot Cela
  • Jan Köhnlein
  • NatTable - Dirk Fauth
  • Miranda Technologies - Ronald Timbol
  • Cayros Software - Juan Felipe Caro
  • Siemens AG - Kai Tödter
  • Oracle - Donald Smith

Project Scheduling

  • Creation Review - Febuary 2013
  • 0.9.0 - Initial release at Eclipse.org (Q1/2 2013)
  • 0.9.1 - Service release with Java7 and Java8 support (Q2 - together with Kepler)
  • 0.9.2 - Service release (Q3 - together with Java8)

Changes to this Document

Date Change
22-01-2013 Document created
29-01-2013 Added more interested parties