JavaRush /مدونة جافا /Random-AR /مقدمة إلى جافا EE
zor07
مستوى
Санкт-Петербург

مقدمة إلى جافا EE

نشرت في المجموعة
سنتحدث اليوم عن ماهيتها - Java EE: مما تتكون، وما هي ميزات بنية تطبيقات Java EE، وسنقدم وصفًا للتقنيات المختلفة لهذا النظام الأساسي. الموضوع نفسه واسع النطاق، لكننا لن نتوقف عند الأساسيات. في النهاية، سنجري مقارنة صغيرة بين Java EE وSpring Framework ونجيب على السؤال: "ما هو الأفضل أن نتعلمه" (حرق: بالطبع، عليك أن تتعلم كل شيء =)) ) مقدمة إلى Java EE - 1لنبدأ بالأساسيات.

جافا EE - ما هو؟

Java EE عبارة عن نظام أساسي مبني على Java SE يوفر واجهة برمجة التطبيقات (API) وبيئة التشغيل لتطوير وتشغيل تطبيقات الشبكة واسعة النطاق ومتعددة الطبقات وقابلة للتطوير وموثوقة وآمنة. تسمى هذه التطبيقات تطبيقات المؤسسات لأنها تحل المشكلات التي تواجهها الشركات الكبيرة. ومع ذلك، ليست الشركات الكبيرة والوكالات الحكومية فقط هي التي يمكنها الاستفادة من هذه الأنواع من التطبيقات والمزايا التي توفرها Java EE. تعد الحلول التي تقدمها منصة Java EE مفيدة، وفي بعض الأحيان ضرورية ببساطة للمطورين الأفراد والمؤسسات الصغيرة.

تطوير جافا EE

تم تطوير Java EE من خلال عملية مجتمع Java (JCP)، التي تم تشكيلها في عام 1998. فهو يسمح للأطراف المهتمة بالمشاركة في تشكيل الإصدارات المستقبلية من مواصفات منصة لغة جافا. أساس هذه العملية هو JSR (طلب مواصفات Java)، وهي وثائق رسمية تصف المواصفات والتقنيات المقترحة لإضافتها إلى منصة Java. يتم تقديم مثل هذه الطلبات من قبل أعضاء المجتمع - المطورين والشركات العادية. وتشمل الأخيرة Oracle وRed Hat وIBM وApache وغيرها الكثير. أولئك. يقترح الرجال ميزات وأشياء جيدة جديدة للنظر فيها والتي يرغبون في تضمينها في Java. ثم يقومون بالتصويت، وعلى أساسه يتم اتخاذ القرار بشأن ما سيتم تضمينه في الإصدار التالي. يبدو سجل إصدار Java EE كما يلي:
  • J2EE 1.2 (ديسمبر 1999)
  • J2EE 1.3 (سبتمبر 2001)
  • J2EE 1.4 (نوفمبر 2003)
  • جافا EE 5 (مايو 2006)
  • جافا EE 6 (ديسمبر 2009)
  • جافا EE 7 (مايو)
  • جافا EE 8 (أغسطس 2017)
  • جاكرتا EE 8 (سبتمبر 2019)
في عام 2017، حدث معلم جديد في تطوير النظام الأساسي: نقلت Oracle التحكم في تطوير Java EE إلى Eclipse Foundation. وفي أبريل 2018، تمت إعادة تسمية Java EE إلى Jakarta EE، وهو متوافق تمامًا مع Java EE 8.

بنية تطبيق جافا EE

مقدمة قصيرة. لتسهيل الفهم، دعونا نتحدث عن بنية تطبيقات Java EE وبعض المصطلحات التي سنستخدمها أكثر. تتمتع تطبيقات Java EE ببنية تحتوي على خاصيتين أساسيتين:
  • أولا، متعدد المستويات. تطبيقات Java EE متعددة المستويات، وسنتحدث عن هذا بمزيد من التفصيل؛
  • ثانيا، التعشيش. يوجد خادم Java EE (أو خادم التطبيقات)، مع وجود حاويات المكونات بداخله. تحتوي هذه الحاويات على مكونات (بنغو!).
لشرح بنية تطبيقات Java EE، فلنتحدث أولاً عن الطبقات. ما هي المستويات؟ ما هي تقنيات Java EE المستخدمة على مستويات مختلفة؟ بعد ذلك، سنناقش كيفية ترابط خوادم التطبيقات وحاويات المكونات والمكونات نفسها. لكن ضع في اعتبارك أن كل هذه وجهات نظر من زوايا مختلفة لنفس الشيء، والترتيب ليس مهمًا جدًا هنا.

