Find JSRs
Submit this Search


Ad Banner
 
 
 
 

JSRs: Java Specification Requests
JSR 80: JavaTM USB API

Updates to the Java Specification Request (JSR)

13 June 2003: The Expert Group plans to post a draft for Public Review starting 10/01/03.

*****

In order to recognize existing contributions, the following changes have been made to the original JSR.

2.4 Why isn't this need met by existing specifications?

There is no cross-platform way to access the USB using the current Java libraries and standard APIs. This JSR is to establish a Java standard for this access. There is a project working on access on the Linux platform. (See Contributions.)

2.9 Are there any internationalization or localization issues?

No. USB devices have string descriptors that describe what they are/do, like the Manufacturer string, Product string, etc. These strings are in UNICODE, so they can be in any language. We do not expect this to impact the API.

2.10 Are there any existing specifications that might be rendered obsolete, deprecated, or in need of revision as a result of this work?

See Contributions.

2.11 Please describe the anticipated schedule for the development of this specification.

  1. Creation of expert group [9/2000]
  2. Submission of the initial API specification and first reference implementation [10/2000]
  3. Discuss and draft first specification based on the initial work [11/2000]
  4. Review of reference implementation [12/2000]
  5. First draft spec and reference implementation released for public review [1/2001]

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.

USB specification:

http://www.usb.org

JavaPOS

http://www.javapos.com

Java Communication API

http://java.sun.com

Existing open source development for Linux by David Brownell: Java USB for Linux

http://jusb.sourceforge.net/


Original Java Specification Request (JSR)

Identification | Request | Contributions | Additional Information

Original Summary: This specification provides a JavaTM API for communicating with devices that are attached via the USB (Universal Serial Bus). It will allow Java applications to communicate with and manipulate USB devices attached to the bus.

Section 1. Identification

Submitting Member: IBM

Name of Contact Person: Boyd Dimmock

E-Mail Address: bkd@us.ibm.com

Telephone Number: +1-919-301-5713

Fax Number: +1-919-301-5636


Specification Lead: Boyd Dimmock

E-Mail Address: bkd@us.ibm.com

Telephone Number: +1-919-301-5713

Fax Number: +1-919-301-5636


Initial Expert Group Membership:

IBM, Sun Microsystems Inc., NCR, ICL/Fujitsu, Wincor-Nixdorf



Section 2: Request

2.1 Please describe the proposed Specification:

This JSR is to develop the Universal Serial Bus (USB) interface for Java. This interface supports the USB protocol for I/O devices. It will create an API that allows full access of the USB and USB devices and hubs by any Java application or middleware (i.e. drivers). Using this API a Java application could communicate to any USB devices. Also USB hardware vendors could provide Java middleware (drivers) that would allow application writers easier access to their devices in Java.

2.2 What is the target Java platform? (i.e., desktop, server, personal, embedded, card, etc.)

The target platform is the desktop or any system that supports a JVM and I/O devices that are attached via the USB architecture (i.e. J2SE and J2ME).

2.3 What need of the Java community will be addressed by the proposed specification?

The Universal Serial Bus (USB) is the latest technology for peripheral device attachments and is a powerful follow-on to existing standards such as serial connections (RS 232). Where there is a Java extension (javax.comm) that provides a standard Java application interface for RS 232, none exists for USB. The creation of a javax.usb standard will allow device services for USB to be developed using Java and therefore enjoy the portability of Java.

For instance, the retail industry has a major interest in the acceptance of USB standards in that there are new hardware solutions that deliver this technology. This specification would allow the Java community to build applications that would be able to access the USB on any Java enabled platforms. For example, the Point of Sale (POS) community has defined a Java API, known as JavaPOS, that allows applications to communicate with POS devices (such as POS Printers, POS Keyboards, ...). With the proposed API, JavaPOS drivers that would be portable and usable on any Java platform could be developed for USB devices.

The same would apply for other industries and the vast number of USB devices that are coming in the future.

2.4 Why isn't this need met by existing specifications?

There is no way to access the USB using the current Java libraries and APIs.

(NOTE that this information has been updated since the original.)

2.5 Please give a short description of the underlying technology or technologies:

The underlying technology is USB or Universal Serial Bus. It is a dynamic, multiplex, tree-based, powered, configurable communication protocol for the PC architecture.

  • It is dynamic in that USB devices can be attached and detached at runtime.
  • It is multiplex such that USB devices can attached to USB hubs that multiplex a USB port into more ports. Each port can then accommodate another hub which can have hubs or devices attached. The current limit is 5 hub-levels deep and with 128 devices total attached per "bus" (per USB controller).
  • The attached devices form a tree instead of a list (devices attached to hubs which are themselves devices).
  • The USB in addition to transporting data and communication signals also transport power, such that devices can be powered from the USB.
  • USB devices usually can be dynamically configured and can contain more than one configuration. Drivers for such devices are also typically loaded and unloaded dynamically.

2.6 Is there a proposed package name for the API Specification? (i.e., javapi.something, org.something, etc.)

javax.usb

2.7 Does the proposed specification have any dependencies on specific operating systems, CPUs, or I/O devices that you know of?

No. The specification would depend on the official USB specification version 1.1. Any devices that comply with the USB 1.1 specification would be supported.

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.

(NOTE that this information has been updated since the original.)

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.

(NOTE that this information has been updated since the original.)

2.11 Please describe the anticipated schedule for the development of this specification.

  1. Creation of expert group [9/2000]
  2. Submission of for the IBM initial API specification and first reference implementation [9/2000]
  3. Review of the initial spec [9/15/2000]
  4. Discuss and first draft specification based on the initial spec [10/2000]
  5. Review of reference implementation [11/2000]
  6. First draft spec and reference implementation released for public review [1/2001]

(NOTE that this information has been updated since the original.)





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.

USB specification:

http://www.usb.org

JavaPOS

http://www.javapos.com

Java Communication API

http://java.sun.com

IBM Java USB API

(NOTE that this information has been updated since the original.)

3.2 Explanation of how these items might be used as a starting point for the work.

The USB specification is the key document used to create any USB related work.

The JavaPOS or Java for Retail Point of Sale as defined a set of standard API to allow access from Java application to POS devices. These JavaPOS services could be written in Java using this specification. Though the JavaPOS cannot be used as a starting point for creating this specification it is certainly a motivation factor for establishing a standard USB API. The Java Communication API is the first API to allow Java application to communicate to attached I/O devices. The Java Communication API is not a good starting point for creating a Java USB API because of the fundamental differences between USB and serial/parallel ports.

IBM Retail Store Solutions organization has used the USB 1.1 specification to develop a complete working API to propose as the reference implementation. This specification will be presented to the expert community as the starting point for the standard.