The API is defined by classes in the package
javax.smartcardio. They can be classified as follows:
	// 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);
| ATR | A Smart Card's answer-to-reset bytes. | 
| Card | A Smart Card with which a connection has been established. | 
| CardChannel | A logical channel connection to a Smart Card. | 
| CardPermission | A permission for Smart Card operations. | 
| CardTerminal | A Smart Card terminal, sometimes refered to as a Smart Card Reader. | 
| CardTerminals | The set of terminals supported by a TerminalFactory. | 
| CommandAPDU | A command APDU following the structure defined in ISO/IEC 7816-4. | 
| ResponseAPDU | A response APDU as defined in ISO/IEC 7816-4. | 
| TerminalFactory | A factory for CardTerminal objects. | 
| TerminalFactorySpi | The TerminalFactorySpi class defines the service provider interface. | 
| CardTerminals.State | Enumeration of attributes of a CardTerminal. | 
| CardException | Exception for errors that occur during communication with the Smart Card stack or the card itself. | 
| CardNotPresentException | Exception thrown when an application tries to establish a connection with a terminal that has no card present. |