Description
Please direct comments on this JSR to the Spec Lead(s).
Stage timeline
| Stage | Access | Start | Finish |
|---|---|---|---|
| Final Release | Download page | 15 Oct, 2003 | |
| Final Approval Ballot | View results | 24 Jun, 2003 | 07 Jul, 2003 |
| Proposed Final Draft | Download page | 05 Jun, 2003 | |
| Public Review | Download page | 26 Mar, 2003 | 25 Apr, 2003 |
| Community Draft Ballot | View results | 11 Mar, 2003 | 17 Mar, 2003 |
| Community Review | Login page | 14 Feb, 2003 | 17 Mar, 2003 |
| Expert Group Formation | 05 Nov, 2002 | 26 Nov, 2002 | |
| JSR Review Ballot | View results | 22 Oct, 2002 | 04 Nov, 2002 |
Team
Specification Leads
- Roger RiggsOracle
Expert Group
- Espial Group, Inc.
- IBM
- Kriens, Peter
- Motorola
- Oracle
- ProSyst Software GmbH
- Sun Microsystems, Inc.
- Telcordia Technologies, Inc.
Proposal
The following information has been updated from the original proposal.
2008.09.19:
Maintenance Lead: Roger Riggs, Sun Microsystems, Inc.
E-Mail Address:
roger.riggs
Telephone Number: +1 781 442 0539
Fax Number: +1 781 442 1610
Original Java Specification Request (JSR)
Identification |
Request |
Contributions
Section 1. Identification
Submitting Member: Sun Microsystems
Name of Contact Person: Jonathan Courtney
E-Mail Address: jonathan.courtney@sun.com
Telephone Number: +1 408 276 7398
Fax Number: +1 408 276 7201
Specification Lead: Jonathan Courtney
E-Mail Address: jonathan.courtney@sun.com
Telephone Number: +1 408 276 7398
Fax Number: +1 408 276 7201
Initial Expert Group Membership:
Espial
IBM
Motorola
ProSyst
Sun Microsystems
Telcordia
Supporting this JSR:
Acunia
aQute
Echelon
Gatespace
OSGi Alliance
Philips
T-Systems
Section 2: Request
2.1 Please describe the proposed Specification:
he GCF Optional Package will soley consist of the javax.microedition.io package as defined in the J2ME Foundation Profile (JSR-46) specification. As defined in the Foundation Profile, this package is a superset of the same package as defined in the J2ME Mobile Information Device Profile (MIDP, JSR-37) and the J2ME Connected, Limited Device Configuration (CLDC, JSR-30). Therefore, the GCF Optional Package will enable applications written to the javax.microedition.io APIs in any existing J2ME Profile to use these APIs in an identical manner in J2SE when the optional package is present.
Since the purpose of the GCF Optional Package is to enable compatibility from J2ME to J2SE, this JSR does not propose the addition of any functionality not already provided by the J2ME Foundation Profile in the javax.microedition.io package. However, specification improvements have been added to the GCF APIs in CLDC 1.1 (JSR-139), so these will be included in the proposed optional package specification as appropriate.
2.2 What is the target Java platform? (i.e., desktop, server, personal, embedded, card, etc.)
Desktop and server
2.3 What need of the Java community will be addressed by the proposed specification?
Upward-compatibility, from J2ME to J2SE, of applications that use the javax.microedition.io package.
2.4 Why isn't this need met by existing specifications?
The APIs for the Generic Connection Framework are not supported in J2SE.
2.5 Please give a short description of the underlying technology or technologies:
(Excerpted from the CLDC 1.1 specification)
Background and motivation
The class libraries included in Java 2 Standard Edition and Java 2 Enterprise Edition
provide a rich set of functionality for handling input and output access to storage
and networking systems. The package java.io.* of J2SE contains approximately
60 classes and interfaces, and more than 15 exception classes. The package
java.net.* of J2SE consists of approximately 20 regular classes and 10 exception
classes. It is difficult to make all this functionality fit in a small device with only a
few hundred kilobytes of total memory budget. Furthermore, a significant part of
the standard I/O and networking functionality is not directly applicable to today's
small devices, which do not often provide TCP/IP support, of which often need to
support specific types of connections such as IrDA (infrared) or Bluetooth.
In general, the requirements for the networking and storage libraries vary
significantly from one resource-constrained device to another. For instance, those
device manufacturers who use packet-switched networks typically want datagram-based
communication mechanisms, while those using circuit-switched networks
commonly prefer stream-based connections. Some of the devices have traditional file
systems, while many others have highly device-specific mechanisms. Due to strict
memory limitations, manufacturers supporting certain kinds of input/output,
networking and storage capabilities generally do not want to support other
mechanisms. All this makes the design of these facilities for CLDC very challenging,
especially since J2ME configurations are not allowed to define optional features.
Also, the presence of multiple networking mechanisms and protocols is potentially
very confusing to the application programmer, especially if the programmer has to
deal with low-level protocol issues.
The Generic Connection framework
The challenges presented above led to the generalization of the J2SE network and I/O
classes. The general goal for this generalized design is to be a functional subset of
J2SE classes, which can easily map to common low-level hardware or to any J2SE
implementation, but with better extensibility, flexibility and coherence in supporting
new devices and protocols.
A central objective of this design is to isolate, as much as possible, the differences between the use of one protocol and another into a string characterizing the type of connection. This string is the parameter to the method Connector.open. A key benefit of this approach is that the bulk of the application code stays the same regardless of the kind of connection that is used. This is different from traditional implementations, in which the abstractions and data types used in applications often change dramatically when changing from one form of communication to another. The binding of protocols to a J2ME program is done at runtime. At the implementation level, the string (up to the first occurrence of `:') that is provided as the parameter to the method Connector.open instructs the system to obtain the desired protocol implementation from a location where all the protocol implementations are stored. It is this late binding mechanism which permits a program to dynamically adapt to use different protocols at runtime. Conceptually this is identical to the relationship between application programs and device drivers on a personal computer or workstation.
Design of the Generic Connection framework
Connections to different types of devices will need to exhibit different forms of behavior. A file, for instance, can be renamed, but no similar operation exists for a TCP/IP socket. The Generic Connection framework reflects these different capabilities, ensuring that operations that are logically the same share the same API. The Generic Connection framework is implemented using a hierarchy of Connection interfaces (located in package javax.microedition.io) that group together classes of protocols with the same semantics. This hierarchy consists of seven interfaces. Additionally, there is the Connector class, one exception class, one other interface, and a number of data stream classes for reading and writing data. At the implementation level, a minimum of one class is needed for implementing each supported protocol. Often, each protocol implementation class contains simply a number of wrapper functions that call the native functions of the underlying host operating system.
There are six basic interface types that are addressed by the Generic Connection framework:
- A basic serial input connection
- A basic serial output connection
- A datagram oriented connection
- A circuit oriented connection
- A notification mechanism to inform a server of client-server connections
- A basic Web server connection
The Generic Connection framework is intended to be extensible so that additional interfaces can be added later by J2ME profiles if they require new connection types.
2.6 Is there a proposed package name for the API Specification? (i.e., javapi.something, org.something, etc.)
javax.microedition.io
2.7 Does the proposed specification have any dependencies on specific operating systems, CPUs, or I/O devices that you know of?
No.
2.8 Are there any security issues that cannot be addressed by the current security model?
No.
2.9 Are there any internationalization or localization issues?
No.
2.10 Are there any existing specifications that might be rendered obsolete, deprecated, or in need of revision as a result of this work?
No.
2.11 Please describe the anticipated schedule for the development of this specification.
Completion within 180 days from approval of JSR.
2.12 Please describe the anticipated working model for the Expert Group working on developing this specification.
Email and phone conferences.
Section 3: Contributions
3.1 Please list any existing documents, specifications, or implementations that describe the technology. Please include links to the documents if they are publicly available.
*
J2ME
Foundation Profile (JSR-46)
J2ME
Mobile Information Device Profile (JSR-37)
J2ME
Connected, Limited Device Configuration (JSR-30)
J2ME
Connected, Limited Device Configuration 1.1 (JSR-139)
3.2 Explanation of how these items might be used as a starting point for the work.
See section 2.1.