BAB 3 JAVA CARD (BAGIAN 1)

Teknologi Java Card membuat program yang ditulis dalam bahasa pemrograman Java dapat berjalan pada smart card dan perangkat dengan memori yang terbatas. Bab ini memberikan gambaran mengenai teknologi Java Card, yaitu berupa arsitektur sistem dan komponennya.

ARSITEKTUR JAVA CARD

Smart card merupakan salah satu platform komputasi terkecil yang digunakan saat ini. Konfigurasi memori pada smart card bisa terdiri dari RAM 1K, EEPROM 16K, dan ROM 24K. Tantangan terbesar pada desain teknologi Java Card adalah memasukkan software sistem Java dalam smart card yang memorinya terbatas sehingga harus menghemat ruang untuk aplikasi. Solusinya adalah dengan mendukung hanya sebagian fitur-fitur bahasa pemrograman Java dan menerapkan model pemisah untuk mengimplementasikan Java Virtual Machine.

Java Card Virtual Machine (JCVM) dipisahkan ke dalam 2 bagian, yaitu bagian yang berjalan off-card dan bagian yang berjalan on-card. Banyak pemrosesan tugas yang tidak dibatasi eksekusinya saat runtime seperti loading, verifikasi bytecode, resolusi dan linking, serta optimisasi; diterapkan pada virtual machine yang berjalan off-card dimana resource tidak selalu menjadi fokusnya.

Smart card berbeda dengan komputer desktop dalam beberapa hal. Selain menyediakan dukungan bahasa pemrograman Java, teknologi Java Card merupakan lingkungan runtime yang menyediakan memori smart card, komunikasi, keamanan, dan model eksekusi aplikasi. Java Card Runtime Environment (JCRE)
sesuai dengan standar internasional smart card ISO 7816.

Fitur JCRE yang paling singnifikan yaitu menyediakan pemisah yang jelas antara system smart card dan aplikasi. Lingkungan runtime mengenkapsulasi kompleksitas system smart card. Aplikasi meminta system service dan resource melalui interface pemograman level tinggi yang “well-defined“.

Karena itu, teknologi Java Card pada dasarnya merupakan platform dimana aplikasi yang ditulis dalam bahasa pemrograman Java dapat berjalan dalam smart card dan perangkat dengan keterbatasan memori. Aplikasi yang ditulis dalam platform Java Card adalah applet. Karena pemisahan arsitektur virtual machine, platform ini didistribusikan antara smart card dan lingkungan desktop dalam ruang dan waktu. Teknologi Java Card terdiri dari 3 bagian, yang masing-masing di definisikan dalam sebuah spesifikasi.

  • Spesifikasi Java Card 2.1 Virtual Machine (JCVM) merupakan bagian dari bahasa pemrogaraman Java dan virtual machine yang dapat sesuai dengan aplikasi smart card.
  • Spesifikasi Java Card 2.1 Runtime Environment (JCRE) menggambarkan dengan tepat perilaku runtime Java Card, meliputi menejemen memori, menejemen applet, dan fitur-fitur runtime lain.
  • Spesifikasi Java Card 2.1 Application Programming Interface (API) menggambarkan sekumpulan inti dan ekstensi paket Java serta kelas-kelas untuk pemrograman aplikasi smart card.

JAVA CARD BAHASA SUBSET DARI JAVA

Karena kecilnya memori, platform Java Card hanya mendukung subset (bagian) bahasa Java yang telah disesuaikan dan telah dipilih dengan cermat. Subset ini meliputi fitur-fitur yang disesuaikan dengan smart card dan perangkat kecil lain yang dapat menjaga kemampuan object-oriented dari bahasa pemrograman Java. Tabel dibawah ini menunjukkan fitur-fitur bahasa pemrograman Java yang didukung Java Card.

Fitur-Fitur Java yang Didukung