مستويات التطبيق

التطبيقات متعددة المستويات هي تطبيقات مقسمة وفقًا للمبادئ الوظيفية إلى وحدات معزولة (مستويات، طبقات). عادةً (بما في ذلك سياق تطوير Java EE)، تنقسم تطبيقات المؤسسات إلى ثلاثة مستويات:
  • عميل؛
  • مستوى متوسط؛
  • مستوى الوصول إلى البيانات.
  1. طبقة العميل هي تطبيق يطلب البيانات من خادم Java EE (الطبقة الوسطى). يقوم الخادم بدوره بمعالجة طلب العميل وإرجاع الرد عليه. يمكن أن يكون تطبيق العميل عبارة عن متصفح، أو تطبيق مستقل (جوال أو سطح مكتب)، أو تطبيقات خادم أخرى بدون واجهة رسومية.

  2. وينقسم المستوى الأوسط بدوره إلى مستوى الويب ومستوى منطق الأعمال.

    1. تتكون طبقة الويب من بعض المكونات التي توفر التفاعل بين العملاء وطبقة منطق الأعمال.

      يتم استخدام تقنيات Java EE التالية على مستوى الويب:

      • تقنية JavaServer Faces (JSF)؛
      • صفحات خادم جافا (JSP)؛
      • لغة التعبير (EL)؛
      • الخدمات؛
      • السياقات وحقن التبعية لـ Java EE (CDI).

    2. تتكون طبقة منطق الأعمال من مكونات تنفذ كل منطق الأعمال الخاص بالتطبيق. منطق الأعمال هو رمز يوفر وظائف تغطي احتياجات بعض مجالات الأعمال المحددة (الصناعة المالية، والخدمات المصرفية، والتجارة الإلكترونية). يمكن اعتبار هذا المستوى جوهر النظام بأكمله.

      التقنيات المستخدمة في هذا المستوى:

      • جافا بينز للمؤسسات (EJB)؛
      • خدمات الويب JAX-RS RESTful؛
      • كيانات Java Persistence API؛
      • خدمة رسائل جافا.

  3. مستوى الوصول إلى البيانات. يُطلق على هذا المستوى أحيانًا اسم مستوى أنظمة معلومات المؤسسة (EIS). يتكون EIS من خوادم قواعد بيانات مختلفة وأنظمة تخطيط موارد المؤسسات ERP (تخطيط موارد المؤسسات) ومصادر البيانات الأخرى. تصل طبقة منطق الأعمال إلى هذه الطبقة للبيانات.

    في هذا المستوى يمكنك العثور على تقنيات مثل:

    • واجهة برمجة تطبيقات اتصال قاعدة بيانات جافا (JDBC)؛
    • جافا استمرار API؛
    • بنية موصل Java EE؛
    • واجهة برمجة تطبيقات المعاملات Java (JTA).

خوادم التطبيقات والحاويات والمكونات

