Java News from Thursday, June 24, 2004

Sun has posted an early draft review of Java Specification Request 243: Java™ Data Objects 2.0 - An Extension to the JDO specification. Someone more experienced with JDO than me will have to read this and explain what's changed since JDO 1.0, but according to the original JSR:

Features to be added to the JDO specification include:

Relational Database Mapping:
The programmer's view of the datastore hides the details of the underlying datastore, which is attractive but leads to some issues. Different JDO vendors have implemented mappings to relational databases differently, and the mappings are not portable among vendors. This JSR will address a common mapping format to allow a higher degree of portability of applications.
Disconnected operation:
A primary use-case for JDO is in a middle tier of a multi-tier architecture. Rich clients (http clients running applets, web services clients, and ORB clients) may wish to extract a subset of values from the database in a structured (domain model) format, and update this information. Once updated, the information is sent back to a middle tier, where the changes are applied to the datastore. This JSR will address the APIs in the middle tier to facilitate this use-case.
Broaden the range of implementations:
Certain JDO 1.0 specification restrictions reduce the acceptance of the API by potential JDO vendors. Limitations include a requirement for binary compatibility to the Reference Enhancement contract and a requirement that only classes, not interfaces, can be persistent. This JSR will address these limitations. Alignment with J2EE:
While the JDO technology is suitable as a component in the J2EE architecture, certain services are required from the server that are not currently standardized. Part of this JSR will recommend standard APIs to provide these services. Part of this alignment will specify the portable behavior of transaction completion in the web and ejb containers.
Extensions to JDO queries:
JDOQL provides a standard way to access persistent instances based on values and relationships, but is limited in what can be returned as the result. This JSR will extend the range of return values to include projected fields, collections of instances identified in navigational expressions, and aggregate data such as MIN, MAX, SUM, AVG, and COUNT. Additional methods will be defined to perform string manipulations in filters.
The JDO object model does not specify bidirectional or composition relationships among object classes. This JSR will consider issues regarding managed bidirectional relationships and composition relationships including cascade delete semantics.
Maximize JDO backward compatibility:
Many applications and deployments have significant investments in the JDO technology. Any improvements to the API will attempt to maintain backward compatibility to all previous JDO specifications.

Comments are due by August 7.

Sun has posted an early draft review of JSR 209 Advanced Graphics and User Interface Optional Package for the J2ME Platform. "The Advanced Graphics and User Interface (AGUI) Optional Package migrates many of the core APIs for advanced graphics and user interface facilities from the J2SE™ platform to the J2ME™ platform. These facilities include much of the functionality from Swing, Java 2D Graphics and Imaging, Image I/O, and the Input Method Framework. Applications can use this functionality to develop advanced applications for consumer devices such as mobile terminals and home devices." There's some interest in implementing this on top of native toolkits instead of Swing's traditional Java-based rendering. Comments are due by August 7.

Donato Ferrante has posted the Javac Compiler Helper 0.2.0, a free-as-in-speech (GPL) wrapper for javac that automatically imports all of the classes needed to correctly compile a program without explicit import statements.

Stefan Reich has posted beta 3 of SuperVersion, a single user version control system suitable for small projects, as opposed to multiuser, server-based systems like CVS and subversion. This beta reduces the disk footprint of the repository and adds intra-line diff coloring.