Fitur-Fitur Java yang Tidak Didukung

  • Tipe data primitif kecil: boolean, byte, short
  • Array 1 deminsi
  • Paket Java, kelas, interface, dan exception
  • Fitur object-oriented Java: inheritance, virtual methods, overloading dan pembuatan objek yang dinamik, batasan pengaksesan, serta aturan yang mengikat
  • Keyword int dan tipe data integer 32-bit adalah opsional
  • Tipe data primitif besar: long, double, float
  • Characters dan strings
  • Array multi dimensi
  • Loading kelas yang dinamik
  • Security manager
  • Garbage collection dan finalization
  • Threads
  • Object serialization
  • Object cloning

Tidak mengherankan bila kata kunci dari fitur-fitur yang tidak didukung smart card juga dihilangkan dari bahasa. Banyak Java smart card yang canggih menyediakan mekanisme garbage collector untuk memungkinkan penghapusan. Untuk applet Java Card yang perlu menyimpan dan memanipulasi data dalam jumlah besar, BAB 14 menyediakan tips pemrograman untuk mengatasi jumlah data yang besar tanpa menggunakan tipe data yang primitif.

JAVA CARD VIRTUAL MACHINE (JCVM)

Perbedan utama antara JCVM dan JVM adalah JCVM diterapkan sebagai 2 bagian yang terpisah. Bagian on-card JCVM merupakan interpreter bytecode pada Java Card. Converter pada Java Card berjalan pada PC atau workstation. Converter adalah bagian off-card dari virtual machine. Secara bersama-sama, mereka menerapkan semua fungsi virtual machine, yaitu me-load kelas Java dan mengeksekusinya dengan sekumpulan semantic tertentu. Converter me-load dan mem-preprocess kelas yang membentuk sebuah paket Java dan menghasilkan sebuah file Converted Applet (CAP). File CAP kemudian di-load pada Java smart card dan dieksekusi oleh interpreter. Disamping membuat sebuah file CAP, converter membuat sebuah file export yang merupakan API public dari paket yang sedang di-convert.


Teknologi Java card hanya mendukung subset dari bahasa Java. Sejalan dengan itu, JCVM hanya mendukung fitur-fitur yang diperlukan oleh subset bahasa tersebut. Beberapa fitur bahasa yang tidak didukung yang digunakan dalam applet, dideteksi oleh converter.

File CAP dan file export

Teknologi Java Card memperkenalkan 2 format file binari baru yang memungkinkan pembuatan, distribusi, dan eksekusi software Java Card yang platform-independent. File CAP berisi kelas (dalam paket Java) yang merepresentasikan executable biner. Format file JAR digunakan sebagai wadah untuk file CAP. File CAP adalah file JAR yang berisi sekumpulan komponen, yang digunakan sebagai file individu dalam file JAR. Masing-masing komponen merupakan aspek pada isi file CAP, yaitu kelas, informasi, executable bytecodes, menghubungkan informasi, verifikasi informasi, dan sebagainya. File CAP dioptimalkan untuk smart card dengan menggunakan struktur data kompleks. File CAP merupakan sekumpulan instruksi (dalam byte) yang didasarkan pada instruksi Java dan dioptimalkan dari instruksi Java.

Fitur pemrograman Java yaitu “Write once, run anywhere“, mungkin merupakan fitur yang paling singnifikan. Dalam teknologi Java, kelas adalah pusat arsitektur Java. Kelas merupakan standar kompatibilitas biner dari platform Java. Karena sifat tersebar dari arsitektur sistem Java Card , file CAP menetapkan format file yang standar untuk kompatibilitas biner pada platform Java Card. File CAP adalah file yang di-load ke Java smart card. Sebagai contohnya, file CAP memungkinkan loading yang dinamik dari kelas applet setelah kartu dibuat. Itulah mengapa dinamai Converted Applet (CAP).

File export di-load ke dalam smart card dan tidak digunakan secara langsung oleh interpreter. File export diproduksi dan dikonsumsi oleh konverter untuk verifikasi dan penghubung fungsi. File export seperti file header dalam bahasa pemrograman C. File export berisi informasi API public untuk kelas. Ini merupakan ruang lingkup pengaksesan dan nama pada kelas, serta ruang lingkup pengaksesan dan tanda tangan pada metode dan bagian kelas. File export juga berisi informasi penghubung untuk referensi antar paket pada kartu.

