iButtons: The first ready-to-buy 2.0 Java Card API devices

Develop, build, and test Java Card applications

1 2 Page 2
Page 2 of 2

Assuming you do have a Java Card business card that requires your PIN for everything except your first name, are you safe yet? Not really! It is common knowledge that entering your PIN on any PIN-access device can be very dangerous. Why? Someone can take your PIN off the network in the supermarket, make a few plastic cards, go straight to the bank and take your money. It's actually very easy to do this. The solution? PIN-access devices that you carry on your person. When you enter your PIN, it never leaves the device; instead the PIN-access device uses some other protocol to authenticate.

The demo below includes CoinPurse, an excellent example of PIN usage with the Java Card. The source code for the BusinessCard demonstration is included in the Resources section.

Installing the demo

Once you have installed the compressed file from www.ibutton.com, listed in the Resources section, in your favorite directory, you will notice several files. The most important file is the README file, as this describes everything you need to know about setting up your environment so that you can download applets to the card.


The Java iButtons discussed in this article are based on the 2.0 version of the Java Card API. Users of the Internet and of intranets can benefit from Java Card because it provides the advantages of traditional smart card -- like secure portable storage -- with the flexibility of Java. The greatest benefit to programmers is that instead of writing in a proprietary language, applications can be written in Java and loaded onto the card.

We have shown that programming smart cards using the Java Card specification is possible. With a little bit of effort, there are enough tools and documentation to begin using the technology. We end our smart card series with this article. As promised, we started with some simple memory cards and ended with the Java Card. In the coming months you should see this market become very active. Don't forget to track OpenCard, and very closely. Good luck!

Rinaldo Di Giorgio is a staff engineer in the research department at Sun Microsystems. There he experiments with digital economies.

Learn more about this topic

  • Latest release from Dallas Semiconductor. Download this file and uncompress it. Winzip may be required. You will see several directories. Start by reading the README file. To run the demos you will need to connect a reader to your computer. BusinessCard.java is a listing of the Java Card applet included here for convenience http://www.ibutton.com/devkit
  • JavaSoft's Java Card home page contains all the APIs and additional examples that you should be able to run on the card http://www.javasoft.com/javacard
  • APDU commands specific to Java iButtons, a very terse listing of APDUs recognized by the card http://www.javaworld.com/javaworld/jw-04-1998/ibuttons/cmds.html
  • See JavaWorld's article, "An introduction to Java Card" http://www.javaworld.com/javaworld/jw-02-1998/jw-02-javacard.html
  • Emerging standard for communicating with smart cards http://www.opencard.org/
  • Java Card Programming Concepts (pdf file). Listed here for convenience http://www.javaworld.com/javaworld/jw-04-1998/ibuttons/JC20-Concepts.pdf
  • Java Card 2.0 API (pdf file). Listed here for convenience http://www.javaworld.com/javaworld/jw-04-1998/ibuttons/JC20API-prtrat.pdf
1 2 Page 2
Page 2 of 2