| Edisi-edisi Java |
| --- |
|  |
| * Java Card
* Micro Edition (ME)
* Standard Edition (SE)
* Enterprise Edition (EE)
* JavaFX
* PersonalJava (diberhentikan)
 |
| * l
* b
* s
 |

**Java Card** merupakan teknologi yang membolehkan aplikasi berasaskan Java dijalankan dengan selamat pada kad-kad pintar dan peranti-peranti kecil yang beringatan kecil. Java Card adalah pelantar Java terkecil yang dibangunkan untuk peranti-peranti terbenam. Ia membolehkan penggunanya mengatur cara peranti-perantinya serta mengkhususkan aplikasi.

Java Card yang pertama telah diperkenalkan pada tahun 1996 oleh bahagian kad Schlumberger yang kemudiannya bergabung dengan Gemplus bagi membentuk Gemalto. Produk-produk Java Card adalah berasaskan spesifikasi yang dibangunkan oleh Sun Microsystems (yang kemudiannya menjadi anak syarikat Oracle Corporation). Kebanyakan produk-produk Java card turut bergantung kepada spesifikasi GlobalPlatform bagi pengurusan keselamatan aplikasi pada kad (muat turun, pemasangan, pemperibadian, penghapusan).

Matlamat utama reka bentuk teknologi Java Card ialah kemudahalihan dan keselamatan.

Versi
-----

### Java Card 2.2.2

Java Card 2.2.2 dikeluarkan pada Mac 2006. Keluaran ini menyediakan beberapa ciri-ciri baharu, antaranya:

* sokongan bagi ISO7816-4:2005 dan 20 saluran logik
* bantuan-bantuan kebolehaturcaraan applet untuk APDU panjang tambahan yang diterangkan dalam ISO 7816
* sokongan bagi algoritma cincangan untuk SHA-256, SHA-384, SHA-512.

### Java Card 3.0

Tentuan Java Card versi 3.0 (drafnya dikeluarkan pada bulan Mac 2008) dibahagikan kepada dua versi iaitu *Classic Edition* (edisi klasik) dan *Connected Edition* (edisi tersambung).

Antara ciri baharu dalam *Connected Edition* ialah sokongan bagi servlet, sokongan bagi rentetan (*string*) dan *shareable interface object* (objek antara muka boleh kongsi, SIO).

Java Card 3.0 Classic Edition adalah serasi kebelakang dengan Java Card 2.22.

Contoh
------

Berikut ialah contoh ringkas bagi aplikasi yang digunakan sebagai dompet elektronik:

```
public class DompetApplet extends Applet {
 private final byte PENGESAHAN = (byte)0x20;
 private final byte MASUK\_DUIT = (byte)0x6a;
 private final byte KELUAR\_DUIT = (byte)0x6b;
 private final short MAKSIMUM\_KELUAR = (short)0x0bb8; // RM300
 private short baki;
 private OwnerPIN pin;
 
 public static void install(byte[] bArray, short bOffset, byte bLength) {
 new DompetApplet(bArray, bOffset, bLength);
 }
 
 protected DompetApplet(byte[] bArray, short bOffset, byte bLength) {
 register();
 pin.update(bArray, bOffset, bLength);
 baki = (short)0;
 }
 
 @Override
 public void process(APDU apdu) {
 byte[] buffer = apdu.getBuffer();
 short lc = apdu.getIncomingLength();
 short duit;
 
 if (!selectingApplet()) {
 switch (buffer[ISO7816.OFFSET\_INS]) {
 case PENGESAHAN:
 if (pin.getTriesRemaining() != 0) {
 pin.check(buffer, ISO7816.OFFSET\_CDATA, (byte)lc);
 }
 break;
 case MASUK\_DUIT:
 if (pin.isValidated()) {
 duit = Util.getShort(buffer, ISO7816.OFFSET\_CDATA);
 baki += duit;
 }
 break;
 case KELUAR\_DUIT:
 if (pin.isValidated()) {
 duit = Util.getShort(buffer, ISO7816.OFFSET\_CDATA);
 if ((baki - duit) > 0 && duit <= MAKSIMUM\_KELUAR) {
 baki -= duit;
 } else {
 ISOException.throwIt(ISO7816.SW\_WRONG\_DATA);
 }
 }
 break;
 default:
 ISOException.throwIt(ISO7816.SW\_INS\_NOT\_SUPPORTED);
 }
 }
 }
}

```

Rujukan
-------

1. ↑  Ahmed Patel, Kenan Kalajdzic, Laleh Golafshan, Mona Taghavi (2011). "Design and Implementation of a Zero-Knowledge Authentication Framework for Java Card". **5** (3). IGI: 1–18. Unknown parameter `|booktitle=` ignored (bantuan); Cite journal requires `|journal=` (bantuan)CS1 maint: multiple names: authors list (link)
2. ↑  "Release Notes - Java Card(TM) Specification Version 2.2.2". Oracle. Dicapai pada 3 April 2013.
3. ↑  "Release Notes - Java Card 3.0 Platform Specification". Oracle. Dicapai pada 6 Mac 2013.