JavaCard

***JavaCard***
Teknologjia JavaCard kombinon nënbashkësinë e gjuhës programuese Java me ambientin e
ekzekutimit të optimizuar për smart kartela apo pajisje të ngjashme me resurse të kufizuara.
Në vitin 1990 në kompaninë Sun filloi zhvillimi i gjuhës së re programuese [Java](http://en.wikipedia.org/wiki/Java_(programming_language)).
Objektivat e kësaj gjuhe ishin që të krijohen programe që janë të pavarura nga hardueri, të sigurta e që
mund të përdoren për mikrokontrollera. Benefiti kryesorë nga gjuha Java për smart kartela është mundësia që cilido zhvillues
mund të krijojë aplikacione për smart kartela. Kjo për arsye se Java është një gjuhë e lehtë,
ekzekutohet në shumë platforma dhe tashmë veçse është e njohur për programerët. Java për smart
kartela është nënbashkësi e gjuhës Java për kompjuterë, pra disa opsione janë larguar e disa janë shtuar
në mënyrë që Java të përshtatet për smart kartela.
Së pari applet-i kalon nëpër “bytecode verifier”, i cili kontrollon fajllin, sintaksen, metodat e
argumentet e tyre. Ngarkuesi(ang. loader) merr kodin dhe e dërgon atë përmes fajllit të formatit
CAP(Card Application) tek interpreteri. Ky kalim duhet të jetë i siguruar përmes nëshkrimeve digjitale
nga rreziku i manipulimit gjatë kalimit nga një pjesë e kartelës në tjetrën. Interpreteri e merr këtë kod
dhe e kthen në kod të makinës dhe e dërgon në procesor për ekzekutim. Menaxheri i sigurisë
vazhdimisht përcjellë interpretimin, e nëse vërehet ndonjë problem inicon përjashtim dhe ndërpren
interpretimin.
Meqë Java për smart kartela është nënbashkësi e Java-s për kompjuterë, në vazhdim do të
përmenden disa dallime dhe të përbashkëta në mes tyre:
* Thread-ët nuk përkrahen në [Java](http://en.wikipedia.org/wiki/Java_(programming_language)) për smart kartela sepse CPU-ja e thjeshtë e smart kartelave
nuk mundëson ekzekutimin efiçientë të disa thread-ëve paralelisht.
* Garbage Collector(klasifikues i mbeturinave në memorje) nuk përkrahet nga Java për smart
kartela, kështuqë në programet me smart kartela nuk mund të përdoret funksioni finalize(), i
cili aktivizon “garbage collector”.
* Fushat e të Dhënave, përkrahen vetëm ato një dimensionale(vektorët) për arsye të memorjes
së kufizuar. Tipet e anëtarëve të vektorit duhet të jenë vetëm tipe primitive të përkrahura nga
JavaCard teknologjia.
* Trashegimia përkrahet plotësisht edhe në Java-n për smart kartela.
* Përjashtimet(ang. Exceptions) përkrahen plotësisht nga Java për smart kartela dhe
mundësojnë kontrollimin dhe shmangjen e gabimeve fatale që ndodhin. Pra edhe në smart
kartela mund të përdoren funksionet try(), catch(), finally(), throw().
* Tipet primitive që përkrahen në Java smart kartela janë bool, byte e short. Këto tipe në
përgjithësi përkrahen në të gjitha smart kartelat me JavaCard. Tipi i të dhënave int është
alternativë, dhe iplementohet vetëm tek procesorët me të avancuar. Te smart
kartelat nuk përkrahen tipet string, double, float apo long.
Java për smart kartela përmes librarive javacardx.crypto përkrah enkriptimin simetrik, duke
mundësuar krijimin e çelësit, dhe enkriptimin e dekriptimin përmes DES,
si dhe dekriptimin përmes Triple DES(3DES) algoritmit. Gjithashtu JavaCard teknologjia përkrah
edhe ekzekutimin e algoritmeve asimetrike, konkretisht atë [RSA](http://en.wikipedia.org/wiki/RSA_(algorithm))(Rivest Shamir Adleman), përmes së
cilit bëhet authentikimi dhe verefikimi, në fakt authentikimi është më i zakonshëm në smart kartela.
Përveq sigurisë që smart kartelat duhet të ofrojnë për përdoruesin përmes algoritmeve
kriptografike, gjithashtu smart kartela duhet që të jetë e siguruar në mënyrë që të mos manipulohet.
Java smart kartelat mundësojnë këtë siguri duke ofruar një ambient të sigurtë të ekzekutimit. Pikë së
pari aplikacionet mbrohen nga njëri tjetri me anë të firewall(“mur mbrojtës”) i cili i pamundëson
aplikacioneve që të ndërhynë në hapësirën memorike që i takon një aplikacioni tjetër. Kjo siguri është
e domosdoshme për smart kartelat me shumë aplikacioni sikurse që janë Java smart kartelat.

*** Klasat qe perdore Java Smart Kartela***

Klasat e JavaCard API-t janë më me pak librari dhe janë më kompakte se sa ato të Java platformës.
Zhvilluesit që kanë punuar
më parë në Java platformë mund të mos i njohin disa klasa kryesore që përdoren në Java smart kartela
përveç java.lang e cila përdoret në të dy platformat. Klasat si String, IO, Net e të tjera, nuk përdoren
në Java smart kartela për arsye të kufizimeve në memorje.
Në vazhdim do të përmendim disa nga klasat kryesore që përdorë JavaCard teknologjia me
nga një përshkrim të shkurtër për secilën:
* java.io, kjo paketë është nënbashkësi e java.io paketës së Java-s standarde. Përmbanë klasën
IOException e cila shërben për të dërguar sinjal se një gabim ka ndodhur në I/O modulet e
smart kartelës.
* java.lang, kjo paketë gjithashtu është e derivuar nga java.lang e platformës Java. Kjo paketë
përmbanë funksinalitetin kryesorë që kërkohet nga . Klasa kryesore këtu është
Throwable, e cila është klasa bazë për përjashtimet(ang. Exceptions).
* javacard.framework, kjo paketë ofron një bashkësi të klasave për të krijuar funkisonalitetin,
komunikuar dhe punuar me JavaCard applet-ët. Këto klasa shërbejnë për të realizuar
funksionalitet bazë, për funksione tjera duhet të shtohen librari tjera. 
Klasat kryesore të kësaj pakete jane:
* javacard.framework.AID, mbanë 5-16 bajtat e AID(Application ID)-së sikurse është
e specifikuar në ISO7816-5 standardin.
* javacard.framework.APDU, ofron metoda për pranimin dhe dërgimin e të dhënave
në mes të smart kartelës dhe terminalit përmes APDU  mesazheve.
* javacard.framework.OwnerPIN, ofron funksione për manovrim me PIN-in e
mbajtësit të kartelës.
* javacard.security, kjo paketë posedon klasa që shërbejnë për të implementuar sigurinë dhe
algoritmet kriptografike në Java smart kartela. Gjithashtu në anën e sigurisë të smart kartelës
është edhe paket javacardx.crypto e cila është e dedikuar për të mundësuar dekriptimin.
## References
*
*
*
*