المعلوماتية > برمجيات
الفرق بين منصات Java
تُقسَم تقنية Java إلى لغة برمجة Java ومنصات Java:
- لغة برمجة Java: هي لغة كائنية التوجه (Object-Oriented) عالية المستوى، ابتكرها جيمس غوسلينغ James Gosling في عام 1991م.
- منصات Java: هي بيئة معينة تُشغَّل فيها تطبيقات لغة البرمجة Java، وسنتحدث عن الفرق بينها.
فما منصات لغة البرمجة Java؟
هناك أربع منصات للغة البرمجة Java:
- منصة Java الإصدار الأساسي (Java Standard Edition).
- منصة Java الإصدار المخصص للشركات والمؤسسات الكبيرة (java enterprise ).
- منصة Java الإصدار المُصغَّر (Java Micro Edition).
- منصة javaFX.
تتكون منصات Java كافة من نظام آلة افتراضي خاص باللغة Java Virtual Machine (JVM)، ومن واجهة برمجة التطبيقات Application Programming Interface (API):
- نظام الآلة الافتراضي JVM: هو عبارة عن برنامج مخصص للعتاديّات (hardware)، وبرنامج برمجيات معين (software)، ليشغّل تطبيقات تقنية Java.
- واجهة برمجة التطبيقات API: هي مجموعة من المكونات البرمجية التي يمكن استخدامها لإنشاء مكونات برمجية جديدة أو تطبيقات برمجية أخرى (1).
منصة Java الإصدار الأساسي (Java Standard Edition):
عندما يفكر معظم الناس في لغة البرمجة java فإنهم يفكرون في الإصدار الأساسي (java SE API).
يوفر هذا الإصدار الوظيفةَ الأساسية للغة البرمجة java؛ فهو يعرّف الأنواع والكائنات الأساسية جميعها، والصفوف (classes) التي تُستخدَم في الشبكات والأمان والوصول إلى قاعدة البيانات والتطوير، كذلك يعرّف واجهة المستخدم الرسومية Graphical User Interface (GUI)، إضافة إلى واجهة برمجة تطبيقات API الأساسية.
تتكون منصة Java SE من: آلة افتراضية، وأدوات تطوير، وتقنيات النشر، وغيرها من المكتبات ومجموعة الأدوات التي تُستخدَم في تطبيقات تقنية java.
منصة Java الإصدار المخصص للشركات والمؤسسات الكبيرة (Java Enterprise):
صُمِّم هذا الإصدار بناءً على منصة الأساسية وبمستوى أعلى منه.
تقدم هذه المنصة بيئة تشغيلية وبيئة برمجة التطبيقات (API) لتطوير وتشغيل تطبيقات الشبكات الواسعة النطاق والمتعددة المستويات والطبقات والقابلة للتطوير بموثوقية وأمان.
منصة Java الإصدار المُصغَّر (Java Micro Edition):
توفر منصة Java ME واجهةً برمجية للتطبيقات، وآلةً افتراضية صغيرة المساحة لتشغّل تطبيقات لغة برمجة Java على الأجهزة الصغيرة مثل أجهزة الهاتف المحمول.
تكون واجهة برمجة التطبيقات (API) في هذا الإصدار عبارة عن مجموعة فرعية من واجهة برمجة التطبيقات في الإصدار الأساسي Java SE API، إضافة إلى المكتبات الخاصة المفيدة لتطوير تطبيقات الأجهزة الصغيرة، وغالبًا ما تكون تطبيقات Java ME برامج وتطبيقات خدمية لتطبيقات Java EE.
منصة جافا اف اكس (javaFX):
JavaFX هي منصة لإنشاء تطبيقات الإنترنت الغنية بالواجهات البرمجية والتطبيقات الخفيفة الحجم Light weight.
تستخدم تطبيقات JavaFX محرّكات الرسوميات والوسائط لتكون ذات سرعة عالية ليستفيد العميل من الأداء العالي والسرعة العالية، إضافة إلى الشكل والمظهر العصري للتطبيقات وواجهات برمجة التطبيقات للاتصال بمصادر البيانات على الشبكة، وغالبًا ما تكون تطبيقات javaFX برامج وتطبيقات خدمية لتطبيقات Java EE أيضًا (1).
تتألف كل منصة من هذه المنصات من العديد من التقنيات والميزات والتطبيقات الموافقة لها، وسنتناول في هذا المقال الإصدارَ المخصص للشركات والمؤسسات الكبيرة (Java EE) على وجه الخصوص.
ما هي تطبيقات المؤسسات (Enterprise applications)؟
تُعرَف تطبيقات المؤسسات بأنها تطبيقات شبكية واسعة النطاق، ومتعددة المستويات والطبقات، وقابلة للتطوير بموثوقية وأمان. وقد سُميت بهذا الاسم لأنها مصممة لحل المشكلات التي تواجهها الشركات الكبرى، علمًا أنها ليست مفيدة للشركات الكبرى والوكالات والحكومات فقط، إنما تُعدّ ميزاتها مفيدة -بل ضرورية- للمطورين المستقلين والمؤسسات الصغيرة (2).
صُمّمت منصة Java EE لتقليل تعقيد تطوير تطبيقات المؤسسات الناتج عن كثرة ميزاتها، وذلك بتوفير أنموذج تطوير واجهة برمجة التطبيقات وبيئة التشغيل التي تتيح للمطورين التركيز على الوظائف.
كيف تعمل المنصة في التطبيقات المتعددة الطبقات (Multi-tiered application)؟
تُعرَف التطبيقات المتعددة الطبقات في هندسة البرمجيات بأنها بنية تعتمد مفهوم الخادم-العميل (Client-Server)، إضافة إلى الفصل المنطقي بين واجهة الاستخدام (Client tier) ومنطق العمليات الوظيفية (Middle tier) وقواعد البيانات (Data tier)؛ إذ تؤمّن هذه البنية المرونة وقابلية إعادة الاستخدام للمطورين في بناء تطبيقاتهم.
وتتكون هذه البنية -على نحو رئيس- من أربع طبقات تساهم java EE في تسهيل مَهماتهم الوظيفية بتقنيات مختلفة:
1- طبقة العرض (Client tier): هي المستوى الأعلى من التطبيق؛ إذ تعرض هذه الطبقة الخدمات للزبون وتنقل الطلبات إلى الطبقة المتوسطة (طبقة الويب)، ومن ثم تعرض نتائج معالجة الطلب في الخادم، وعادةً ما توجد على جهاز مختلف عن جهاز الخادم مثل المتصفحات وغيرها (2).
2- طبقة الويب (Web tier): تعالج هذه الطبقة تفاعلات المستخدم، وتتشكل مَهماتها الأساسية من:
- توليد المحتوى على نحو حيوي وتنسيقات مختلفة.
- جمع المدخلات من مستخدمي واجهة العرض وإرجاع النتائج من طبقة العمل.
- التحكم في تدفق عرض الواجهات للمستخدم.
- الحفاظ ضمن الجلسة (Session) على حالة البيانات (2).
- Servlets: صفوف بلغة البرمجة جافا (Java)، بُرمِجت لتعالج الطلبات ديناميكيًّا في تطبيقك وتُولّد استجابةً لها، وتستخدم عادةً من أجل صفحات HTML.
- (Java server pages (JSP: مستندات نصية تضيف محتوى ديناميكيًّا للصفحات الثابتة (Static) وتُجمع في Servlets، مثل صفحات HTML.
- (Java Server Faces Technology (JSF: إطار عمل لمكونات واجهة المستخدم (User Interface) في تطبيقات الويب، والتي تتيح لك تضمين هذه المكونات (مثل الأزرار والحقول النصية وغيرها) في الصفحة، والوصول إلى محتواها والتحقق منه والتعامل معه والحفاظ على حالته.
- JSF Facelets: نوع من تطبيقات JSF، تستخدم صفحات XHTML بدلًا من صفحات JSP.
- Expression language: مجموعة من العلامات الأساسية (Tags) المستخدمة في صفحات JSP وFacelets للإشارة إلى مكونات Java EE.
- JavaBeans Components: أغراض تعمل مخازنَ مؤقتة لصفحات التطبيقات (2).
تقنيات Java EE المُستخدمة في طبقة العمل:
- Enterprise JavaBeans: هي مكونات إدارية لدمج الوظائف الأساسية للتطبيق، إضافة إلى أنها تسهل عملية إنشاء التطبيقات الموزّعة المستخدمة في الشركات.
- JAX-RS Restful web services: واجهة برمجة التطبيقات لإنشاء خدمات الويب التي تستجيب لطرائق HTTP؛ على سبيل المثال GET أو POST.
- JAX-WS web service: واجهة برمجة التطبيقات لإنشاء تقنية SOAP واستخدامها.
- Java Persistence API: تؤمّن هذه الواجهة مجموعةً من الصفوف (classes) والطرائق (methods) للوصول إلى البيانات في مخازن البيانات الأساسية وربط تلك البيانات مع أغراض لغة الجافا (Java Objects).(2)
تقنيات Java EE المُستخدمة في طبقة نظم معلومات المؤسسة: (2)
- (Java Database Connectivity API (JDBC: هي واجهةُ برمجةِ تطبيقات منخفضة المستوى، تؤمّن الوصول إلى البيانات واستردادها من القواعد الأساسية. ويُعدّ إنشاء استعلامات SQL على قاعدة بيانات معينة الاستخدامَ الشائع لها.
- Java EE Connector Architecture API: تُستخدَم للاتصال بمصادر المؤسسة الأخرى؛ مثل تخطيط الموارد ونظام إدارة العملاء.
- Java Persistence API.
فما المقصود بالحاويات (Java EE containers)؟ وما أنواعها؟
هي الواجهات الوسيطة بين المُكوّن والوظيفة الموفرة لدعمه من قبل المنصة، وتُحدّد المنصة وظيفةَ الحاوية تبعًا لنوعها، كذلك يسمح الخادم لأنواع مختلفة من المكونات بالعمل معًا لتقديم وظيفة في تطبيق مؤسسات واحد (3).أنواع الحاويات:
- Web container: هي الواجهة بين مكونات الويب (مثل صفحة JSF Facelets أو صفحة JSP) وخادم الويب، تؤمّن هذه الحاوية إدارة كاملة لدورة حياة مكونات الصفحة، وهي تعمل على جهاز الخادم.
- Application Client Container: هي الواجهة بين تطبيق العميل وخادم Java EE، تعمل هذه الحاوية على جهاز العميل، وهي البوابة بين تطبيق العميل ومكونات خادم Java EE التي يستخدمها العميل.
- EJB Container: هي الواجهة بين enterprise beans (التي توفر منطق الأعمال في تطبيق Java EE) وخادم Java EE، وتعمل على جهاز الخادم (3).
2- Overview of Enterprise Applications - Your First Cup: An Introduction to the Java EE Platform [Internet]. Docs.oracle.com. 2020 [cited 4 April 2020]. Available from: هنا
3- Java EE Servers - Your First Cup: An Introduction to the Java EE Platform [Internet]. Docs.oracle.com. 2020 [cited 4 April 2020]. Available from: هنا