Pour répondre à votre troisième question
Pouvez-vous expliquer les règles qui m'aident à réduire la taille de mon applet ?
Quelques lignes directrices de base sont :
-
Gardez le nombre de méthodes au minimum, car vous savez que nous avons des ressources très limitées pour les cartes à puce et que l'appel de méthodes est une surcharge, donc avec un minimum d'appels de méthodes, les performances de la carte augmenteront. Évitez d'utiliser les méthodes get/set. Les appels récursifs doivent également être évités car la taille de la pile dans la plupart des cartes est d'environ 200 octets.
-
Évitez d'utiliser plus de 3 paramètres pour les méthodes virtuelles et 4 pour les méthodes statiques. De cette façon, le compilateur utilisera un certain nombre de raccourcis de bytecode, ce qui réduit la taille du code.
-
Pour travailler sur des données temporaires, on peut utiliser un tampon APDU ou des tableaux transitoires car l'écriture sur EEPROM est environ 1 000 fois plus lente que l'écriture sur RAM.
-
L'héritage est également une surcharge dans javacard, en particulier lorsque la hiérarchie est complexe.
-
L'accès aux éléments d'un tableau est également une surcharge pour la carte. Ainsi, dans les situations où l'accès à un élément de tableau est répété, essayez de stocker l'élément dans une variable locale et de l'utiliser.
Au lieu de faire ça :
if (arr[index1] == 1) do this;
OR
if (arr[index1] == 2) do this;
OR
if (arr[index1] == 3) do this;
Faites-le :
temp = arr[index1];
if (temp == 1) do this;
OR
if (temp == 2) do this;
OR
if (temp == 3) do this;
- Remplacez les instructions if-else imbriquées par des instructions switch équivalentes, car les switch s'exécutent plus rapidement et prennent moins de mémoire.