دعونا نلقي نظرة على تعريف Java EE من ويكيبيديا. Java EE عبارة عن مجموعة من المواصفات والوثائق ذات الصلة بلغة Java، والتي تصف بنية النظام الأساسي للخادم لمهام المؤسسات المتوسطة والكبيرة. لفهم ما تعنيه "مجموعة المواصفات" بشكل أفضل في هذا السياق، دعونا نرسم تشبيهًا بواجهة Java. واجهة Java نفسها خالية من الوظائف. إنه ببساطة يحدد بعض العقود التي يتم بموجبها تنفيذ بعض الوظائف. لكن الفئات الأخرى تنفذ الواجهة. علاوة على ذلك، يمكن أن تحتوي الواجهة الواحدة على عدة تطبيقات، قد يختلف كل منها عن الآخر في بعض التفاصيل. مع المواصفات كل شيء هو نفسه تماما. Naked Java EE هي مجرد مجموعة من المواصفات. يتم تنفيذ هذه المواصفات بواسطة خوادم Java EE المختلفة. خادم Java EE هو تطبيق خادم يقوم بتنفيذ واجهات برمجة تطبيقات منصة Java EE ويوفر خدمات Java EE القياسية. تسمى خوادم Java EE أحيانًا بخوادم التطبيقات. يمكن أن تحتوي بيانات الخادم على مكونات التطبيق، كل منها يتوافق مع مستواه الخاص في تسلسل هرمي متعدد المستويات. يوفر خادم Java EE خدمات متنوعة لهذه المكونات في شكل حاوية. الحاويات هي الواجهة بين المكونات التي تستضيفها والوظيفة المستقلة عن النظام الأساسي ذات المستوى المنخفض التي تدعم المكون. توفر الحاويات خدمات محددة للمكونات التي تستضيفها. على سبيل المثال، إدارة دورة حياة التطوير، وحقن التبعية، والتزامن، وما إلى ذلك. تخفي الحاويات التعقيد الفني وتزيد من إمكانية النقل. هناك أربعة أنواع مختلفة من الحاويات في Java EE :
  1. يتم تنفيذ حاويات التطبيقات الصغيرة بواسطة معظم المتصفحات. عند تطوير التطبيقات الصغيرة، يمكنك التركيز على الجانب المرئي من التطبيق، بينما توفر الحاوية بيئة آمنة.

  2. تحتوي حاوية عميل التطبيق (ACC) على مجموعة من فئات Java والمكتبات والملفات الأخرى اللازمة لتنفيذ ميزات مثل الحقن وإدارة الأمان وخدمات التسمية في تطبيقات Java SE.

  3. توفر حاوية الويب الخدمات الأساسية لإدارة وتنفيذ مكونات الويب (servlets، ومكونات EJB Lite، وصفحات JSP، والمرشحات، والمستمعين، وصفحات JSF، وخدمات الويب). وهو مسؤول عن إنشاء وتهيئة واستدعاء servlets ودعم بروتوكولات HTTP وHTTPS. تُستخدم هذه الحاوية لخدمة صفحات الويب لمتصفحات العميل.

  4. تكون حاوية EJB (Enterprise Java Bean) مسؤولة عن إدارة وتنفيذ مكونات نموذج EJB التي تحتوي على طبقة منطق الأعمال الخاصة بالتطبيق. فهو يقوم بإنشاء كيانات وحدة EJB جديدة، ويدير دورة حياتها، ويوفر خدمات مثل المعاملات، أو الأمان، أو التزامن، أو التوزيع، أو التسمية، أو إمكانيات الاستدعاء غير المتزامن.

يوجد أيضًا في Java EE أربعة أنواع من المكونات التي يجب أن يدعمها تطبيق مواصفات Java EE:
  1. التطبيقات الصغيرة هي تطبيقات واجهة المستخدم الرسومية (GUI) التي يتم تشغيلها في المتصفح. إنهم يستفيدون من واجهة برمجة تطبيقات Swing الغنية لإنتاج واجهات مستخدم قوية.

  2. التطبيقات هي البرامج التي تعمل على جانب العميل. عادةً ما تكون واجهة مستخدم رسومية (GUI) ويتم استخدامها لمعالجة الدُفعات.

  3. تطبيقات الويب (التي تتكون من servlets ومرشحاتها ومستمعي أحداث الويب وصفحات JSP وJSF) - تعمل في حاوية ويب وتستجيب لطلبات HTTP من عملاء الويب. تدعم Servlets أيضًا نقاط نهاية خدمة الويب SOAP وRESTful.

  4. تعمل تطبيقات المؤسسات (التي تم إنشاؤها باستخدام Enterprise Java Beans وJava message Service وJava Transaction API والمكالمات غير المتزامنة وخدمات الوقت) في حاوية EJB. تتعامل EJBs المُدارة بواسطة الحاوية مع منطق أعمال المعاملات. يمكن الوصول إليها محليًا أو عن بعد عبر RMI (أو HTTP لخدمات الويب SOAP وRESTful).

يوضح الرسم البياني أدناه بنية تطبيق Java EE النموذجية: مقدمة إلى جافا EE - 2

التقنيات

