Find JSRs
JCP Info
About JCP
Get Involved
Community Resources
Community News
FAQ
Contact Us
JSRs: Java Specification Requests
JSR 80: JavaTM USB API
Stage
Access
Start
Finish
Final Approval Ballot
View results
07 Dec, 2004
20 Dec, 2004
Community Draft Ballot
View results
08 May, 2001
14 May, 2001
Community Review
Login page
11 Apr, 2001
14 May, 2001
Expert Group Formation
12 Sep, 2000
Status: Final
JCP version in use: 2.1
Java Specification Participation Agreement version in use: 1.0
Description:
This specification provides a JavaTM API for communicating with devices
attached via the Universal Serial Bus (USB). It allows Java applications to discover, read, write, and manage USB devices.
Please direct comments on this JSR to the Spec Lead(s)
Specification Leads
Boyd Dimmock
IBM
Expert Group
Apple Computer, Inc.
Boydston, David
Dainson, Boris
Fujitsu Limited
Gay, H. Paul
IBM
Lindsjo, Roger
Sun Microsystems, Inc.
Turner, Steve
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.
-
Creation of expert group [9/2000]
-
Submission of the initial API specification and first reference implementation
[10/2000]
-
Discuss and draft first specification based on the initial work [11/2000]
-
Review of reference implementation [12/2000]
-
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.
- Creation of expert
group [9/2000]
- Submission of for
the IBM initial API specification and first reference implementation
[9/2000]
- Review of the
initial spec [9/15/2000]
- Discuss and first
draft specification based on the initial spec [10/2000]
- Review of reference
implementation [11/2000]
- 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 standardUSB 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.