بطاقة جافا
تُعدّ Java Card تقنية برمجية تُمكّن من تشغيل تطبيقات Java ( التطبيقات المصغّرة ) بأمان على البطاقات الذكية ، وبشكل أعم على أجهزة مماثلة ذات سعة تخزين صغيرة وآمنة [ 1 ] تُعرف باسم " العناصر الآمنة " (SE). واليوم، لم يعد العنصر الآمن مقتصراً على البطاقات الذكية وغيرها من رموز التشفير القابلة للإزالة؛ بل يُستخدم أيضاً على نطاق واسع العناصر الآمنة المدمجة في لوحات الأجهزة، بالإضافة إلى تصميمات الأمان الجديدة المدمجة في الرقائق العامة. تُعالج Java Card هذا التباين في الأجهزة وخصوصياتها، مع الحفاظ على قابلية نقل التعليمات البرمجية التي توفرها Java.
تُعدّ Java Card أصغر منصات Java المصممة خصيصًا للأجهزة المدمجة. تُمكّن Java Card المستخدم من برمجة هذه الأجهزة وتخصيصها لتطبيقات محددة. وهي تُستخدم على نطاق واسع في مختلف القطاعات، مثل الاتصالات اللاسلكية عبر شرائح SIM وشرائح SIM المدمجة (eSIM)، والدفع عبر البطاقات المصرفية [ 2 ] ، والدفع عبر تقنية RFID ( NFC ) للهواتف المحمولة، بالإضافة إلى بطاقات الهوية، وبطاقات الرعاية الصحية، وجوازات السفر. كما تستخدم العديد من منتجات إنترنت الأشياء، كالبوابات، منتجات Java Card لتأمين الاتصالات مع الخدمات السحابية، على سبيل المثال.
طُرحت أول بطاقة جافا في عام 1996 من قِبل قسم البطاقات في شركة شلمبرجير ، والذي اندمج لاحقًا مع شركة جيمبلوس لتشكيل شركة جيمالتو . وتعتمد منتجات بطاقة جافا على مواصفات شركة صن مايكروسيستمز (التي استحوذت عليها شركة أوراكل في عام 2010). كما تعتمد العديد من منتجات بطاقة جافا على مواصفات منصة جلوبال بلاتفورم لإدارة التطبيقات على البطاقة بشكل آمن (التنزيل، والتثبيت، والتخصيص، والحذف).
تتمثل الأهداف الرئيسية لتصميم تقنية Java Card في قابلية النقل والأمان والتوافق مع الإصدارات السابقة. [ 3 ]
سهولة الحمل
يهدف Java Card إلى تعريف بيئة حوسبة قياسية للبطاقات الذكية، مما يسمح بتشغيل تطبيق Java Card نفسه على بطاقات ذكية مختلفة، تمامًا كما يتم تشغيل تطبيق Java على أجهزة كمبيوتر مختلفة. وكما هو الحال في Java، يتحقق ذلك باستخدام مزيج من آلة افتراضية (آلة Java Card الافتراضية) ومكتبة وقت تشغيل محددة جيدًا، والتي تُجرّد التطبيق إلى حد كبير من الاختلافات بين البطاقات الذكية. إلا أن قابلية النقل لا تزال محدودة بسبب مشكلات حجم الذاكرة والأداء ودعم وقت التشغيل (مثل بروتوكولات الاتصال أو خوارزميات التشفير). علاوة على ذلك، غالبًا ما يكشف الموردون عن واجهات برمجة تطبيقات خاصة بنظامهم البيئي، مما يزيد من تقييد قابلية نقل التطبيقات التي تعتمد على هذه الاستدعاءات. ولمعالجة هذه القيود، قدم فاسيليوس مافروديس وبيتر سفيندا مكتبة JCMathLib، وهي مكتبة تغليف تشفير مفتوحة المصدر لـ Java Card، تُمكّن من إجراء عمليات حسابية تشفيرية منخفضة المستوى لا تدعمها واجهة برمجة التطبيقات القياسية. [ 4 ] [ 5 ] [ 6 ]
حماية
طُوّرت تقنية بطاقات جافا في الأصل لغرض تأمين المعلومات الحساسة المخزنة على البطاقات الذكية . ويتحدد مستوى الأمان من خلال جوانب مختلفة لهذه التقنية:
- تغليف البيانات
- يتم تخزين البيانات داخل التطبيق، ويتم تنفيذ تطبيقات Java Card في بيئة معزولة (Java Card VM)، منفصلة عن نظام التشغيل والأجهزة الأساسية.
- جدار حماية التطبيق
- على عكس آلات جافا الافتراضية الأخرى، تدير آلة جافا كارد الافتراضية عادةً عدة تطبيقات، يتحكم كل منها في بيانات حساسة. ولذلك، يتم فصل التطبيقات المختلفة عن بعضها البعض بواسطة جدار حماية خاص بالتطبيقات الصغيرة، والذي يقيد ويتحقق من وصول عناصر البيانات من تطبيق صغير إلى آخر.
- علم التشفير
- يتم دعم خوارزميات المفاتيح المتماثلة الشائعة الاستخدام مثل DES و Triple DES و AES ، وخوارزميات المفاتيح غير المتماثلة مثل RSA ، وتشفير المنحنى الإهليلجي، بالإضافة إلى خدمات التشفير الأخرى مثل التوقيع وتوليد المفاتيح وتبادل المفاتيح.
- تطبيق صغير
- التطبيق المصغر عبارة عن آلة حالة تعالج فقط طلبات الأوامر الواردة وتستجيب عن طريق إرسال البيانات أو كلمات حالة الاستجابة إلى جهاز الواجهة.
تصميم
على مستوى اللغة، تُعدّ Java Card مجموعة فرعية دقيقة من Java: فجميع بنيات لغة Java Card موجودة في Java وتعمل بنفس الطريقة. ويصل الأمر إلى أنه كجزء من دورة بناء قياسية، يتم تجميع برنامج Java Card إلى ملف فئة Java بواسطة مُجمِّع Java؛ ثم تتم معالجة ملف الفئة لاحقًا بواسطة أدوات خاصة بمنصة Java Card.
مع ذلك، لا تدعم بطاقة Java Card العديد من ميزات لغة Java (وخاصةً الأنواع `types` charو` doubletypes` floatو` types` و`types`؛ longوالمُؤهِّل transient` inums` ؛ والتعدادات؛ والمصفوفات متعددة الأبعاد ؛ والإنهاء ؛ واستنساخ الكائنات؛ والخيوط ). علاوةً على ذلك، لا تُوفِّر العديد من البطاقات الذكية الفعلية بعض الميزات الشائعة في Java أثناء التشغيل (وخاصةً النوع `type` int، وهو النوع الافتراضي لتعبير Java؛ وجمع البيانات المهملة للكائنات).
بايت كود
يُعدّ بايت كود Java Card، الذي يُشغّله جهاز Java Card الظاهري، مجموعةً وظيفيةً من بايت كود Java 2 الذي يُشغّله جهاز Java الظاهري القياسي، ولكن بتشفير مختلف لتحسين حجمه. ولذلك، يستخدم تطبيق Java Card عادةً بايت كود أقل من تطبيق Java الظاهري الافتراضي الناتج عن تجميع نفس كود مصدر Java. هذا يُوفّر الذاكرة، وهو أمر ضروري في الأجهزة ذات الموارد المحدودة مثل البطاقات الذكية. وكنتيجةٍ للموازنة بين التصميم والوظائف، لا يدعم التطبيق بعض ميزات لغة Java (كما ذُكر أعلاه)، كما أنه يُعاني من قيود في الحجم. توجد تقنيات للتغلب على هذه القيود، مثل تقسيم كود التطبيق إلى حزم لا يتجاوز حجمها 64 كيلوبايت .
المكتبة ووقت التشغيل
تختلف مكتبة فئات Java Card القياسية ودعم وقت التشغيل اختلافًا كبيرًا عن Java، والمجموعة الفرعية المشتركة ضئيلة. معظم الحزم المتوفرة في مكتبة Java SE القياسية غير موجودة. على سبيل المثال، فئة Java Security Manager غير مدعومة في Java Card، حيث تُنفذ سياسات الأمان بواسطة آلة Java Card الافتراضية؛ والمتغيرات العابرة (متغيرات RAM سريعة غير دائمة يمكن أن تكون أعضاءً في الفئة) مدعومة عبر مكتبة فئات Java Card، بينما تتمتع بدعم أصلي في Java. على سبيل المثال، لا يوجد Stringنوع في Java Card، فقط byte[](على غرار لغة C ، حيث تُمثل سلاسل C كـchar[] ). معظم الأنواع الأولية غائبة باستثناء byte، shortو ، intو boolean. [ 7 ]
جافا.*
تحتوي الحزمة java.langعلى الفئات الأساسية لتقنية Java Card، والتي تشمل الفئتين Object(جذر التسلسل الهرمي للفئات)، Throwable(والتي لها فئة فرعية واحدة معروفة فقط Exception، حيث Errorأن الفئة غير موجودة) والاستثناءات ذات الصلة. كما ذُكر سابقًا، java.lang.Stringفإن الفئة غير موجودة في Java Card بسبب قيود النظام الأساسي، حيث يتم تمثيل السلاسل النصية بدلاً من ذلك كـ byte[]. تحتوي المصفوفات ( T[]) على lengthالحقل .
لا توجد فئات تغليف Byte، ولا توجد فئات تغليف للأنواع الأولية Short، ولا توجد فئات تغليف للأنواع الأولية .IntegerBooleanbyteshortintboolean
جميع الاستثناءات باستثناء java.io.IOExceptionو javacard.framework.CardExceptionهي حالات من java.lang.RuntimeException.
تتضمن الحزمة java.rmiواجهة Remoteللطرق التي يتم استدعاؤها من تطبيق عميل جهاز قبول البطاقات (CAD).
javacard.*
تحتوي الحزمة javacard.frameworkعلى إطار عمل من الفئات لإنشاء تطبيقات Java Card المصغّرة. وهي Appletفئة مجردة للتطبيق المصغّر. Utilتحتوي هذه الفئة على دوال مساعدة على مصفوفات البايت ( byte[]) و shorts.
تحتوي الحزمة javacard.securityعلى واجهات وفئات للعمل مع وظائف التشفير والأمان.
javacardx.*
هذه حزم إضافية لتكملة javacard.*الحزم الأساسية.
تحتوي الحزم javacardx.framework.*على أدوات مساعدة متنوعة، مثل فئة javacardx.framework.math.BigNumber(عمليات على الأرقام الكبيرة)، javacardx.framework.nio(حزمة للمخازن المؤقتة، حاويات للبيانات)، javacardx.framework.string.StringUtil(فئة توفر طرقًا على السلاسل المشفرة بـ UTF-8، والتي لا تزال ممثلة كـ byte[])، حزمة javacardx.framework.timeتحتوي على فئات SysTime(لوقت النظام) و TimeDuration(لتمثيل مقدار من الوقت)، javacardx.framework.util.intx.JCintوللعمل مع int.
تحتوي الحزم javacardx.security.*على وظائف للعمل مع الشهادات، ووظائف الاشتقاق التشفيري، والمزيد.
يحتوي هذا javacardx.biometryالبرنامج على وظائف لأطر عمل القياسات الحيوية في Java Card. javacardx.biometry.BioBuilderتُستخدم هذه الفئة لإنشاء قوالب مرجعية للقياسات الحيوية، وتحتوي على ثوابت متنوعة تمثل وسائل تعريف بيومترية مختلفة.
ميزات محددة
يدعم وقت تشغيل Java Card والآلة الافتراضية أيضًا ميزات خاصة بمنصة Java Card:
- المثابرة
- في Java Card، تُخزَّن الكائنات افتراضيًا في الذاكرة الدائمة (ذاكرة الوصول العشوائي (RAM) محدودة جدًا في البطاقات الذكية، وتُستخدم فقط للكائنات المؤقتة أو الحساسة أمنيًا). لذلك، تم تعديل بيئة التشغيل ورمز البايت لإدارة الكائنات الدائمة.
- الذرية
- بما أن البطاقات الذكية تعمل بالطاقة الخارجية وتعتمد على ذاكرة دائمة، يجب أن تكون التحديثات الدائمة ذرية. ولذلك، فإن عمليات الكتابة الفردية التي تُنفذها تعليمات البايت كود وطرق واجهة برمجة التطبيقات (API) مضمونة الذرية، ويتضمن وقت تشغيل بطاقة جافا آلية معاملات محدودة.
- عزل التطبيق الصغير
- جدار حماية بطاقة جافا هو آلية تعزل التطبيقات المصغرة المختلفة الموجودة على البطاقة عن بعضها البعض. كما يتضمن آلية مشاركة تسمح لتطبيق مصغر بإتاحة عنصر ما صراحةً لتطبيقات مصغرة أخرى.
تطوير
تختلف تقنيات البرمجة المستخدمة في برنامج Java Card العملي اختلافًا كبيرًا عن تلك المستخدمة في برنامج Java. ومع ذلك، فإن استخدام Java Card لمجموعة فرعية محددة من لغة Java يُسرّع عملية التعلم، ويتيح استخدام بيئة Java لتطوير وتصحيح برنامج Java Card (ملاحظة: حتى في حال استخدام بايت كود Java للتصحيح، تأكد من أن ملف الفئة يتوافق مع قيود لغة Java Card عن طريق تحويله إلى بايت كود Java Card؛ واختبره على بطاقة ذكية Java Card حقيقية في وقت مبكر لتقييم الأداء). علاوة على ذلك، يمكن تشغيل وتصحيح كل من كود Java Card الخاص بالتطبيق المراد تضمينه في البطاقة الذكية، وتطبيق Java الذي سيعمل على الجهاز المضيف باستخدام البطاقة الذكية، حيث يعملان معًا في نفس البيئة.
مثال
هذا مثال لبرنامج "Hello, World!" في Java Card.
package org.wikipedia.examples ;استيراد javacard.framework.APDU ؛ استيراد javacard.framework.Applet ؛ استيراد javacard.framework.ISO7816 ؛ استيراد javacard.framework.ISOException ؛ استيراد javacard.framework.Util ؛public class HelloWorldApplet extends Applet { // بايت INS (تعليمات) لـ "قول مرحباً" final static byte HELLO_INS = ( byte ) 0x01 ;// معرف التطبيق (AID) للتطبيق المصغر private static final byte [] HELLO_APPLET_AID = { ( byte ) 0xA0 , ( byte ) 0x00 , ( byte ) 0x00 , ( byte ) 0x00 , ( byte ) 0x62 , ( byte ) 0x03 , ( byte ) 0x01 , ( byte ) 0x0C , ( byte ) 0x01 };protected HelloWorldApplet () { register (); }public static void install ( byte [] byteArray , short byteOffset , byte byteLength ) { // لا حاجة لتعيين المرجع // نحتاج فقط إلى استدعاء المُنشئ HelloWorldApplet app = new HelloWorldApplet (); }public void process ( APDU apdu ) { byte [] buffer = apdu . getBuffer ();إذا ( تم تحديد التطبيق الصغير ()) { إرجاع ؛ }byte ins = buffer [ ISO7816 . OFFSET_INS ] ;إذا كانت قيمة `ins` تساوي ` HELLO_INS` ، فسيتم إرسال رسالة ` apdu` باستخدام ` sendHello` . وإلا ، فسيتم طرح استثناء ` ISOException` مع رسالة الخطأ ` ISO7816.SW_INS_NOT_SUPPORTED` .Private void sendHello ( APDU apdu ) { byte [] buffer = apdu . getBuffer (); بايت [] hello = { 'H' , 'e' , 'l' , 'l' , 'o' };short length = ( short ) hello . length ; Util . arrayCopyNonAtomic ( hello , ( short ) 0 , buffer , ( short ) 0 , length ); apdu . setOutgoingAndSend (( short ) 0 , length ); } }الإصدارات
أصدرت أوراكل العديد من مواصفات منصة Java Card، وتوفر أدوات SDK لتطوير التطبيقات. عادةً ما يقوم مصنّعو البطاقات الذكية بتطبيق مجموعة فرعية فقط من الخوارزميات المحددة في منصة Java Card، والطريقة الوحيدة لمعرفة المجموعة الفرعية المُطبقة هي اختبار البطاقة. [ 8 ]
- الإصدار 3.2 (30.01.2023) [ 9 ]
- تم تقديم دعم لبروتوكولات (D)TLS1.3
- تمت إضافة توضيحات لواجهة برمجة التطبيقات (API) لمساعدة مطوري التطبيقات وزيادة مستوى التوافق بين التطبيقات المتعددة بشكل كبير.
- الإصدار 3.1 (17.12.2018) [ 10 ]
- تمت إضافة دعم توليد أزواج المفاتيح القابلة للتكوين، ودعم المنحنيات الإهليلجية المسماة، ودعم الخوارزميات والعمليات الجديدة، وأنماط AES إضافية، وخوارزميات صينية.
- الإصدار 3.0.5 (03.06.2015)
- Oracle SDK: Java Card Classic Development Kit 3.0.5u1 (03.06.2015)
- تمت إضافة دعم لـ Diffie-Hellman modular exponentialation، و Domain Data Conservation for Diffie-Hellman، و Elliptic Curve و DSA keys، و RSA-3072، و SHA3، و ECDSA العادي، و AES CMAC، و AES CTR.
- الإصدار 3.0.4 (06.08.2011)
- Oracle SDK: Java Card Classic Development Kit 3.0.4 (06.11.2011)
- تمت إضافة دعم لـ DES MAC8 ISO9797.
- الإصدار 3.0.1 (15.06.2009)
- Oracle SDK: Java Card Development Kit 3.0.3 RR (11.11.2010)
- تمت إضافة دعم لـ SHA-224 و SHA-2 لجميع خوارزميات التوقيع.
- الإصدار 2.2.2 (03.2006)
- Oracle SDK: Java Card Development Kit 2.2.2 (03.2006)
- تمت إضافة دعم لـ SHA-256 و SHA-384 و SHA-512 و ISO9796-2 و HMAC و Korean SEED MAC NOPAD و Korean SEED NOPAD.
- الإصدار 2.2.1 (10.2003)
- Oracle SDK: Java Card Development Kit 2.2.1 (10.2003)
- الإصدار 2.2 (11.2002)
- تمت إضافة دعم لتغليف مفاتيح التشفير AES، وخوارزميات CRC، وتغليف مفاتيح تشفير المنحنى الإهليلجي، وتبادل مفاتيح Diffie-Hellman باستخدام ECC، ومفاتيح ECC لمنحنيات كثيرات الحدود الثنائية ولمنحنيات الأعداد الصحيحة الأولية، وAES وECC وRSA بأطوال مفاتيح متغيرة.
- الإصدار 2.1.1 (18.05.2000)
- Oracle SDK: Java Card Development Kit 2.1.2 (05.04.2001)
- تمت إضافة دعم لـ RSA بدون حشو.
- الإصدار 2.1 (07.06.1999)
بطاقة جافا 3.0
تم تقسيم الإصدار 3.0 من مواصفات Java Card (المسودة الصادرة في مارس 2008) إلى إصدارين: الإصدار الكلاسيكي والإصدار المتصل . [ 11 ]
- يُعد الإصدار الكلاسيكي (الإصدار الحالي 3.0.5 الصادر في يونيو 2015) تطورًا لمنصة Java Card Platform الإصدار 2 (الذي صدر آخر إصدار منه 2.2.2 في مارس 2006)، وهو يدعم تطبيقات البطاقات التقليدية على الأجهزة ذات الموارد المحدودة مثل البطاقات الذكية. تتوافق التطبيقات القديمة عمومًا مع أجهزة الإصدار الكلاسيكي الأحدث، ويمكن أن تتوافق تطبيقات هذه الأجهزة الأحدث مع الأجهزة القديمة إذا لم تكن تشير إلى وظائف مكتبة جديدة. وقد حصلت البطاقات الذكية التي تُطبّق Java Card Classic Edition على شهادات أمان من عدة موردين، وهي متوفرة تجاريًا.
- تهدف النسخة المتصلة (الإصدار الحالي 3.0.2 الصادر في ديسمبر 2009) إلى توفير آلة افتراضية جديدة وبيئة تنفيذ محسّنة بميزات موجهة نحو الشبكة. يمكن تطوير التطبيقات كتطبيقات بطاقات تقليدية يتم طلبها بواسطة أوامر APDU ، أو كبرامج خادمة (servlets) باستخدام HTTP لدعم أنظمة الاتصال عبر الويب ( HTML ، REST ، SOAP، إلخ) مع البطاقة. يستخدم وقت التشغيل مجموعة فرعية من بايت كود Java (1.)6، بدون الفاصلة العائمة؛ وهو يدعم الكائنات المتقلبة ( جمع البيانات المهملة )، والمعالجة المتعددة ، وميزات الاتصال بين التطبيقات، والاستمرارية ، والمعاملات ، وميزات إدارة البطاقات، إلخ. اعتبارًا من عام 2021، كان استخدامها محدودًا في البطاقات الذكية المتوفرة تجاريًا، لدرجة أن الإشارة إلى بطاقة Java (بما في ذلك في صفحة ويكيبيديا الحالية) غالبًا ما تستبعد ضمنيًا النسخة المتصلة .
بطاقة جافا 3.1
تم إصدار Java Card 3.1 في يناير 2019.
تنسيق ملف CAP جديد ونموذج نشر التطبيقات المصغرة
- يمكن تقسيم وظائف التطبيق المصغر إلى حزم جافا متعددة
- قد يتجاوز حجم ملفات CAP 64 كيلوبايت
إطار عمل جديد للإدخال/الإخراج والأجهزة الطرفية الموثوقة
- يدعم النظام مجموعة متنوعة من الطبقات المادية وبروتوكولات التطبيقات، بالإضافة إلى بروتوكولات البطاقات الذكية المحددة في معيار ISO 7816.
- يتم تسهيل الوصول المنطقي إلى ملحقات الجهاز بواسطة تطبيقات العناصر الآمنة.
تحسينات المنصة الأساسية
- طرق عرض المصفوفات (طرق عرض على مجموعة فرعية من مصفوفة)، والموارد الثابتة المضمنة داخل ملف CAP، وقابلية توسيع واجهة برمجة التطبيقات المحسّنة
خدمات الأمن
- واجهة برمجة تطبيقات الشهادات، واجهة برمجة تطبيقات اشتقاق المفاتيح، واجهة برمجة تطبيقات العداد الرتيب، واجهة برمجة تطبيقات وقت النظام
امتدادات تشفيرية جديدة
- توليد أزواج المفاتيح القابلة للتكوين، منحنيات إهليلجية مسماة مثل منحنيات إدواردز ، أوضاع AES إضافية ( CFB و XTS )، خوارزميات صينية (SM2 - SM3 - SM4 )
انظر أيضاً
- جافا كارد منصة مفتوحة
- مُترجم Tiny C ، وهو مجموعة فرعية مماثلة من لغة أكبر
مراجع
- ↑ تشين، ز. (2000). تقنية بطاقات جافا للبطاقات الذكية: دليل معماري ودليل للمبرمج . سلسلة جافا من أديسون-ويسلي. أديسون-ويسلي. ISBN 978-0-201-70329-0تم الاطلاع عليه بتاريخ 9 أبريل 2019 .
- ↑ مكتبة أوراكل التعليمية (30 يناير 2013)، تطوير تطبيقات بطاقات جافا ، مؤرشفة من الأصل بتاريخ 13 ديسمبر 2021 ، تم الاطلاع عليها بتاريخ 18 أبريل 2019
- ↑ أحمد باتيل؛ كنان كالاجدزيتش؛ لاله جولافشان؛ منى تقوي (2011). "تصميم وتنفيذ إطار عمل مصادقة بدون معرفة مسبقة لبطاقة جافا" . المجلة الدولية لأمن المعلومات والخصوصية . 5 (3). IGI: 1–18 . doi : 10.4018/ijisp.2011070101 .
- ↑ مافروديس، فاسيليوس؛ سفيندا، بيتر (2020). "JCMathLib: مكتبة تشفير تغليفية لتطبيقات جافا كارد الشفافة والقابلة للتحقق". ورش عمل ندوة IEEE الأوروبية للأمن والخصوصية (EuroS&PW) لعام 2020. IEEE. الصفحات 383-390 . arXiv : 2008.11362 . doi : 10.1109/EuroSPW51379.2020.00056 .
- ↑ "JCMathLib" . GitHub . تم الاسترجاع في 12 أبريل 2025 .
- ↑ "OpenCrypto: Unchaining the JavaCard Ecosystem" . يوتيوب . تم الاطلاع عليه بتاريخ 12 أبريل 2025 .
- ↑ "نظرة عامة (واجهة برمجة تطبيقات بطاقات جافا، الإصدار الكلاسيكي)" . docs.oracle.com . شركة أوراكل . تم الاطلاع عليه بتاريخ 13 أكتوبر 2025 .
- ↑ "JCAlgTest - قاعدة بيانات لخوارزميات JavaCard المدعومة" . تم الاطلاع عليه بتاريخ 27 يناير 2016 .
- ↑ بونسيني، نيكولاس (30 يناير 2023). "الإعلان عن إصدار Java Card 3.2" . مدونة Java Card . تم الاطلاع عليه في 6 فبراير 2023 .
- ↑ بونسيني، نيكولاس. "الكشف عن Java Card 3.1: امتدادات تشفيرية جديدة" . blogs.oracle.com . تم الاطلاع عليه بتاريخ 18 أبريل 2019 .
- ↑ سامويلوف، ن. (2018). مقدمة في البرمجة: تعلم البرمجة بلغة جافا باستخدام هياكل البيانات والخوارزميات والمنطق . دار نشر باكت. ص 13. ISBN 978-1-78883-416-2تم الاطلاع عليه بتاريخ 9 أبريل 2019 .
روابط خارجية
- منصة أجهزة جافا
- البطاقات الذكية
