مكتبة فئات جافا
مكتبة فئات جافا ( JCL ) هي مجموعة من المكتبات القابلة للتحميل ديناميكيًا ، والتي يمكن للغات آلة جافا الافتراضية (JVM) استدعاؤها أثناء التشغيل . وهي المكتبة القياسية لجافا ولغات JVM الأخرى، ولذلك تُسمى أحيانًا مكتبة جافا القياسية . [ 1 ] ولأن منصة جافا لا تعتمد على نظام تشغيل محدد ، لا يمكن للتطبيقات الاعتماد على أي من المكتبات الأصلية للمنصة. بدلاً من ذلك، توفر منصة جافا مجموعة شاملة من مكتبات الفئات القياسية، التي تحتوي على الوظائف الشائعة في أنظمة التشغيل الحديثة. منذ جافا 9، يمكن الوصول إلى مكتبة فئات جافا من خلال مسار الوحدة النمطية باستخدام نظام وحدات منصة جافا .
تؤدي لغة التحكم في جافا (JCL) ثلاثة أغراض داخل جهاز جافا الافتراضي (JVM):
- مثل مكتبات التعليمات البرمجية القياسية الأخرى ، فإنها توفر للمبرمج مجموعة معروفة من المرافق المفيدة، مثل فئات الحاويات ومعالجة التعبيرات النمطية .
- توفر المكتبة واجهة مجردة للمهام التي تعتمد عادة بشكل كبير على الأجهزة ونظام التشغيل، مثل الوصول إلى الشبكة والوصول إلى الملفات .
- قد لا تدعم بعض المنصات الأساسية جميع الميزات التي يتوقعها تطبيق جافا. في هذه الحالات، يمكن لتطبيق المكتبة إما محاكاة تلك الميزات أو توفير طريقة موحدة للتحقق من وجود ميزة معينة.
يستخدم هذا النظام مساحات الأسماء java.*و javax.*و jdk.*. قد توجد بعض الفئات المضمنة في مساحات أسماء مثل sun.*أو com.sun.*(بالنسبة لشركة صن مايكروسيستمز )، ولكنها لا تُعتبر جزءًا من المكتبة القياسية. javaxارتبطت مساحة الاسم بشكل أساسي بمنصة جافا، الإصدار المؤسسي ، كحزم إضافية لمكتبة جافا القياسية.
التنفيذ والتكوين
تُكتب لغة JCL بالكامل تقريبًا بلغة جافا، باستثناء الأجزاء التي تحتاج إلى وصول مباشر إلى الأجهزة ونظام التشغيل (مثل الإدخال/الإخراج أو رسومات الصور النقطية )، والتي تُكتب بلغة C++ . [ 2 ] تستخدم الفئات التي تتيح الوصول إلى هذه الوظائف عادةً أغلفة واجهة جافا الأصلية للوصول إلى واجهات برمجة تطبيقات نظام التشغيل .
يُخزَّن معظم كود JCL في ملف أرشيف جافا واحد يُسمى " rt.jar "، وهو مُضمَّن في توزيعات JRE و JDK . توجد مكتبة فئات جافا ( rt.jar ) في مسار فئات التمهيد الافتراضي [ 3 ] ، ولا يلزم وجودها في مسار الفئات المُعلن للتطبيق. يستخدم وقت التشغيل مُحمِّل فئات التمهيد للعثور على JCL.
أدى نظام وحدات جافا (جزء من إصدار جافا 9 ) إلى كسر ملف JAR المتجانس " rt.jar " وقام بتقسيم JCL نفسه إلى عدة وحدات مع تبعيات محددة. [ 4 ]
المطابقة
يجب أن يجتاز أي تطبيق للغة جافا اختبارات مجموعة أدوات توافق تقنية جافا من أجل الامتثال، والتي تتضمن اختبارات JCL.
الميزات الرئيسية
يتم الوصول إلى ميزات JCL من خلال الفئات المتوفرة في الحزم .
java.langيحتوي على فئات وواجهات أساسية مرتبطة ارتباطًا وثيقًا باللغة ونظام التشغيل .- تتيح عمليات الإدخال/الإخراج والشبكات الوصول إلى نظام ملفات النظام الأساسي ، وبشكل أعم ، إلى الشبكات من خلال الحزم. بالنسبة للشبكات، يتوفر بروتوكول SCTP من خلال .
java.iojava.niojava.netcom.sun.nio.sctp - حزمة الرياضيات :
java.mathتوفر التعبيرات الرياضية والتقييم، بالإضافة إلى أنواع بيانات الأعداد العشرية والصحيحة ذات الدقة التعسفية. - المجموعات والأدوات المساعدة : هياكل بيانات المجموعة المدمجة ، وفئات الأدوات المساعدة، للتعبيرات النمطية ، والتزامن ، والتسجيل ، وضغط البيانات .
- واجهة المستخدم الرسومية والرسومات ثنائية الأبعاد : توفر حزمة AWT
java.awtعمليات واجهة المستخدم الرسومية الأساسية وترتبط بالنظام الأصلي. كما تحتوي على واجهة برمجة تطبيقات الرسومات ثنائية الأبعاد. أما حزمة Swingjavax.swing، فهي مبنية على AWT وتوفر مجموعة أدوات عناصر واجهة مستخدم مستقلة عن النظام الأساسي ، بالإضافة إلى مظهر قابل للتخصيص . كما أنها تتعامل مع مكونات النصوص القابلة للتحرير وغير القابلة للتحرير. - الصوت : واجهات وفئات لقراءة وكتابة وتسلسل وتوليف البيانات الصوتية.
- النص:
java.textيتعامل مع النصوص والتواريخ والأرقام والرسائل. - حزمة الصور:
java.awt.imageوتوفيرjavax.imageioواجهات برمجة التطبيقات لكتابة الصور وقراءتها وتعديلها. - XML : SAX و DOM و StAX و XSLT transforms و XPath وواجهات برمجة التطبيقات المختلفة لخدمات الويب ، مثل بروتوكول SOAP و JAX-WS .
- يتم توفير الأمن بواسطة [اسم الجهة]
java.security، ويتم توفير خدمات التشفير بواسطة [اسم الجهة]javax.crypto. - قواعد البيانات : الوصول إلى قواعد بيانات SQL عبر
java.sql - الوصول إلى محركات البرمجة النصية:
javax.scriptتتيح الحزمة الوصول إلى أي لغة برمجة نصية متوافقة . - التطبيقات المصغّرة :
java.appletتسمح بتنزيل التطبيقات عبر الشبكة وتشغيلها داخل بيئة معزولة محمية - Java Beans :
java.beansتوفر طرقًا لمعالجة المكونات القابلة لإعادة الاستخدام. - الاستبطان والتأمل:
java.lang.Classيمثل فئة، ولكن تتوفر فئات أخرى مثل Method و Constructor فيjava.lang.reflect.
الحزم خارج نطاق الاسم الرئيسي
تُضمّن لغة جافا بعض الحزم خارج نطاقات الأسماء الرئيسية ( java.*، javax.*و، و jdk.*). ومن بين هذه الحزم:
com.sun.*: بعض الحزم الداخلية التي طورتها شركة Sun Microsystems في الأصل ، لـ HotSpot VM، وشجرة بناء الجملة المجردة ، وواجهة تصحيح أخطاء Java، وخوادم HTTP.netscape.javascript.*: فئات للوصول إلى محرك جافا سكريبت ونموذج كائن المستند (DOM) الخاص بـ HTML في متصفح الويب. تم إيقاف استخدامها في جافا 24، تمهيدًا للانتقال إلى جافا إف إكس . [ 5 ]org.ietf.jgss.*: واجهة برمجة تطبيقات خدمة الأمان العامة كما هو محدد من قبل فرقة عمل هندسة الإنترنت . [ 6 ]org.omg.*: حزم إدارة الكائنات ، مثل ميزات بنية وسيط طلب الكائنات المشتركة (CORBA). تم إيقاف استخدامها منذ Java 9، وإزالتها منذ Java 11. [ 7 ]org.w3c.dom.*: حزم نموذج كائن المستند كما هو محدد من قبل اتحاد شبكة الويب العالمية . [ 8 ]org.xml.sax.*واجهة برمجة تطبيقات بسيطة لحزم XML المتعلقة بـ XML . [ 9 ]
حزم التنفيذ
[ 10 ] [ 11 ] وحزم أخرى هي جميعها جزء من وحدة تسمى [ 12 ] . sun.*تحتوي هذه الوحدة على حزم ليست جزءًا من مكتبة sun.misc.UnsafeJava القياسية ولكنها مضمنة كجزء من تطبيق Java.com.sun.*jdk.unsupported
الترخيص
التراخيص السابقة
قبل إصدار OpenJDK، كان JDK يعتمد على ترخيص احتكاري .
بعد وعدها بإصدار حزمة تطوير جافا (JDK) قابلة للبناء بالكامل ، تعتمد على شفرة برمجية مفتوحة المصدر ومجانية بالكامل تقريبًا، في النصف الأول من عام 2007، [ 13 ] أصدرت شركة صن الشفرة المصدرية الكاملة لمكتبة الفئات بموجب رخصة جنو العمومية (GPL) في 8 مايو 2007، باستثناء بعض الأجزاء المحدودة التي رخصتها صن من جهات خارجية لم ترغب في إصدار شفرتها البرمجية بموجب رخصة مفتوحة المصدر. [ 14 ] كان هدف صن هو استبدال الأجزاء التي لا تزال احتكارية ومغلقة المصدر بتطبيقات بديلة، وجعل مكتبة الفئات مجانية ومفتوحة المصدر بالكامل.
حتى ديسمبر 2010، كانت شركة صن ثم أوراكل توفران الجزء المتبقي من JDK على شكل ملفات ثنائية [ 15 ] ، والتي كانت مطلوبة لبناء JDK ولكنها غير ضرورية لتشغيله. اعتبارًا من مايو 2007 ، الجزء الوحيد من مكتبة الفئات الذي ظل ملكية خاصة ومغلق المصدر (4% اعتبارًا من مايو 2007) بالنسبة لـ OpenJDK 7، [ 16 ] وأقل من 1% اعتبارًا من مايو 2008 وكان OpenJDK 6 [ 17 ] [ 18 ] هو تطبيق SNMP [ 19 ] . [ 20 ]
منذ الإصدار الأول في مايو 2007، قامت شركة صن، بمساعدة المجتمع، بإصدار جميع التعليمات البرمجية المعقدة تقريبًا كمصدر مفتوح أو استبدالها ببدائل مفتوحة المصدر:
- أصبحت جميع أكواد محرك الصوت، بما في ذلك برنامج توليف الصوت ، مفتوحة المصدر. [ 20 ] [ 21 ] وقد تم استبدال برنامج توليف الصوت المغلق المصدر ببرنامج توليف صوت جديد تم تطويره خصيصًا لـ OpenJDK يُسمى Gervill . [ 22 ]
- تم إصدار جميع فئات التشفير كمصدر مفتوح. [ 23 ]
- يستخدم الكود الذي يقوم بتغيير حجم الخطوط وتحويلها إلى صور نقطية مكتبة FreeType مفتوحة المصدر . [ 24 ] [ 25 ] [ 26 ]
- تستخدم إدارة الألوان الأصلية نظام LittleCMS مفتوح المصدر . [ 25 ] توجد طبقة قابلة للتوصيل في JDK، بحيث يمكن للإصدار التجاري من Java استخدام نظام إدارة الألوان الأصلي والخاص، ويمكن لـ OpenJDK استخدام LittleCMS.
- يستخدم كود معالجة الصور النقطية المضادة للتشويش برنامج Pisces مفتوح المصدر المستخدم في مشروع phoneME . [ 25 ] [ 27 ] [ 28 ]
- المكون الإضافي لجافا سكريبت مفتوح المصدر ( محرك جافا سكريبت نفسه كان مفتوح المصدر منذ البداية). [ 29 ]
إصدار مفتوح المصدر
ابتداءً من ديسمبر 2010، تم استبدال جميع ما يسمى بالمكونات الثنائية ببدائل مفتوحة المصدر ، مما جعل JDK بالكامل مفتوح المصدر. [ 30 ]
تطبيقات بديلة
تُعد مكتبة GNU Classpath مكتبة الفئات الرئيسية الأخرى المجانية للغة جافا. وعلى عكس التطبيقات الأخرى، فهي تُنفذ مكتبة الفئات فقط، وتستخدمها العديد من بيئات تشغيل جافا المجانية (مثل Kaffe و SableVM و JamVM ).
كانت أباتشي هارموني مكتبة فئات برمجية مجانية أخرى. وكان هدفها تنفيذ الأجزاء الأخرى من حزمة جافا ( الآلة الافتراضية ، والمترجم ، والأدوات الأخرى المطلوبة لأي تطبيق جافا ).
انظر أيضاً
مراجع
- ↑ هويسمان، م.؛ جاكوبس، ب.ب.ف.؛ فان دن بيرغ، ج. (1999). "دراسة حالة في التحقق من مكتبة الفئات: فئة المتجهات في جافا" . FernUniversität : 40. تم الاطلاع عليه في 6 أكتوبر 2025 .
- ↑ "مبني على مصادر OpenJDK" . OpenJDK . تم الاطلاع عليه بتاريخ 23 أكتوبر 2021 .
- ↑ "كيفية العثور على الفئات" . شركة أوراكل . مؤرشف من الأصل بتاريخ 25 أبريل 2009. تم الاطلاع عليه بتاريخ 5 ديسمبر 2015 .
- ↑ "ملخص وحدة JDK" . شركة أوراكل . 23 أكتوبر 2015. مؤرشف من الأصل بتاريخ 8 ديسمبر 2015. تم الاطلاع عليه بتاريخ 29 نوفمبر 2015 .
- ↑ "netspace.javascript (Java SE 25 & JDK 25)" . docs.oracle.com . شركة أوراكل . تم الاطلاع عليه بتاريخ 10 أكتوبر 2025 .
- ↑ "org.ietf.jgss (Java SE 25 & JDK 25)" . docs.oracle.com . شركة أوراكل . تم الاطلاع عليه بتاريخ 10 أكتوبر 2025 .
- ↑ "java.corba (Java SE 10 & JDK 10)" . docs.oracle.com . شركة أوراكل . تم الاطلاع عليه بتاريخ 10 أكتوبر 2025 .
- ↑ "org.w3c.dom (Java SE 25 & JDK 25)" . docs.oracle.com . شركة أوراكل . تم الاطلاع عليه بتاريخ 10 أكتوبر 2025 .
- ↑ "org.xml.sax (Java SE 25 & JDK 25)" . docs.oracle.com . شركة أوراكل . تم الاطلاع عليه بتاريخ 10 أكتوبر 2025 .
- ↑ بن إيفانز (4 مايو 2020). "الفئة غير الآمنة: غير آمنة بأي سرعة" . blogs.oracle.com . شركة أوراكل.
- ↑ شركة أوراكل. "الأسئلة الشائعة - حزم صن: لماذا لا ينبغي للمطورين كتابة برامج تستدعي حزم صن" . oracle.com . شركة أوراكل . تم الاطلاع عليه بتاريخ 22 أبريل 2026 .
- ↑ "jdk.unsupported" . cr.openjdk.org . OpenJDK . تم الاطلاع عليه بتاريخ 10 أكتوبر 2025 .
- ↑ "جافا المجانية والمفتوحة المصدر - الأسئلة الشائعة" . sun.com . مايو 2007. مؤرشف من الأصل في 22 مايو 2007. تم الاطلاع عليه بتاريخ 27 يونيو 2024 .
- ↑ ريتش غرين (8 مايو 2007). "Open JDK هنا!" . صن مايكروسيستمز . مؤرشف من الأصل في 7 فبراير 2012. تم الاطلاع عليه في 25 نوفمبر 2011 .
- ↑ "OpenJDK Binary Plugs" . شركة صن مايكروسيستمز . 8 مايو 2007. مؤرشف من الأصل في 26 أغسطس 2012. تم الاطلاع عليه في 25 نوفمبر 2011 .
- ↑ فيتزسيمونز، توماس (18 مايو 2007). "خطط OpenJDK" . تم الاطلاع عليه بتاريخ 22 مايو 2007 .
- ↑ أنجيل، ليليان (13 مارس 2008). "OpenJDK سيحل محل IcedTea في فيدورا 9" . تم الاطلاع عليه بتاريخ 5 أبريل 2008 .
{{cite web}}: CS1 maint: deprecated archiveal service ( link ) - ↑ ويد، كارستن (13 مارس 2008). "OpenJDK في فيدورا 9!" . redhatmagazine.com. مؤرشف من الأصل في 21 أبريل 2008. تم الاطلاع عليه في 5 أبريل 2008.
قام توماس فيتزسيمونز بتحديث صفحات مصدر ملاحظات إصدار فيدورا 9 لتوضيح أن فيدورا 9 ستأتي مع OpenJDK 6 بدلاً من تطبيق IcedTea لـ OpenJDK 7. من المقرر إصدار فيدورا 9 (Sulphur) في مايو 2008.
- ↑ هيرون، ديفيد (4 أكتوبر 2007). "خطط OpenJDK" . مؤرشف من الأصل في 11 أكتوبر 2007. تم الاطلاع عليه في 9 أكتوبر 2007 .
- ١ ٢ "تم نشر مصدر OpenJDK 6 b10" . ٣٠ مايو ٢٠٠٨. مؤرشف من الأصل في ١٨ يونيو ٢٠٠٩. تم الاطلاع عليه في ١ يونيو ٢٠٠٨ .
- ↑ "صفحة مشروع محرك الصوت" . مؤرشفة من الأصل بتاريخ 16-05-2007 . تم الاطلاع عليها بتاريخ 19-05-2007 .
- ↑ "Gervill – Software Synthesizer" . تم الاطلاع عليه بتاريخ 2008-06-01 .
{{cite web}}: CS1 maint: deprecated archiveal service ( link ) - ↑ "تمت إضافة Crypto إلى OpenJDK" . 27-09-2007. مؤرشف من الأصل بتاريخ 25-12-2007 . تم الاطلاع عليه بتاريخ 07-10-2007 .
- ↑ "صفحة مشروع مُكبِّر الخطوط" . مؤرشف من الأصل بتاريخ 10-06-2015 . تم الاطلاع عليه بتاريخ 19-05-2007 .
- 1 2 3 "صفحة مشروع Java2D" . مؤرشفة من الأصل بتاريخ 16-05-2007 . تم الاطلاع عليها بتاريخ 19-05-2007 .
- ↑ "محول خطوط Freetype إلى صور نقطية" . 7 أغسطس 2007. مؤرشف من الأصل في 7 يناير 2009. تم الاطلاع عليه في 24 نوفمبر 2007 .
- ↑ "مرحباً بكم في مشروع PhoneME" . مؤرشف من phoneme.dev.java.net/، النسخة الأصلية بتاريخ 10-06-2007.
{{cite web}}: تحقق من|url=القيمة ( مساعدة ) - ↑ "صفحة مشروع مُحَوِّل الرسومات النقطية" . مؤرشفة من الأصل بتاريخ 16-05-2007 . تم الاطلاع عليها بتاريخ 19-05-2007 .
- ↑ "لغة جافا سكريبت مُقيدة ولا يوجد دعم لملحقات جافا سكريبت" . IcedTea . 11 مارس 2008. مؤرشف من الأصل في 27 سبتمبر 2008. تم الاطلاع عليه في 1 يونيو 2008.
ملخص التغيير: لم تعد جافا سكريبت مُقيدة، لكننا ما زلنا بحاجة إلى دعم LiveConnect.
- ↑ كيلي أوهير (ديسمبر 2010). "إزالة منطق التوصيلات الثنائية لـ OpenJDK7 وOpenJDK6" . شركة أوراكل . مؤرشف من الأصل بتاريخ 7 أبريل 2022. تم الاطلاع عليه بتاريخ 25 نوفمبر 2011 .
روابط خارجية
- الصفحة الرئيسية لجافا إس إي
- Java SE 24 API Javadocs
- توثيق واجهة برمجة تطبيقات Java SE
- مجموعات تطوير برامج جافا (الحالة اعتبارًا من أغسطس 2006)):
- جافا (لغة برمجة)
- مكتبات لغة البرمجة جافا
