Einfach und sicher: So lassen sich Smartcards programmieren

Aufgrund der strikten Hardwarebeschränkungen kann Java Card nur ein limitiertes Subset der Programmiersprache Java unterstützen. Alle Sprachkonstrukte von Java Card gibt es aber umgekehrt auch in Java. Sie verhalten sich identisch. Im Zuge des üblichen Build-Zyklus wird ein Java-Card-Programm von einem Java-Compiler ohne spezielle Optionen in eine Java-Klassendatei kompiliert. Diese Klassendatei wird dann mit speziellen Tools der Java-Card-Plattform nachbearbeitet.

Viele Funktionen von Java werden von Java Card nicht unterstützt. Dazu zählen etwa Typen wie char, double, float und long, der transient-Qualifier, enums, mehrdimensionale Arrays, Finalisierung, Objektklone oder Threads. Einige Funktionen sind außerdem Laufzeitoptionen, die in vielen aktuellen Smartcards fehlen. Das trifft besonders auf den Typ int zu, der der standardmäßige Typ von Java-Ausdrücken ist, sowie auf die Speicherbereinigung von Objekten.

Java-Card-Bytecode, der von der Java-Card-Virtual-Machine ausgeführt wird, ist eine funktionale Untermenge des J2SE-Bytecodes einer JVM. Er verwendet jedoch eine andere Codierung, die für möglichst geringen Speicherplatz optimiert ist. Ein Java-Card-Applet braucht normalerweise weniger Bytecode als ein hypothetisches Java-Applet, das durch Kompilieren desselben Java-Quellcodes erzeugt würde. Das spart Speicher, ein absolutes Muss bei Komponenten wie Smartcards, die nur über beschränkte Ressourcen verfügen. Der Nachteil dieses Konzepts ist, dass wie erwähnt einige Funktionen von Java nicht unterstützt werden und es Speicherplatzbeschränkungen gibt. Mithilfe einiger Verfahren lassen sich diese Speicherplatzbeschränkungen aber überwinden. Beispielsweise kann man den Anwendungscode in kleine Pakete aufteilen, die unter dem Limit von 64 KByte bleiben.

Die Standardklassenbibliothek von Java Card und die Laufzeitunterstützung unterscheiden sich stark von denen in Java. Der gemeinsame Subset ist minimal. So wird zum Beispiel die Klasse Java-Security-Manager in Java Card nicht unterstützt, sondern die Java-Card-Virtual-Machine implementiert Sicherheitsrichtlinien. Transienten, also nicht persistente, schnelle RAM-Variablen, die auch Klassenmitglieder sein können, werden durch eine Java-Card-Klassenbibliothek verarbeitet. In Java gibt es dafür direkte Codierungsunterstützung.

Auch die Programmiertechniken für eine Java-Card-Anwendung unterscheiden sich deutlich von denjenigen eines Java-Programms. Java Card verwendet ein genau definiertes Subset von Java. Das beschleunigt die Einarbeitung und ermöglicht die Verwendung einer Java-Umgebung für die Entwicklung von Java-Card-Programmen sowie die Fehlersuche. Wird die Fehlerbeseitigung mit Java-Bytecode durchgeführt, sollte allerdings sichergestellt sein, dass die Klassendatei den Beschränkungen von Java Card entspricht. Dazu konvertiert man sie einfach in Java-Card-Bytecode. Außerdem sollten möglichst früh Tests mit einer echten Java-Card-Smartcard durchgeführt werden, um ein Gespür für die Performance zu bekommen.

Weitere Informationen zu Java-Card:

Page: 1 2

ZDNet.de Redaktion

Recent Posts

Lags beim Online-Gaming? DSL-Vergleich und andere Tipps schaffen Abhilfe

Beim Online-Gaming kommt es nicht nur auf das eigene Können an. Auch die technischen Voraussetzungen…

2 Tagen ago

GenKI-Fortbildung immer noch Mangelware

Fast jedes zweite Unternehmen bietet keinerlei Schulungen an. In den übrigen Betrieben profitieren oft nur…

2 Tagen ago

Netzwerk-Portfolio für das KI-Zeitalter

Huawei stellt auf der Connect Europe 2024 in Paris mit Xinghe Intelligent Network eine erweiterte…

2 Tagen ago

Internet-Tempo in Deutschland: Viel Luft nach oben

Höchste Zeit für eine schnelle Kupfer-Glas-Migration. Bis 2030 soll in Deutschland Glasfaser flächendeckend ausgerollt sein.

2 Tagen ago

Erste Entwickler-Preview von Android 16 verfügbar

Schon im April 2025 soll Android 16 den Status Plattformstabilität erreichen. Entwicklern gibt Google danach…

2 Tagen ago

Kaspersky warnt vor Cyberangriff auf PyPI-Lieferkette

Die Hintermänner setzen KI-Chatbot-Tools als Köder ein. Opfer fangen sich den Infostealer JarkaStealer ein.

2 Tagen ago