magnifique langage ou int est pas supporté en pratique (seulement short et byte, signés les deux) mais ou le langage est compilé en java normal, puis transpilé en javacard, donc les expressions, ou les règles de promotion en entier du java s'appliquent, doivent être bourrées de cast pour que le bytecode généré par javac soit compatible javacard.
voir le merdier pour faire une comparaison non signée:
private static boolean isLower(short x, short y)
{
return ((short) ((x) + (short)0x8000) < (short)((y) + (short)0x8000));
}
parce que bien sur le littéral 0x8000 ne rentre pas dans un short sans cast, parce que javacard croit que c'est un int, alors que 0x7FFF n'a pas besoin de cast, parce que ca rentre dans un short...
et pour éviter des casts on se retrouve a
private static final short kZ = (short)0;
private static final byte kz = (byte) 0;
private static final short k4 = (short)4;
Bien entendu pas de pointeur en java donc chaque fois qu'on doit piocher dans un buffer, et ca arrive des centaines de fois, on se retrouve avec byte[] inArray, short inDataOffset, ...
mais a part ca ca permet de faire du dev assez tranquillou sur des cartes plutot diverses sans avoir a tout recompiler sur chaque plate forme. les performances se sont nettement améliorées ces 5 dernières années.