In a recent discussion post, member Paulrob asked about two rather obscure Java APIs: JavaPOS and J/XFS. He wrote:

“Does anyone know the differences between these interfaces? At a high level, JavaPOS is for the retail sector and J/XFS is for financial, but when you get down to physical devices, they can be the same, e.g., pin pad\MICR\printers. Also, JavaPOS is very quiet at the moment—is it old hat?

Which interface is the better bet?”

If you’ve used either of these specifications for a Java development project, follow this link to Paulrob’s discussion and offer any advice you might have. If you’re not familiar with either of these initiatives, read on.

What’s he talking about?
According to the JavaPOS Web site, the Java Point-of-Sale (JavaPOS) project was begun by a group of retail vendors to provide device programming APIs for commonly used retail devices such as Magnetic Ink Character Recognition (MICR) readers, cash changers and dispensers, magnetic stripe readers, scanners, scales, and so on. From a programming standpoint, JavaPOS is an event-based, asynchronous API built around a set of generic device type models. The standards committee provides the standard API interfaces, specifications, and documentation, while individual hardware vendors must provide the actual implementations for the devices they produce.

Even though JavaPOS may appear to be inactive, an e-mail to the information address for the project was quickly answered. The project committee met in San Diego recently, and updates to the Web site are planned in the near future. Quiet, yes, but not exactly dead.

J/XFS, or “J/eXtensions for Financial Services,” on the other hand, is a standard initiative supported by several hardware vendors and technology companies targeted toward the “unique input and output devices used in the finance industry at various access channels.” Like JavaPOS, J/XFS is implemented as an asynchronous event-driven programming model. But J/XFS has a stated purpose of supporting the thin client application model, where most or all data storage occurs on a central server. From a programming standpoint, J/XFS seems to have a more simplified object model, using a generic DeviceControl class to provide access to the various devices supported. The standard also defines a set of support classes to facilitate remote data storage.

Abandoned projects?
As Paulrob points out in his discussion post, the two specifications appear to support the same hardware devices. However, J/XFS does have an emphasis on financial devices, providing support for items you’d find in a local branch office, like a PIN pad, magnetic stripe reader, cash dispensers, and ATMs. JavaPOS, on the other hand, concentrates more on sales-related devices: cash registers, credit authorization devices, and the fast food order “bump bar.”

From the limited information I’ve been able to turn up regarding these two APIs, it isn’t at all clear to me how widely used either actually is. It’s possible that the emergence of J2ME displaced or absorbed one or both of these projects. If you’ve got any information to share with Paulrob, by all means, head over to our discussion forums and speak up.