JavaPOS

JavaPOS (short for Java for Point of Sale Devices), is a standard for interfacing point of sale (POS) software, written in Java, with the specialized hardware peripherals typically used to create a point-of-sale system. The advantages are reduced POS terminal costs, platform independence, and reduced administrative costs. JavaPOS was based on a Windows POS device driver standard known as OPOS. JavaPOS and OPOS have since been folded into a common UnifiedPOS standard.

Types of hardware
JavaPOS can be used to access various types of POS hardware. A few of the hardware types that can be controlled using JavaPOS are
 * POS printers (for receipts, check printing, and document franking)
 * Magnetic stripe readers (MSRs)
 * Magnetic ink character recognition readers (MICRs)
 * Barcode scanners/readers
 * Cash drawers
 * Coin dispensers
 * Pole displays
 * PINpads
 * Electronic scales

Parts
In addition to referring to the standard, the term JavaPOS is used to refer to the application programming interface (API).

The JavaPOS standard includes definitions for "Control Objects" and "Service Objects". The POS software communicates with the Control Objects. The Control Objects load and communicate with appropriate Service Objects. The Service Objects are sometimes referred to as the "JavaPOS drivers."

Control objects
The POS software interacts with the control object to control the hardware device. A common JavaPOS library is published by the standards organization with an implementation of the Control Objects of the JavaPOS standard.

Service objects
Each hardware vendor is responsible for providing Service Objects, or "JavaPOS drivers" for the hardware they sell. Depending on the vendor, drivers may be available that can communicate over USB, RS-232, RS-485, or even an Ethernet connection. The hardware vendors will typically create JavaPOS drivers that will work with Windows. The majority of vendors will also create drivers for at least one flavor of Linux, but not as many. Since there is not nearly as much marketshare to capture for Apple computers used as POS systems, only a few JavaPOS drivers would be expected to work with Mac OS X. (And those would be more likely due to happy circumstance rather than careful design.)

Historical background
The committee that initiated JavaPOS development consisted of Sun Microsystems, IBM, and NCR. The first meeting occurred in April, 1997 and the first release, JavaPOS 1.2, occurred on 28 March 1998. The final release as a separate standard was version 1.6 in July 2001. Beginning with release 1.7, a single standards document was released by a UnifiedPOS committee. That standards document is then used to create the common JavaPOS libraries for the release.