File export tidak berisi beberapa implementasi, sehingga tidak berbentuk byte. Maka dari itu, file export dapat didistribusikan dengan bebas oleh pembuat applet kepada user-user applet yang potensial tanpa menyebutkan detail implementasi internal.

Konverter Java Card

Tidak seperti JVM, yang memproses 1 kelas pada 1 waktu, unit konversi pada konverter adalah 1 paket. Kelas diproduksi dari kode Java oleh kompiler Java. Kemudian, konverter memproses semua kelas yang membangun paket Java dan mengubah paket menjadi file CAP.

Selama konversi, komputer melakukan tugas-tugas seperti yang JVM lakukan dalam lingkungan desktop waktu loading kelas:

  • Memverifikasi apakah kelas sudah sesuai atau tidak sesuai aturan
  • Mengecek pelanggaran pada subset bahasa Java Card
  • Melakukan inisialisasi variabel static
  • Menjadikan referensi simbolik untuk kelas, metode, dan field menjadi lebih padat sehingga lebih efisien pada kartu
  • Mengoptimalkan byte dengan mengambil keuntungan dari informasi yang diperoleh pada loading kelas dan linking time
  • Mengalokasikan penyimpanan dan membuat struktur data virtual machine untuk menunjukkan kelas.

     

Input konverter tidak hanya kelas yang akan dikonversi, tapi juga satu atau lebih file export. Disamping menghasilkan file CAP, konverter menghasilkan file export untuk paket yang dikonversi. Konverter me-load semua kelas yang ada dalam paket. Jika paket meng-import kelas dari paket lain, konverter juga me-load file export dari paket itu. Output konverter adalah file CAP dan file export.


Interpreter Java Card

Interpreter Java Card menyediakan runtime yang mendukung model bahasa Java, sehingga membuat kode applet tidak tergantung pada hardware tertentu saja. Interpreter melakukan tugas-tugas berikut:

  • Mengeksekusi instruksi (dalam byte) dan akhirnya mengeksekusi applet
  • Mengendalikan alokasi memori dan pembuatan objek
  • Memainkan peran penting dalam menjamin keamanan runtime

     

JCVM terdiri dari konverter dan interpreter. Walaupun begitu, JCVM dalam definisi kita, ditujukan hanya pada interpreternya saja. Aturan ini sudah diterapkan pada awal publikasi Java Card. Tapi pembaca harus berhati-hati juga dalam membandingkan platform Java dan Java Card, karena eksekusi kelas pada platform Java dilakukan bersama-sama oleh konverter dan interpreter.

INSTALLER JAVA CARD DAN PROGRAM INSTALASI OFF-CARD

Interpreter Java Card tidak sendirian me-load file CAP. Interpreter hanya mengeksekusi kode yang ditemukan dalam file CAP. Dalam teknologi Java Card, mekanisme untuk men-download dan meng-install file CAP dimasukkan dalam sebuah unit yang disebut installer.

Installer Java Card berada dalam kartu. Installer bekerjasama dengan program instalasi off-card. Program instalasi off-card mengirim executable dalam file CAP ke installer yang berjalan pada kartu lewat Card Acceptance Device (CAD). Installer menulis kode biner ke dalam memori smart card, menghubungkannya dengan kelas lain yang sudah berada dalam kartu, serta membuat dan menginisialisasi beberapa struktur data yang digunakan secara internal oleh Java Card Runtime Environment (JCRE).


Pembagian fungsionalitas antara interpreter dan installer file CAP menjaga interpreter tetap kecil dan menyediakan fleksibilitas untuk implementasi installer. Penjelasan lebih lanjut dari installer diberikan pada bab berikutnya.

This entry was posted in Java Card. Bookmark the permalink.