منصة جافا، الإصدار القياسي
منصة جافا، الإصدار القياسي ( Java SE ) هي منصة حوسبة ، ومعيار تقني لتشغيل التطبيقات على منصات مستقلة مدعومة بلغة جافا، وبالتالي فهي عبارة عن شفرة قابلة للنقل لبيئات سطح المكتب والخوادم . [ 1 ] [ 2 ] كانت Java SE تُعرف سابقًا باسم منصة جافا 2، الإصدار القياسي ( J2SE ).
تستخدم هذه المنصة لغة برمجة جافا ، وهي جزء من عائلة منصات برمجيات جافا . تُعرّف Java SE مجموعة من واجهات برمجة التطبيقات العامة ، مثل واجهات برمجة تطبيقات جافا لمكتبة فئات جافا ، كما تتضمن مواصفات لغة جافا ومواصفات آلة جافا الافتراضية . [ 3 ] يُعد OpenJDK التطبيق المرجعي الرسمي منذ الإصدار 7. [ 4 ] [ 5 ] [ 6 ]
التسميات والمعايير والمواصفات
كانت المنصة تُعرف باسم Java 2 Platform, Standard Edition أو J2SE بدءًا من الإصدار 1.2، إلى أن تم تغيير اسمها إلى Java Platform, Standard Edition أو Java SE في الإصدار 1.5. يُستخدم الاختصار "SE" لتمييز المنصة الأساسية عن منصتي Enterprise Edition ( Java EE ) وMicro Edition ( Java ME ). كان الهدف من الرقم "2" في الأصل هو التأكيد على التغييرات الرئيسية التي أُدخلت في الإصدار 1.2، ولكن تم حذفه في الإصدار 1.6. وقد تم تغيير اصطلاح التسمية عدة مرات عبر تاريخ إصدارات Java . بدءًا من J2SE 1.4 (Merlin)، تم تطوير Java SE وفقًا لعملية مجتمع Java ، التي تُنتج أوصافًا للمواصفات المقترحة والنهائية لمنصة Java، والتي تُسمى طلبات مواصفات Java (JSR) . [ 7 ] كانت JSR 59 هي المواصفة الشاملة لـ J2SE 1.4، بينما حددت JSR 176 الإصدار J2SE 5.0 (Tiger). تم إصدار Java SE 6 (Mustang) بموجب JSR 270.
تُعد منصة Java Enterprise Edition (Java EE) مواصفات ذات صلة تتضمن جميع الفئات الموجودة في Java SE، بالإضافة إلى عدد من الفئات الأكثر فائدة للبرامج التي تعمل على الخوادم بدلاً من محطات العمل .
تُعد منصة جافا، الإصدار المصغر (Java ME) مواصفات ذات صلة تهدف إلى توفير مجموعة معتمدة من واجهات برمجة تطبيقات جافا لتطوير البرامج للأجهزة الصغيرة ذات الموارد المحدودة مثل الهواتف المحمولة وأجهزة المساعد الرقمي الشخصي وأجهزة الاستقبال الرقمية .
بيئة تشغيل جافا (JRE) ومجموعة تطوير جافا (JDK) هما الملفات الفعلية التي يتم تنزيلها وتثبيتها على جهاز الكمبيوتر لتشغيل أو تطوير برامج جافا، على التوالي.
حزم الأغراض العامة
يتم تصدير غالبية هذه الحزم بواسطة java.baseوحدة نظام وحدات منصة جافا (منذ جافا 9).
java.lang
تحتوي حزمة Java على فئات وواجهاتjava.lang أساسية مرتبطة ارتباطًا وثيقًا باللغة ونظام التشغيل . يشمل ذلك الفئات الجذرية التي تُشكّل التسلسل الهرمي للفئات ، والأنواع المرتبطة بتعريف اللغة، والاستثناءات الأساسية ، والدوال الرياضية، والترابط ، ووظائف الأمان، بالإضافة إلى بعض المعلومات حول النظام الأصلي الأساسي. تحتوي هذه الحزمة على 22 فئة من أصل 32 فئة متوفرة في JDK 6.java.lang.Error
الفئات والواجهات الرئيسية java.langهي:
Object– الفئة التي تمثل جذر كل تسلسل هرمي للفئات.Enum– الفئة الأساسية لفئات التعداد (اعتبارًا من J2SE 5.0).Class– الفئة التي تمثل جذر نظام البرمجة الانعكاسية (الانعكاس) في جافا.Throwable– الفئة التي تمثل الفئة الأساسية لتسلسل فئات الاستثناء.Error،ExceptionوRuntimeException– الفئات الأساسية لكل نوع من أنواع الاستثناءات.Thread– الفئة التي تسمح بإجراء العمليات على الخيوط.String– الفئة الخاصة بالسلاسل النصية والقيم النصية الحرفية .StringBufferوStringBuilder– فئات لإجراء معالجة السلاسل النصية (StringBuilderاعتبارًا من J2SE 5.0).Comparable– الواجهة التي تسمح بالمقارنة العامة وترتيب الكائنات (اعتبارًا من J2SE 1.2).Iterable– الواجهة التي تسمح بالتكرار العام باستخدام الحلقة المحسنةfor(اعتبارًا من J2SE 5.0).ClassLoader،Process،Runtime، ،SecurityManagerوSystem– فئات توفر "عمليات النظام" التي تدير التحميل الديناميكي للفئات، وإنشاء العمليات الخارجية ، واستعلامات بيئة المضيف مثل وقت اليوم، وإنفاذ سياسات الأمان .MathوStrictMath– فئات توفر وظائف رياضية أساسية مثل الجيب وجيب التمام والجذر التربيعي (java.lang.StrictMathاعتبارًا من J2SE 1.3).- فئات التغليف الأولية التي تغلف الأنواع الأولية ككائنات .
- فئات الاستثناءات الأساسية التي يتم طرحها للاستثناءات الشائعة على مستوى اللغة وغيرها.
يتم استيراد الفئات java.langتلقائيًا إلى كل ملف مصدر .
java.lang.ref
تُوفر هذه java.lang.refالحزمة أنواعًا أكثر مرونة من المراجع المتاحة، مما يسمح بتفاعل محدود بين التطبيق وجامع البيانات المهملة في آلة جافا الافتراضية (JVM) . تُعد هذه الحزمة مهمة، بل أساسية للغة، لدرجة أن مصممي اللغة وضعوها ضمن مساحة الاسم ، إلا أنها ذات غرض خاص نوعًا ما، ولا يستخدمها الكثير من المطورين. أُضيفت هذه الحزمة في J2SE 1.2.java.lang
تتميز لغة جافا بنظام مراجع متطور، وتتيح سلوكًا خاصًا لعملية جمع البيانات المهملة. يُعرف المرجع العادي في جافا باسم "المرجع القوي". java.lang.refتُعرّف الحزمة ثلاثة أنواع أخرى من المراجع: المراجع المرنة، والضعيفة ، والوهمية. صُمم كل نوع من هذه المراجع لاستخدام محدد.
- يمكن استخدام A
SoftReferenceلتنفيذ ذاكرة تخزين مؤقتة . يُطلق على الكائن الذي لا يمكن الوصول إليه بواسطة مرجع قوي (أي ليس قابلاً للوصول إليه بشكل مباشر)، ولكن تتم الإشارة إليه بواسطة مرجع ضعيف، اسم "كائن قابل للوصول إليه بشكل ضعيف". قد يتم جمع الكائن القابل للوصول إليه بشكل ضعيف بواسطة جامع البيانات المهملة وفقًا لتقديره. هذا يعني عمومًا أن الكائنات القابلة للوصول إليها بشكل ضعيف لا يتم جمعها بواسطة جامع البيانات المهملة إلا عندما تكون الذاكرة الحرة منخفضة - ولكن مرة أخرى، هذا يخضع لتقدير جامع البيانات المهملة. من الناحية الدلالية، يعني المرجع الضعيف: "احتفظ بهذا الكائن عندما لا يشير إليه أي شيء آخر، إلا إذا كانت الذاكرة مطلوبة". WeakReferenceتُستخدم A لتنفيذ الخرائط الضعيفة. يُطلق على الكائن الذي لا يمكن الوصول إليه بشكل مباشر أو غير مباشر، ولكن تتم الإشارة إليه بواسطة مرجع ضعيف، اسم "كائن قابل للوصول إليه بشكل ضعيف ". يتم جمع الكائن القابل للوصول إليه بشكل ضعيف بواسطة جامع البيانات المهملة في دورة الجمع التالية. يُستخدم هذا السلوك في الفئةjava.util.WeakHashMap. تسمح الخريطة الضعيفة للمبرمج بوضع أزواج المفتاح/القيمة في الخريطة دون القلق بشأن استهلاك الكائنات للذاكرة عندما لا يعود المفتاح قابلاً للوصول إليه من أي مكان آخر. من التطبيقات الأخرى المحتملة للمراجع الضعيفة مجمع السلاسل النصية الداخلي . من الناحية الدلالية، يعني المرجع الضعيف "التخلص من هذا الكائن عندما لا يشير إليه أي كائن آخر في عملية جمع البيانات المهملة التالية".- يُستخدم الرمز A
PhantomReferenceللإشارة إلى الكائنات التي تم تحديدها لجمع البيانات المهملة وتمت معالجتها نهائيًا ، ولكن لم يتم استعادتها بعد. يُطلق على الكائن الذي لا يمكن الوصول إليه بشكل قوي أو ضعيف أو سهل، ولكن تتم الإشارة إليه بواسطة مرجع وهمي، اسم "الكائن الوهمي القابل للوصول". يتيح هذا تنظيفًا أكثر مرونة مما هو ممكن باستخدام آلية المعالجة النهائية وحدها. من الناحية الدلالية، يعني المرجع الوهمي "أن هذا الكائن لم يعد مطلوبًا وتمت معالجته نهائيًا استعدادًا لجمعه".
كل نوع من أنواع المراجع هذه يمتد إلى Referenceالفئة، التي توفر get()طريقة لإرجاع مرجع قوي إلى الكائن المشار إليه (أو nullإذا تم مسح المرجع أو إذا كان نوع المرجع وهميًا)، وطريقة clear()لمسح المرجع.
يُعرّف هذا java.lang.refأيضًا الفئة ReferenceQueue، التي يمكن استخدامها في كل تطبيق من التطبيقات المذكورة أعلاه لتتبع الكائنات التي تغير نوع مرجعها. عند java.lang.ref.Reference<T>إنشاء كائن، يتم تسجيله اختياريًا في قائمة انتظار المراجع. يستعلم التطبيق من قائمة انتظار المراجع للحصول على المراجع التي تغيرت حالة الوصول إليها.
java.lang.reflect
البرمجة الانعكاسية (الانعكاس) هي أحد مكونات واجهة برمجة تطبيقات جافا (Java API) التي تُمكّن كود جافا من فحص مكونات جافا و"انعكاسها" أثناء التشغيل واستخدام الأعضاء المُنعكسة. تدعم الفئات الموجودة في هذه الحزمة java.lang.reflectتطبيقات مثل أدوات تصحيح الأخطاء ، والمفسرات ، وأدوات فحص الكائنات، ومتصفحات الفئات ، وخدمات مثل تسلسل الكائنات و JavaBeans التي تحتاج إلى الوصول إما إلى الأعضاء العامة لكائن مستهدف (بناءً على فئة وقت التشغيل الخاصة به) أو إلى الأعضاء المُعلنة بواسطة فئة معينة. أُضيفت هذه الحزمة في JDK 1.1.java.lang.Class<T>java.lang.Package
تُستخدم تقنية الانعكاس لإنشاء نسخ من الأصناف واستدعاء الدوال باستخدام أسمائها، وهو مفهوم يسمح بالبرمجة الديناميكية. يمكن اكتشاف الأصناف والواجهات والدوال والحقول والمنشئات واستخدامها أثناء التشغيل. وتعتمد تقنية الانعكاس على البيانات الوصفية التي يمتلكها جهاز جافا الافتراضي (JVM ) حول البرنامج.
التقنيات
هناك تقنيات أساسية متضمنة في عملية التأمل:
- الاكتشاف - يتضمن هذا أخذ كائن أو فئة واكتشاف الأعضاء والفئات العليا والواجهات المنفذة، ثم استخدام العناصر المكتشفة.
- الاستخدام بالاسم - يتضمن البدء بالاسم الرمزي للعنصر واستخدام العنصر المسمى.
اكتشاف
تبدأ عملية الاكتشاف عادةً بكائن واستدعاء الدالة Object.getClass()للحصول على خصائصه java.lang.Class<?>. java.lang.Class<T>يحتوي الكائن على عدة دوال لاكتشاف محتويات الفئة، على سبيل المثال:
getMethods()– تُرجع مصفوفة منMethodالكائنات التي تمثل جميع الطرق العامة للفئة أو الواجهةgetConstructors()– تُرجع مصفوفة منConstructorالكائنات التي تمثل جميع المُنشئات العامة للفئةgetFields()– تُرجع مصفوفة منFieldالكائنات التي تمثل جميع الحقول العامة للفئة أو الواجهةgetClasses()– تُعيد هذه الدالةjava.lang.Class<?>[]كائنات تمثل جميع الفئات والواجهات العامة التي تُعد أعضاءً (مثل الفئات الداخلية ) في الفئة أو الواجهة.getSuperclass()– تُعيدjava.lang.Class<? super T>الكائن الذي يُمثل الفئة الأصلية للفئة أو الواجهة (nullيتم إرجاعها للواجهات)getInterfaces()– تُرجع قائمةjava.lang.Class<?>[]تمثل جميع الواجهات التي تُنفذها الفئة أو الواجهة
استخدم بالاسم
يمكن الحصول على الكائن java.lang.Class<T>إما عن طريق الاكتشاف، باستخدام الصيغة الحرفية للفئة (مثلاً X.class، لفئة X) أو باستخدام اسم الفئة (مثلاً Class.forName("mypackage.MyClass")). مع java.lang.Class<T>كائن ، يمكن الحصول على العضو java.lang.reflect.Method، java.lang.reflect.Constructor<T>أو java.lang.reflect.Fieldالكائنات باستخدام الاسم الرمزي للعضو. على سبيل المثال:
getMethod(String name, Class<?>... parameterTypes)– تُرجعjava.lang.reflect.Methodالكائن الذي يمثل الطريقة العامة مع اسمnameالفئة أو الواجهة التي تقبل المعلمات المحددة بواسطةjava.lang.Class<?>...المعلمات.getConstructor(Class<?>... parameterTypes)– يُعيدjava.lang.reflect.Constructor<T>الكائن الذي يُمثل المُنشئ العام للفئة والذي يقبل المعلمات المُحددة بواسطةjava.lang.Class<?>...المعلمات.getField(String name)– تُعيدjava.lang.reflect.Fieldالكائن الذي يُمثل الحقل العام الذي يحمل اسمnameالفئة أو الواجهة.
java.lang.reflect.Methodjava.lang.reflect.Constructor<T>يمكن استخدام الكائنات للوصول ديناميكيًا java.lang.reflect.Fieldإلى العضو المُمثَّل في الفئة. على سبيل المثال:
Field.get(Object obj)– تُرجع هذهjava.lang.Objectالدالة قيمة الحقل من نسخة الكائن المُمرر إليهاget(). (إذا كانjava.lang.reflect.Fieldالكائن يُمثل حقلاً ثابتاً،java.lang.Objectفسيتم تجاهل المعامل وقد يكون فارغاًnull).Method.invoke(Object obj, Object... args)– تُعيد هذه الدالة كائنًاjava.lang.Objectيحتوي على نتيجة استدعاء الدالة لمثيلjava.lang.Objectالمعامل الأول المُمرَّر إليهاinvoke(). أما المعاملات المتبقيةjava.lang.Object...فتُمرر إلى الدالة. (إذا كانjava.lang.reflect.Methodالكائن يُمثل دالة ثابتة ، فسيتم تجاهل المعامل الأولjava.lang.Objectوقد يكون فارغًاnull).Constructor.newInstance(Object... initargs)– تُعيد هذه الدالة النسخة الجديدةjava.lang.Objectالناتجة عن استدعاء الدالة البانية.java.lang.Object...تُمرر المعاملات إلى الدالة البانية. (لاحظ أنه يمكن أيضًا استدعاء الدالة البانية بدون معاملات لفئة ما عن طريق استدعاء الدالة البانيةnewInstance().)
المصفوفات والوكلاء
java.lang.reflectتوفر الحزمة أيضًا فئة Arrayتحتوي على طرق ثابتة لإنشاء ومعالجة كائنات المصفوفة، ومنذ J2SE 1.3، Proxyفئة تدعم الإنشاء الديناميكي لفئات الوكيل التي تنفذ واجهات محددة.
يتم توفير تنفيذ الفئة java.lang.reflect.Proxyبواسطة كائن مُقدَّم يُنفِّذ الواجهة InvocationHandler. يتم استدعاء دالة java.lang.reflect.InvocationHandler`s` لكل دالة يتم استدعاؤها على كائن الوكيل - المعامل الأول هو كائن الوكيل، والمعامل الثاني هو الكائن الذي يُمثِّل الدالة من الواجهة التي يُنفِّذها الوكيل، والمعامل الثالث هو مصفوفة المعاملات المُمرَّرة إلى دالة الواجهة. تُعيد الدالة نتيجةً تحتوي على النتيجة المُعادة إلى الكود الذي استدعى دالة واجهة الوكيل.invoke(Object proxy, Method method, Object[] args)java.lang.reflect.Methodinvoke()java.lang.Object
java.io
تحتوي الحزمة java.ioعلى فئات تدعم الإدخال والإخراج . تُركز هذه الفئات بشكل أساسي على معالجة البيانات المتدفقة ، ولكنها توفر أيضًا فئة للملفات ذات الوصول العشوائي . الفئات الرئيسية في الحزمة هي `<file>` و` <file>`، وهما فئتان أساسيتان مجردتان للقراءة من تدفقات البايت والكتابة إليها ، على التوالي. أما الفئتان `<file>` و`<file>` فهما فئتان أساسيتان مجردتان للقراءة من تدفقات الأحرف والكتابة إليها ، على التوالي. كما تحتوي الحزمة على بعض الفئات المتنوعة لدعم التفاعل مع نظام الملفات المضيف .InputStreamOutputStreamReaderWriter
تيارات
تتبع فئات التدفق نمط المُزخرف من خلال توسيع الفئة الفرعية الأساسية لإضافة ميزات إلى فئات التدفق. وعادةً ما تُسمى الفئات الفرعية لفئات التدفق الأساسية بإحدى السمات التالية:
- مصدر/وجهة بيانات التدفق
- نوع البيانات المكتوبة إلى/المقروءة من الدفق
- معالجة أو تصفية إضافية يتم إجراؤها على بيانات البث
يتم تسمية الفئات الفرعية للتدفق باستخدام نمطXxxStreamType التسمية حيث Xxxيكون الاسم الذي يصف الميزة ويكون StreamTypeأحد الخيارات التالية java.io.InputStream: java.io.OutputStream، ، java.io.Reader، أو java.io.Writer.
يوضح الجدول التالي المصادر/الوجهات التي تدعمها الحزمة مباشرةً java.io:
| المصدر/الوجهة | اسم | أنواع التدفقات | دخول/خروج | الصفوف الدراسية |
|---|---|---|---|---|
byte[] | مصفوفة بايت | byte | دخول، خروج | ByteArrayInputStream،ByteArrayOutputStream |
char[] | CharArray | char | دخول، خروج | CharArrayReader،CharArrayWriter |
java.io.File | ملف | byte،char | دخول، خروج | FileInputStream، FileOutputStream، FileReader،FileWriter |
java.lang.String | خيط | char | دخول، خروج | StringReader،StringWriter |
java.lang.Thread | أنابيب | byte،char | دخول، خروج | PipedInputStream، PipedOutputStream، PipedReader،PipedWriter |
توفر حزم المكتبات القياسية الأخرى تطبيقات تدفق البيانات لوجهات أخرى، مثل تلك التي java.io.InputStreamيتم إرجاعها بواسطة java.net.Socket.getInputStream()الطريقة أو فئة Java EE javax.servlet.ServletOutputStream.
تتم معالجة أنواع البيانات وتصفية بيانات التدفق باستخدام مرشحات التدفق . تقبل جميع فئات المرشحات كائن تدفق متوافق آخر كمعامل للدالة البانية، وتُضيف ميزات إضافية إلى التدفق المُضمّن . تُنشأ المرشحات بتوسيع إحدى فئات المرشحات الأساسية FilterInputStream.FilterOutputStreamFilterReaderFilterWriter
الفئتان ` java.io.Readerand` و`and` java.io.Writerهما في الواقع مجرد تدفقات بايتات مع معالجة إضافية تُجرى على تدفق البيانات لتحويل البايتات إلى أحرف. تستخدمان ترميز الأحرف الافتراضي للنظام الأساسي، والذي يُمثَّل، بدءًا من J2SE 5.0، بالقيمة المُعادة Charsetمن java.nio.charset.Charset.defaultCharset()الدالة الثابتة `static`. InputStreamReaderتُحوِّل الفئة `and` بايتًا InputStreamإلى بايت، بينما تُحوِّل الفئة `and` بايتًا java.io.Readerإلى بايت . تحتوي كلتا الفئتين على مُنشئات تدعم تحديد ترميز الأحرف المراد استخدامه. في حال عدم تحديد أي ترميز، يستخدم البرنامج الترميز الافتراضي للنظام الأساسي.OutputStreamWriterjava.io.OutputStreamjava.io.Writer
يوضح الجدول التالي العمليات والفلاتر الأخرى التي java.ioتدعمها الحزمة بشكل مباشر. جميع هذه الفئات ترث من java.io.FilterInputStreamالفئة المقابلة لها.
| عملية | اسم | أنواع التدفقات | دخول/خروج | الصفوف الدراسية |
|---|---|---|---|---|
| التخزين المؤقت | مخزن مؤقتًا | byte،char | دخول، خروج | BufferedInputStream، BufferedOutputStream، BufferedReader،BufferedWriter |
| "دفع للخلف" آخر قيمة تمت قراءتها | رد فعل عنيف | byte،char | في | PushbackInputStream،PushbackReader |
| أنواع البيانات الأولية للقراءة والكتابة | بيانات | byte | دخول، خروج | DataInputStream،DataOutputStream |
| تسلسل الكائنات (قراءة/كتابة الكائنات) | هدف | byte | دخول، خروج | ObjectInputStream،ObjectOutputStream |
الوصول العشوائي
RandomAccessFileيدعم هذا الصنف الوصول العشوائي لقراءة وكتابة الملفات. يستخدم الصنف مؤشر ملف يُمثل إزاحة بايت داخل الملف لعملية القراءة أو الكتابة التالية. يتم تحريك مؤشر الملف ضمنيًا عند القراءة أو الكتابة، وبشكل صريح عند استدعاء الدوال seek(long)المناسبة skipBytes(int). تُعيد الدالة الموضع الحالي لمؤشر الملف getFilePointer().
نظام الملفات
Fileيمثل هذا الصنف مسار ملف أو مجلد في نظام الملفات . تدعم الكائنات إنشاء الملفات والمجلدات وحذفها وإعادة تسميتها، بالإضافة إلى معالجة خصائص الملفات مثل خاصية القراءة فقط وتاريخ آخر تعديل . يمكن استخدام الكائنات التي تمثل المجلدات للحصول على قائمة بجميع الملفات والمجلدات الموجودة بداخلها.java.io.Filejava.io.File
الفئة FileDescriptorعبارة عن مُعرّف ملف يُمثّل مصدرًا أو وجهةً (مستقبلًا) للبيانات. عادةً ما يكون ملفًا، ولكن يمكن أن يكون أيضًا منفذًا طرفيًا أو منفذ شبكة . java.io.FileDescriptorتُستخدم الكائنات لإنشاء java.io.Fileتدفقات البيانات. يتم الحصول عليها من java.io.Fileالتدفقات والمنافذ java.netومنافذ حزم البيانات.
java.nio
java.nioفي J2SE 1.4، أُضيفت حزمة (NIO أو الإدخال/الإخراج غير المحظور) لدعم الإدخال/الإخراج المُمَثَّل في الذاكرة ، مما يُسهِّل عمليات الإدخال/الإخراج بالقرب من المكونات المادية الأساسية، مع أداء أفضل بشكل ملحوظ في بعض الأحيان. java.nioتدعم هذه الحزمة أنواعًا متعددة من المخازن المؤقتة. java.nio.charsetكما تدعم الحزمة الفرعية ترميزات أحرف مختلفة لبيانات الأحرف. java.nio.channelsوتدعم أيضًا القنوات، التي تُمثِّل اتصالات بالكيانات القادرة على تنفيذ عمليات الإدخال/الإخراج، مثل الملفات والمآخذ. java.nio.channelsبالإضافة إلى ذلك، تدعم الحزمة أيضًا قفل الملفات بدقة عالية.
java.math
java.mathتدعم هذه الحزمة العمليات الحسابية متعددة الدقة (بما في ذلك العمليات الحسابية النمطية) وتوفر مولدات أعداد أولية متعددة الدقة تُستخدم لتوليد مفاتيح التشفير. الفئات الرئيسية للحزمة هي:
BigDecimal– يوفر أرقامًا عشرية موقعة بدقة عشوائية.java.math.BigDecimalيمنح المستخدم التحكم في سلوك التقريب من خلالjava.math.RoundingMode.BigInteger– يوفر أعدادًا صحيحة بدقة اختيارية.java.math.BigIntegerلا تحدث عمليات تجاوز السعة أو فقدان الدقة. بالإضافة إلى العمليات الحسابية القياسية، يوفر الحساب النمطي ، وحساب القاسم المشترك الأكبر، واختبار الأعداد الأولية ، وتوليد الأعداد الأولية ، ومعالجة البتات ، وعمليات أخرى متنوعة.MathContext- تغليف إعدادات السياق التي تصف قواعد معينة للمعاملات العددية.RoundingMode– تعداد يوفر ثمانية سلوكيات للتقريب.
java.net
توفر الحزمة java.netإجراءات إدخال/إخراج خاصة للشبكات، مما يسمح بطلبات HTTP ، بالإضافة إلى المعاملات الشائعة الأخرى.
java.text
تُنفذ الحزمة java.textإجراءات تحليل النصوص وتدعم لغات مختلفة قابلة للقراءة البشرية وتحليل النصوص الخاص بكل لغة.
java.util
تركز هذه الحزمة على هياكل البياناتjava.util التي تجمع الكائنات . وتتضمن الحزمة واجهة برمجة تطبيقات المجموعات (Collections API) ، وهي عبارة عن تسلسل هرمي منظم لهياكل البيانات يتأثر بشكل كبير باعتبارات أنماط التصميم .
حزم ذات أغراض خاصة
java.applet
صُممت هذه الحزمة لدعم إنشاء تطبيقات جافا الصغيرة (Applet)java.applet ، وتتيح تنزيل التطبيقات عبر الشبكة وتشغيلها ضمن بيئة معزولة محمية. ويمكن فرض قيود أمنية بسهولة على هذه البيئة. فعلى سبيل المثال، يمكن للمطور إضافة توقيع رقمي إلى التطبيق الصغير، ما يجعله آمنًا. ويتيح ذلك للمستخدم منح التطبيق الصغير إذنًا لتنفيذ عمليات مقيدة (مثل الوصول إلى القرص الصلب المحلي)، ويزيل بعض أو كل قيود البيئة المعزولة. وتصدر الشهادات الرقمية من قبل جهات إصدار الشهادات .
نظرًا لأن تطبيقات جافا الصغيرة أصبحت الآن مهملة، فإن هذه الحزمة نفسها مهملة.
java.beans
تتضمن الحزمة java.beansفئات متنوعة لتطوير ومعالجة المكونات القابلة لإعادة الاستخدام (Beans)، والتي تُعرَّف وفقًا لبنية JavaBeans . توفر هذه البنية آليات لمعالجة خصائص المكونات وإطلاق الأحداث عند تغيير هذه الخصائص.
صُممت واجهات برمجة التطبيقات (APIs) java.beansللاستخدام بواسطة أداة تحرير المكونات البرمجية (Beans)، حيث يمكن دمج المكونات البرمجية وتخصيصها ومعالجتها. أحد أنواع محررات المكونات البرمجية هو مصمم واجهة المستخدم الرسومية (GUI) في بيئة تطوير متكاملة .
java.awt
توفر حزمة java.awtأدوات النوافذ المجردة (Abstract Window Toolkit) إمكانية الوصول إلى مجموعة أساسية من عناصر واجهة المستخدم الرسومية (GUI) المبنية على مجموعة عناصر واجهة المستخدم الرسومية الخاصة بالمنصة الأصلية، وهي جوهر نظام أحداث واجهة المستخدم الرسومية، والواجهة بين نظام النوافذ الأصلي وتطبيق جافا. كما توفر أيضًا العديد من مديري التخطيط الأساسيين ، وحزمة لنقل البيانات لاستخدامها مع الحافظة وخاصية السحب والإفلات ، وواجهة لأجهزة الإدخال مثل الفأرة ولوحة المفاتيح ، بالإضافة إلى إمكانية الوصول إلى شريط النظام في الأنظمة الداعمة. تحتوي هذه الحزمة، إلى جانب حزمة javax.swingأدوات النوافذ المجردة، على أكبر عدد من أنواع التعداد (7 أنواع) في JDK 6.
java.rmi
java.rmiتوفر الحزمة استدعاء الأساليب عن بعد في جافا لدعم استدعاءات الإجراءات عن بعد بين تطبيقين جافا يعملان في بيئات JVM مختلفة .
java.security
يتضمن البرنامج دعمًا للأمان، بما في ذلك خوارزمية تجزئة الرسائل java.security.
java.sql
تم تجميع تطبيق JDBC API (المستخدم للوصول إلى قواعد بيانات SQL ) في الحزمة.java.sql
javax.rmi
توفر هذه javax.rmiالحزمة دعمًا للاتصال عن بُعد بين التطبيقات، باستخدام بروتوكول RMI عبر IIOP. يجمع هذا البروتوكول بين ميزات RMI و CORBA.
javax.swing
Swing عبارة عن مجموعة من الإجراءات التي تُبنى java.awtلتوفير مجموعة أدوات واجهة مستخدم مستقلة عن النظام الأساسي . javax.swingتستخدم إجراءات الرسم ثنائية الأبعاد لعرض مكونات واجهة المستخدم بدلاً من الاعتماد على دعم واجهة المستخدم الرسومية الأصلي لنظام التشغيل الأساسي.
تحتوي هذه الحزمة على أكبر عدد من الفئات (133 فئة) في JDK 6. كما java.awtتحتوي على أكبر عدد من أنواع التعداد (7 أنواع) في JDK 6. وهي تدعم أنماط المظهر القابلة للتوصيل (PLAFs) بحيث يمكن لعناصر واجهة المستخدم الرسومية محاكاة تلك الموجودة في النظام الأصلي. تنتشر أنماط التصميم في النظام، وخاصةً تعديل نمط نموذج-عرض-متحكم ، مما يقلل من الارتباط بين الوظيفة والمظهر. ومن أوجه عدم الاتساق (ابتداءً من J2SE 1.3) أن الخطوط تُرسَم بواسطة النظام الأصلي وليس بواسطة Java، مما يحد من قابلية نقل النصوص. توجد حلول بديلة، مثل استخدام خطوط الصور النقطية. بشكل عام، تُستخدم "التخطيطات" للحفاظ على عناصر واجهة المستخدم الرسومية متناسقة جماليًا عبر المنصات.
javax.swing.text.html.parser
توفر الحزمة javax.swing.text.html.parserمحلل HTML المتسامح مع الأخطاء والذي يستخدم لكتابة متصفحات الويب المختلفة وبرامج الروبوت على الويب.
javax.xml.bind.annotation
تحتوي الحزمة javax.xml.bind.annotationعلى أكبر عدد من أنواع التعليقات التوضيحية (30 نوعًا في المجموع) في JDK 6. وهي تحدد التعليقات التوضيحية لتخصيص عناصر برنامج Java لتعيين مخطط XML.
org.w3c
تحتوي لغة جافا على حزم لأدوات اتحاد شبكة الويب العالمية (وخاصةً XML ) ضمن مساحة الاسم org.w3c. يوجد العديد من هذه الحزم في java.xmlالوحدة النمطية.
org.w3c.dom
توفر الحزم org.w3c.domواجهات لنموذج كائن المستند (DOM).
org.xml.sax
org.xml.saxتوفر الحزم واجهات لواجهة برمجة التطبيقات البسيطة لـ XML (SAX).
org.omg
org.omg.CORBA
توفر هذه org.omg.CORBAالحزمة دعمًا للاتصال عن بُعد بين التطبيقات باستخدام بروتوكول GIP-Inter-ORB ، كما تدعم ميزات أخرى لبنية وسيط طلب الكائنات الشائعة . وكما هو الحال مع RMI و RMI-IIOP ، تُستخدم هذه الحزمة لاستدعاء طرق الكائنات عن بُعد على أجهزة افتراضية أخرى (عادةً عبر الشبكة).
تحتوي هذه الحزمة على أكبر عدد من java.lang.Exceptionالفئات (45 فئة إجمالاً) في JDK 6. من بين جميع إمكانيات الاتصال، فإن CORBA قابلة للنقل بين لغات مختلفة؛ ومع ذلك، فإن هذا يأتي بمزيد من التعقيد.
تم إيقاف هذه الحزم في Java 9 وإزالتها من Java 11. [ 8 ]
org.omg.PortableInterceptor
تحتوي الحزمة org.omg.PortableInterceptorعلى أكبر عدد من الواجهات (39 واجهة إجمالاً) في JDK 6. وهي توفر آلية لتسجيل خطافات ORB التي من خلالها تعترض خدمات ORB التدفق الطبيعي لتنفيذ ORB.
حماية
تم الإبلاغ عن العديد من الثغرات الأمنية الخطيرة. [ 9 ] [ 10 ] وتعلن تنبيهات أمنية من أوراكل عن تحديثات أمنية هامة لـ Java SE. [ 11 ]
مراجع
- ↑ "نظرة عامة على Java SE" . شركة أوراكل . تم الاطلاع عليه بتاريخ 26 فبراير 2017 .
- ↑ ""مواصفات واجهة برمجة تطبيقات Java® Platform، الإصدار القياسي ومجموعة تطوير Java الإصدار 25"" .
- ↑ "محتويات إصدار Java SE 6" . شركة أوراكل و/أو الشركات التابعة لها . تم الاطلاع عليه في 1 يناير 2013 .
- ↑ الانتقال إلى OpenJDK باعتباره التنفيذ المرجعي الرسمي لـ Java SE 7
- ↑ منصة جافا، الإصدار القياسي 7، تطبيقات مرجعية
- ↑ "Java Platform, Standard Edition 8 Reference Implementations" . مؤرشف من الأصل في 21 نوفمبر 2015.
- ↑ "نظرة عامة على طلبات مواصفات جافا" . شركة أوراكل و/أو الشركات التابعة لها . تم الاطلاع عليه في 1 يناير 2013 .
- ↑ "JEP 320: إزالة وحدات Java EE و CORBA" . Openjdk.java.net. 2019-05-23 . تم الاطلاع عليه بتاريخ 2022-03-20 .
- ↑ ثغرة أمنية خطيرة في أحدث إصدار من جافا، ذا إتش سيكيوريتي، ١٠ يناير ٢٠١٣
- ↑ دارلين ستورم (25 سبتمبر 2012). "ثغرة أمنية خطيرة أخرى في جافا تُعرّض مليار مستخدم للخطر" . مدونة أمن الكمبيوتر . مؤرشف من الأصل في 13 يناير 2013. تم الاطلاع عليه في 11 يناير 2013 .
- ↑ "تحديثات التصحيح الهامة، والتنبيهات الأمنية، ونشرات الجهات الخارجية" . أوراكل.
روابط خارجية
- منصات الحوسبة
- جافا (منصة برمجية)
- طلبات مواصفات جافا