لذلك، قمنا بفرز الهندسة المعمارية. يجب أن يكون الهيكل العام واضحًا. في عملية وصف المكونات المعمارية، تطرقنا إلى بعض تقنيات Java EE مثل EJB وJSP وما إلى ذلك. دعونا نلقي نظرة فاحصة عليها. يوضح الجدول أدناه التقنيات المستخدمة بشكل رئيسي على مستوى العميل:
تكنولوجيا غاية
الخدمات فئات Java التي تعالج طلبات العميل ديناميكيًا وتولد الاستجابات (عادةً صفحات HTML).
وجوه خادم جافا (JSF) إطار لبناء تطبيقات الويب مع واجهة المستخدم. يسمح لك بتضمين مكونات واجهة المستخدم (على سبيل المثال، الحقول والأزرار) على الصفحة، وتحويل هذه المكونات والتحقق من صحتها، وتخزين هذه البيانات في مساحة تخزين على جانب الخادم.
تقنية Java Server Faces Facelets إنه نوع فرعي من تطبيق JSF يستخدم صفحات XHTML بدلاً من صفحات JSP
صفحات خادم جافا (JSP) المستندات النصية التي يتم تجميعها في servlets. يسمح لك بإضافة محتوى ديناميكي إلى الصفحات الثابتة (مثل صفحات HTML)
مكتبة العلامات القياسية لصفحات خادم جافا (JSTL) مكتبة العلامات التي تحتوي على الوظائف الأساسية في سياق صفحات JSP.
لغة التعبير مجموعة من العلامات القياسية المستخدمة في صفحات JSP وFacelets للوصول إلى مكونات Java EE.
السياقات وحقن التبعية لـ Java EE (CDI) يمثل مجموعة من الخدمات التي تقدمها حاويات Java EE لإدارة دورة حياة المكونات، بالإضافة إلى حقن المكونات في كائنات العميل بطريقة آمنة.
مكونات جافا فول الكائنات التي تعمل كمخزن مؤقت للبيانات لصفحات التطبيق.
يوضح الجدول أدناه التقنيات المستخدمة على مستوى منطق الأعمال:
تكنولوجيا غاية
مكونات Java Beans (فاصوليا المؤسسة). EJBs عبارة عن وحدات مدارة تحتوي على الوظائف الأساسية للتطبيق.
خدمات الويب JAX-RS RESTful إنها واجهة برمجة التطبيقات (API) لتطوير خدمات الويب التي تتوافق مع النمط المعماري REST.
نقاط نهاية خدمة الويب JAX-WS API لإنشاء واستهلاك خدمات الويب SOAP.
كيانات Java Persistence API (JPA). واجهة برمجة تطبيقات للوصول إلى البيانات الموجودة في مخازن البيانات وتحويل تلك البيانات إلى كائنات لغة برمجة Java والعكس.
جافا EE الفاصوليا المدارة الفاصوليا المُدارة التي توفر منطق أعمال التطبيق ولكنها لا تتطلب ميزات المعاملات أو الأمان الخاصة بـ EJB.
خدمة رسائل جافا تعد واجهة برمجة تطبيقات خدمة رسائل Java (JMS) معيارًا للمراسلة يسمح لمكونات تطبيق Java EE بإنشاء الرسائل وإرسالها واستلامها وقراءتها. وهذا يضمن الاتصال الموزع والموثوق وغير المتزامن بين المكونات.
يوضح الجدول أدناه التقنيات المستخدمة في طبقة الوصول إلى البيانات:
تكنولوجيا غاية
واجهة برمجة تطبيقات اتصال قاعدة بيانات جافا (JDBC) واجهة برمجة تطبيقات منخفضة المستوى للوصول إلى البيانات واسترجاعها من مخازن البيانات. الاستخدام النموذجي لـ JDBC هو كتابة استعلامات SQL مقابل قاعدة بيانات محددة.
واجهة برمجة تطبيقات استمرار جافا واجهة برمجة تطبيقات للوصول إلى البيانات الموجودة في مخازن البيانات وتحويل تلك البيانات إلى كائنات لغة برمجة Java والعكس. واجهة برمجة التطبيقات ذات مستوى أعلى بكثير مقارنة بـ JDBC. يخفي كل تعقيدات JDBC عن المطور تحت الغطاء.
بنية موصل Java EE واجهة برمجة التطبيقات (API) لربط موارد الشركة الأخرى، مثل:
  • ERP (تخطيط موارد المؤسسات، نظام تخطيط موارد المؤسسات)،
  • CRM (بالإنجليزية: Customer Relationship Management، نظام إدارة علاقات العملاء).
واجهة برمجة تطبيقات المعاملات Java (JTA) واجهة برمجة التطبيقات (API) لتحديد المعاملات وإدارتها، بما في ذلك المعاملات الموزعة والمعاملات عبر مخازن بيانات متعددة.

جافا EE مقابل الربيع

