## Java™ Smart Card I/O API

This specification describes the Java Smart Card I/O API defined by JSR 268. It defines a Java API for communication with Smart Cards using ISO/IEC 7816-4 APDUs. It thereby allows Java applications to interact with applications running on the Smart Card, to store and retrieve data on the card, etc.

The API is defined by classes in the package `javax.smartcardio`. They can be classified as follows:

Classes describing the corresponding Smart Card structures
  ATR, CommandAPDU, ResponseAPDU
Factory to obtain implementations
  TerminalFactory
Main classes for card and terminal functions
  CardTerminals, CardTerminal, Card, CardChannel
Supporting permission and exception classes
  CardPermission, CardException, CardNotPresentException
Service provider interface, not accessed directly by applications
  TerminalFactorySpi

### API Example

A simple example of using the API is:

    	// show the list of available terminals
    	TerminalFactory factory = TerminalFactory.getDefault();
    	List<CardTerminal> terminals = factory.terminals().list();
    	System.out.println("Terminals: " + terminals);
    	// get the first terminal
    	CardTerminal terminal = terminals.get(0);
    	// establish a connection with the card
    	Card card = terminal.connect("T=0");
    	System.out.println("card: " + card);
    	CardChannel channel = card.getBasicChannel();
    	ResponseAPDU r = channel.transmit(new CommandAPDU(c1));
    	System.out.println("response: " + toString(r.getBytes()));
    	// disconnect
    	card.disconnect(false);

@since 1.6 @author Andreas Sterbenz @author JSR 268 Expert Group