Find JSRs
Submit this Search

Ad Banner

JSRs: Java Specification Requests
JSR 12: JavaTM Data Objects (JDO) Specification

Original Java Specification Request (JSR)

Identification | Request | Contributions

Section 1: Identification

The primary contact for this submission is:

Craig Russell
Sun Microsystems, Inc.
901 San Antonio Road UMPK16-304, Palo Alto, CA 94303 USA
phone: +1 650 786-7819

The contact information for the other companies who endorse this JSR is:

Bernard Normier
IONA Technologies Inc.
60 Aberdeen Ave. Cambridge, MA 02138 USA
phone: +1 617 949 4122

Soumitro Tagore
Informix Corporation
300 Lakeside Drive, Suite 2700, Oakland, CA 94612 USA
phone: +1 510 628-3739

Richard Plederedar
Sybase Inc.
6475 Christie Ave, Emeryville, CA 94608 USA
phone: +1 510 922-3500

Jack Greenfield
Inline Software, Inc.
751 Miller Drive SE Suite E3, Leesburg, VA 20175 USA
phone: +1 703 737-7750
fax: 1 + 703 737-0110

Sriram Srinivasan
BEA WebExpress
San Francisco, CA USA
phone: +1 415 659-2600

Fernando Velez
Ardent Software Inc.
1099 18th Street, Suite 2500 Denver, CO 80202 USA
phone: +1 303 313 3133

Henry Parnell
Object Design Inc.
25 Burlington Mall Road Burlington, MA 01803-4194 USA

Ron Raffensperger
Objectivity Inc.
301B E. Evelyn Avenue Mountain View CA 94041-1530 USA
phone: +1 650 254 7113

Lougie Anderson
Gemstone Systems, Inc.
15400 NW Greenbrier Parkway Suite 280, Beaverton, OR 97006 USA
phone: +1 503 533-3600

John Pompeii
Secant Technologies Inc.
4853 Galaxy Parkway, Suite S Cleveland, OH 44128 USA
phone: +1 216 595 3830

David Jordan
7001 Development Drive, Research Triangle Park, NC 27709
phone: +1-919-472-6186

Zaid Al-Timimi
Advanced Language Technologies
2030 Main Street, Suite 530, Irvine, CA 92614
phone: +1-949-863-9877

Torsten Stanienda
Baan Company - Tech@Spree Software Technology GmBH
Buelowstr. 66, 10783 Berlin Germany
Phone: +49-(0)-30 235 520 0

Paul Lipton
Computer Associates International, Inc.
Route 206 and Orchard Road, Princeton, NJ 08543-0008 USA
phone: 908-874-9479

Tony Kamarainen
Lawson Software
1300 Godward Street, Minneapolis, MN 55413-3004
phone: +1-612-379-8086

Jeff Eastman Windward Solutions, Inc.
395 W. El Camino Real, Sunnyvale, CA 94087
phone: +1 408 523 5811

Henry Strickland
Versant Corporation
6539 Dumbarton Circle, Fremont, CA 94555
phone: 510-789-1680

Bernd Hartings
Rosch Consulting
Am Siepbach 9, D-41564 Kaarst, Germany
phone: + 00

Dirk Bartels
Poet Software
phone: +1-650- 286-4640

Section 2: Request

Target Java Platform:

All Java platforms, including desktop, server, personal, embedded, and card, can use this API to access data.

Need addressed by Java Data Objects:

The Java community needs a standard way to store Java objects persistently in transactional data stores. Furthermore, it needs a standard way to treat relational database data as Java objects, and a standard way to define transactional semantics associated with those objects.

The term Java Data Objects is a placeholder for this functionality, pending the choice of a final name.

Existing Specifications:

Existing specifications for persistence include JDBC, SQLJ, and java.util.Serializable. The JDBC and SQLJ mechanisms provide for query, transactions, and large capacity storage, but require that users learn another language (SQL). This proposal allows users to specify their application program logic, including queries, entirely in Java, and express the mapping, if any, to the database with a separate mechanism. The java.util serialization protocol provides for persistence, but it does not offer query capability, transactional behavior, nor large capacity data storage. In addition, both the serialization and SQL APIs require that the programmer explicitly fetch and store Java objects from a database; we propose transparent persistence, doing this automatically.

The Java Data Objects Specification:

This is a high level API that may be implemented using lower level APIs like JDBC or SQLJ PART 0 to store data. This specification provides for interface-based definition of data stores, transactions, selection, and transformation of persistent storage data into native Java objects. There are several major parts of the specification:

  1. the semantics of persistence with regard to transactions;
  2. the mapping (default and user-specified) of data types between data stores and Java objects;
  3. the interactions of transactional objects with Enterprise Java Beans bean- and container-managed persistence;
  4. the selection of objects from the data store based on Java expressions;

Package name:

The working name for the package is javax.jdo. This name is subject to a better proposal during the life of the project.

Platform dependencies:

The Reference Implementation will be implemented in 100% Pure Java. Other implementations may use native code for parts of the underlying mapping to database storage, but native code is neither required nor proscribed.

Security implications:

This specification will exploit existing security mechanisms of both the Java environment and the underlying data storage mechanisms, such as relational databases or file systems.

Internationalization and localization:

Internationalization and localization of implementations are not required, nor are they proscribed by this specification.

Risk assessment:

Several vendors, independent of Sun?s activities to standardize the interface have implemented a similar specification. Thus, there is a corpus of code and techniques upon which to rely while finalizing the specification. The reference implementation can be obtained from parties interested in this specification, but there is no guarantee that negotiations for an appropriate license will be successful. The compatibility test suite is the major source of risk. An industry consortium comprising users and vendors of object databases, object relational mappings, relational databases, and Java tools may jointly develop the compatibility test suite, but there is no guarantee that the consortium will fund the work.

Existing specifications:

There are no existing specifications or specification requests pending that would be rendered obsolete by this specification.

There are no existing specifications that would need revision as a result of this specification.

Section 3: Contributions

This Specification will incorporate parts of the Object Data Management Group 3.0 persistent storage interface. A number of products from Specification participants, such as Sun's Java Blend, already conform to earlier versions of this API and participants have experience with it. The Object Data Management Group has agreed to grant all present and future rights to the interface for use by the specification lead and the community process, and the group members have volunteered to participate in the community process for work on the specification. As part of the community process, the specification will be extended to include specific requirements for storage of objects in Relational Database Management Systems and file systems, and will be aligned and integrated with evolving enterprise Java APIs such as Java Transactions and Enterprise Java Beans.

Work from the OSGI (Open Services Gateway Initiative) will probably also be used in the Specification. OSGI is currently under the Java Community Process. An effort will be made to satisfy the needs of OSGI with the Specification as well, deriving a common API for both uses.