يعتبر Spring Framework منافسًا لـ Java EE. إذا نظرت إلى تطور هاتين المنصتين، تظهر صورة مثيرة للاهتمام. تم إنشاء الإصدارات الأولى من Java EE بمشاركة IBM. لقد تبين أنها رائعة، ولكنها خرقاء وثقيلة وغير مريحة للاستخدام. واجه المطورون صعوبات بسبب الحاجة إلى الاحتفاظ بعدد كبير من ملفات التكوين وغيرها من الأسباب التي تؤدي إلى تعقيد عملية التطوير. في الوقت نفسه، ولد Spring IoC. لقد كانت مكتبة صغيرة وجميلة وسهلة الاستخدام. كما أنها تستخدم ملف تكوين، ولكن على عكس Java EE، كان هناك ملف واحد فقط. أدت بساطة الربيع إلى حقيقة أن الجميع تقريبًا بدأوا في استخدام هذا الإطار في مشاريعهم. ثم بدأ Spring وJava EE طريقهما إلى نفس الشيء، ولكن من نهايات مختلفة. بدأت Pivotal Software، مطور Spring، في إطلاق مشروع تلو الآخر لتغطية جميع الاحتياجات الممكنة والمستحيلة لمطوري Java. تدريجيًا، أصبح ما كان يُسمى سابقًا Spring أولاً أحد المشاريع، ثم اندمج تمامًا مع العديد من المشاريع الأخرى في Spring Core. كل هذا أدى إلى تعقيد الربيع الحتمي مقارنة بما كان عليه في الأصل. بمرور الوقت، أصبح من الصعب جدًا تتبع مجموعة تبعيات الربيع بأكملها، وكانت هناك حاجة إلى مكتبة منفصلة يمكنها تحميل وتشغيل كل شيء بنفسها (الآن تعثر حذاء Spring Boot المفضل في مكان ما). طوال هذا الوقت، كان JCP يعمل على شيء واحد - لتحقيق أقصى قدر من التبسيط لكل ما هو ممكن داخل Java EE. ونتيجة لذلك، في وحدة جافا للأعمال الحديثة، لوصف حبة الفول، يكفي تحديد تعليق توضيحي واحد فوق الفئة، مما يمنح المطور إمكانية الوصول إلى القوة الكاملة لتقنية Enterprise Java Beans. وقد أثرت عمليات التبسيط المماثلة على كل المواصفات الموجودة في Java EE. ونتيجة لذلك، فإن Spring وJava EE متساويان تقريبًا من حيث الوظيفة. بعض الأشياء أفضل، وبعض الأشياء أسوأ، ولكن إذا نظرت عالميًا، فلا توجد اختلافات كبيرة. الأمر نفسه ينطبق على تعقيد المهمة. يعد كل من Spring وJava EE من الأدوات الممتازة. ربما يكون أفضل ما هو موجود حاليًا لبناء تطبيقات شبكة المؤسسة في Java. ومع ذلك، يمكن أن تعمل Java EE بشكل عام فقط داخل خادم تطبيق المؤسسة (Tomcat ليس واحدًا)، ويمكن تشغيل التطبيق الموجود على Spring Stack على أي شيء (على نفس Tomcat)، وحتى بدون خادم على الإطلاق (حيث سيتم تشغيله داخل نفسه بشكل مستقل). وهذا يجعل Spring أداة مثالية لتطوير تطبيقات واجهة المستخدم الرسومية الصغيرة للواجهة الأمامية أو بنيات الخدمات الصغيرة. لكن التخلص من الاعتماد على خوادم التطبيقات كان له تأثير سلبي على قابلية التوسع لتطبيقات Spring. وJava EE مناسب تمامًا لتنفيذ تطبيق مجموعة متجانسة قابلة للتطوير. إن المطورين المطلعين على Spring Framework يزداد الطلب عليهم حاليًا في سوق العمل. هكذا حدث تاريخيًا: في الوقت الذي كانت فيه Java EE معقدة للغاية، اكتسب Spring "قاعدة عملاء". ومع ذلك، لا توجد إجابة واضحة لسؤال ما يجب تعلمه في Spring أو Java EE. يمكن إعطاء المبتدئين النصائح التالية. تعرف على كلا النظامين (على الأقل سطحيًا). اكتب مشروعًا منزليًا صغيرًا في كل من Java EE وSpring. ثم تعمق في الإطار الذي سيكون مطلوبًا في العمل. ونتيجة لذلك، لن يكون التبديل بين Spring وJava EE أمرًا صعبًا.

نتائج

موضوع واسع النطاق بالطبع لا يمكن تغطيته في مقال واحد! بعد الكثير من المصطلحات الجديدة، ربما تريد "تطبيق" هذه المعرفة على مثال واقعي. لذلك، سنواصل دراسة Java EE: ستجد دروسًا عملية حول إعداد بيئة محلية لتطوير Java EE في المقالة التالية.
تعليقات
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION