Skip to content
hendrikebbers edited this page Jan 30, 2015 · 2 revisions

JSR-377 Desktop|Embedded API

1. Goals

The goal of this specification is to define an API for common behavior shared by many desktop applications. Most applications require the following features

  • dependency injection (most likely via JSR-330).

  • 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).

There are a good number of framework and platforms that deliver these features in their own way. Deciding a standard API for all of them will make it easier to get started with new projects and fix existing ones. Also, with the rise of Embedded Java and IoT it makes sense to share codebases between desktop and embedded projects.

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 UI thread abstraction has been already proven true by some of the frameworks mentioned as source materials.

The set of APIs proposed by this JSR will sit on top of any UI toolkit without requiring a bridge from a toolkit in particular; that is, none of the target UI toolkits (Swing, JavaFX, SWT) need to implement new APIs. If for some reason a bridge is required it will be provided from the RI side.

This JSR should be released as a standalone one, without ties to a particular JDK release.

2. How to Contribute

The JSR-377 Specification and API are licensed under the Apache Software License V2. Members of the JSR377 Expert Group can make contributions directly. Expert Group membership requires some paper work. You’ll have to create an account on jcp.org and sign the Java Specification Agreement (JSPA). You’ll probably have to ask your employeer an agreement to contribute (Exhibit B). Then ask the spec lead to be part of the JSR.

We also accept non official contributions as any other Open Source project using ASL2. If you don’t feel like signing JCP stuff, you can still participate to discussion on the Mailing list or our issue tracker. You can even send pull request on the project. The only difference will be that you won’t be mentioned as a member of the expert group on the JCP website.

TL;DR. You can start contributing with no paper work. Stay anonymous during all the project or decide to officially join the Expert Group at any time before the end of the JSR. The only constraint is that we’ll ask you to join the the Expert Group if you start making big contributions, to avoid any future IP issues.

Clone this wiki locally