This document discusses the goals of a new JSR for desktop and embedded application APIs. It aims to target both desktop and embedded environments, support multiple UI toolkits, and leverage existing JSRs for dependency injection and events. The proposed API would provide core features like application lifecycle, localization, configuration, MVC artifacts, and extension points via plugins. It is supported by several Java champions and community members.
3. PREVIOUS ATTEMPTS
JSR 193 – Client Side Container
JSR 296 – Swing Application Framework
JSR 295 – Beans Binding
JSR 296 had the following goals
application life cycle
localized resources (and injection)
persisted session state
loosely coupled actions
targeted only Swing for obvious reasons
4. CURRENT STATE
Several UI toolkits to choose from:
Swing, JavaFX, SWT
Apache Pivot, Lanterna, Qt
Several frameworks to choose from:
Eclipse 4 Platform, NetBeans
Griffon
DataFX, JacpFX, MvvmFX, JVx
and more …
5. FRAMEWORKS
Many of the listed frameworks offer the following capabilities
implemented in different ways:
application life cycle
localized resources (and injection)
persisted session state
loosely coupled actions
dependency injection
event system
centralized error management
extension points via plugins
6. TARGET ENVIRONMENT
All of the listed frameworks support the Desktop as target
environment.
Only a few can be used in an Embedded environment (where
Java SE is supported).
Embedded Java UI applications can be built as applications
that target the Desktop; share codebase even.
7. GOALS OF THIS JSR
Target Desktop and Embedded environments
Support several toolkits
Be an standalone JSR, i.e, no need to include in JDK
Leverage existing JSRs:
JSR 330 – Dependency Injection
JSR 365 – Event bus (from CDI 2.0)
Java Config (?)
8. CORE FEATURES
application life cycle
localized resources (and injection)
configuration
MVC artifacts
loosely coupled actions
dependency injection
event system
centralized error management
extension points via plugins
9. POSSIBLE ADDITIONS
Runtime:
persisted session state
artifact introspection API
Buildtime:
test support
deployment
10. SUPPORTERS
Java Champions such as
Johan Voss, Alan Williamson, Lars Vogel,
Jim Weaver, Gerrit Grunwald
Well known Java community members
Sven Reimers, Hendrik Ebbers,
Anatole Tresch, Sharat Chander,
Raj Mahendra (JUG Hyderabad)
Mohamed Taman (Morocco JUG)
Vendors
BSI (interested)