JSR 377 is go

JSR 377's improvement to Java SE will allow IoT devs to share codebases between embedded and desktop projects. Microchip image via Shutterstock

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.

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

Following the launch of Java ME 8 last year, Oracle launched a concerted effort with Imagination Technologies to bring Java to MIPS chip architecture and enhance Java for PowerVR graphics.