1<!--
2 Copyright (c) 2005, 2006, Oracle and/or its affiliates. All rights reserved.
3 DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4
5 This code is free software; you can redistribute it and/or modify it
6 under the terms of the GNU General Public License version 2 only, as
7 published by the Free Software Foundation.  Oracle designates this
8 particular file as subject to the "Classpath" exception as provided
9 by Oracle in the LICENSE file that accompanied this code.
10
11 This code is distributed in the hope that it will be useful, but WITHOUT
12 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
14 version 2 for more details (a copy is included in the LICENSE file that
15 accompanied this code).
16
17 You should have received a copy of the GNU General Public License version
18 2 along with this work; if not, write to the Free Software Foundation,
19 Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20
21 Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22 or visit www.oracle.com if you need additional information or have any
23 questions.
24-->
25
26<html>
27<body>
28<h2>Java&#x2122; Smart Card I/O API</h2>
29
30This specification describes the Java Smart Card I/O API defined by
31<a href="http://jcp.org/en/jsr/detail?id=268">JSR 268</a>.
32
33It defines a Java API for communication with Smart Cards
34using ISO/IEC 7816-4 APDUs. It thereby allows Java applications to interact with
35applications running on the Smart Card, to store and retrieve data 
36on the card, etc.
37
38<p>
39The API is defined by classes in the package
40<code>javax.smartcardio</code>. They can be classified as follows:
41
42<dl>
43<dt>Classes describing the corresponding Smart Card structures 
44<dd>
45<a href="ATR.html">ATR</a>, 
46<a href="CommandAPDU.html">CommandAPDU</a>, 
47<a href="ResponseAPDU.html">ResponseAPDU</a>
48
49<dt>Factory to obtain implementations
50<dd>
51<a href="TerminalFactory.html">TerminalFactory</a>
52
53<dt>Main classes for card and terminal functions
54<dd>
55<a href="CardTerminals.html">CardTerminals</a>,
56<a href="CardTerminal.html">CardTerminal</a>,
57<a href="Card.html">Card</a>, 
58<a href="CardChannel.html">CardChannel</a>
59
60<dt>Supporting permission and exception classes
61<dd>
62<a href="CardPermission.html">CardPermission</a>,
63<a href="CardException.html">CardException</a>,
64<a href="CardNotPresentException.html">CardNotPresentException</a>
65
66<dt>Service provider interface, not accessed directly by applications 
67<dd>
68<a href="TerminalFactorySpi.html">TerminalFactorySpi</a>
69
70</dl>
71
72
73<h3>API Example</h3>
74
75A simple example of using the API is:
76<pre>
77	// show the list of available terminals
78	TerminalFactory factory = TerminalFactory.getDefault();
79	List&lt;CardTerminal&gt; terminals = factory.terminals().list();
80	System.out.println("Terminals: " + terminals);
81	// get the first terminal
82	CardTerminal terminal = terminals.get(0);
83	// establish a connection with the card
84	Card card = terminal.connect("T=0");
85	System.out.println("card: " + card);
86	CardChannel channel = card.getBasicChannel();
87	ResponseAPDU r = channel.transmit(new CommandAPDU(c1));
88	System.out.println("response: " + toString(r.getBytes()));
89	// disconnect
90	card.disconnect(false);
91</pre>
92
93@since   1.6
94@author  Andreas Sterbenz
95@author  JSR 268 Expert Group
96
97</body>
98</html>
99