Java SE to get API for desktop and embedded applications
The new API for Java SE will define a specification for common issues and behaviours shared between most desktop and embedded applications.
The Java Executive Committee has approved a desktop and embedded application API in Java SE. First submitted in December 2014, Java Specification Request 377 will standardise common behaviour and issues found in desktop and embedded applications.
Expert group member Hedrik Ebbers has commented that the API will be influenced by frameworks like Griffon and DataFX.
The JSR outlines the following goals:
- dependency injection via JSR330
- common application structure
- application life-cycle
- localized resources
- resource injection
- localized configuration
- decouple state from UI (binding)
- persistence session state (preferences)
- action management
- component life-cycle
- light-weight event bus
- honor threading concerns (specific to UI toolkit)
- application extensibility via plugins (implies modularity)
These features are already provided by various existing frameworks and platforms. However the authors of JSR 377 claim that one standard API for all features will “make it easier to get started with new projects and fix existing ones.”
A driving goal behind the JSR is to provide a good abstraction over common needs of an application regardless of the toolkit of choice. For example this JSR must deliver an abstraction on how to access the UI thread (which ever it may be) and a mechanism for initializing and managing a View independent of the widget set.
— Bruno Borges (@brunoborges) February 10, 2015
The authors explain that the set of APIs will sit on top of any UI toolkit without requiring a bridge from a toolkit (meaning that target UI toolkits like Swing, JavaFX and SWT will not have to implement new APIs).
“Promising” for the IoT market
Expert group member Werner Keil told JAXenter “JSR 377 is a viable complement to the web-only MVC JSR (371) for Java EE for Desktop Rich UI. And at least on Java SE Embedded it is also promising for a rapidly increasing market for tablets or other small/embedded devices and the Internet of Things.”
Keil, who also sits on the Java Executive Committee, explained that JavaFX offers some equivalents to Microsoft’s WPF (Windows Presentation Foundation), especially data binding or a markup language similar to XAML, but it does not cover all of it to the same extent.
“JSR 377 aims to bridge that gap in more areas. One noteworthy bridge would be bringing @Inject or even SE compliant features of CDI (JSR 365, CDI 2 plans to accomplish that) to Rich Clients. Tooling and IDE support by some leading vendors was mentioned as a possible caveat that the EG [expert group] hopes to address by reaching out to leading platforms (and some are known to be joining the EG, soon, too).”
A step forward for embedded Java
IoT developers should be particularly interested in JSR 377’s ability to let them share codebases between desktop and embedded projects. This latest change to Java SE is part of a continued effort by Oracle to secure Java as a key language in IoT.
SEE ALSO: Running Java on the Raspberry Pi