JavaCardはJavaCard APIによって具体化できるJavaベースの スマートカードであり,JavaCard 1.0が1996年に発行された. 実用レベルにバージョンアップされたJavaCard 2.0はSun Microsystems社が 1997年に発行した [IC97,JC97,JC].
JavaCard APIはJava言語でかかれたアプリケーションを,スマートカードで 利用するためのAPIである. スマートカード上のプログラムはカードOS(COS)上で動作するが,COSに 互換性がないと同じプログラムを導入しても異なる機種上では 動作しなくなる.これがスマートカードの多目的利用を妨げる原因であった. そこで,Javaが動作するチップを使ってどの環境でも動作するように したカードがJavaCardである.
JavaCard API仕様に準拠したJavaCardアプレットはプラットフォームに 依存しないため,別のベンダーのカードでも動作させることが可能である. また,複数のアプリケーションを搭載することもできる.これらの アプリケーションは,カード発行後にもインストールすることができる.
JavaCardはISO 7816やEMVに準拠している.
VISAインターナショナルが世界中のVISAメンバー金融機関 に対して提供するプログラム「Visa Smart」を行うに当たり,スマートカード, 端末,アプリケーション開発サービスの提供を行う. このカード,端末,アプリケーション開発サービスの具体的仕様が Visa Open Platformである. ここでいうスマートカードとは,JavaCard 2.0仕様に基づくもので, 金融以外の多機能性も有している. 各カード発行会社が金融や金融以外の機能を自由に選んで組み込めるように カード発行後のアプリケーションローディングの標準化, プラットフォームの独立性,マルチアプリケーションのポータビリティなど を目指している.
また,カード端末共にISO/EMV仕様のカード及び端末との相互互換性を保証し, スマートカードのPCでの利用に際してはマイクロソフトのSmart Card for Windows のサポートを行う.
MULTOSは1枚のスマートカード上に複数のアプリケーションを搭載できるのが 最大の特徴である.そのため,決済機能のほか出退勤管理や定期券など, さまざまな機能を1枚のカードにまとめられる利点がある. 各アプリケーションはパソコンを使ってロードしたり削除したりできる.
チップ上にOSが載り,それらの上にアプリケーションが搭載される MULTOSはC言語をベースとしたMEL(MULTOS Enabled Language)と呼ばれる 言語を使った開発環境が用意されているアプリケーションである.
MULTOSの電気仕様や端末との通信コマンドはEMV仕様に準拠しており, 既存のMondexカードやICクレジットカードなどと同じ端末で利用可能である.