JavaRush /مدونة جافا /Random-AR /ما تحتاج لمعرفته حول Spring: التاريخ والوحدات الأساسية وا...

ما تحتاج لمعرفته حول Spring: التاريخ والوحدات الأساسية والمقارنة مع Java EE

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

1. كيف ومتى ظهر الربيع وما تطور إليه مع مرور الوقت

بدأ كل شيء في أكتوبر 2002 ، عندما كتب رود جونسون كتاب "خبير واحد على واحد J2EE تصميم وتطوير": ما تحتاج لمعرفته حول Spring: التاريخ والوحدات الأساسية والمقارنة مع Java EE - 3في هذا الكتاب، الذي نشرته Wrox ، يصف المؤلف حالة تطوير Java للمؤسسات في ذلك الوقت ويشير إلى عدد من عيوب Java EE وبيئات (Enterprise Java Bean)EJB . في الوقت نفسه، يقترح رود جونسون حلاً أبسط يعتمد على فئات Java العادية (POJO - كائنات Java القديمة البسيطة) وحقن التبعية. يشرح في الكتاب كيف يمكنك إنشاء تطبيق حجز عبر الإنترنت عالي الجودة وقابل للتطوير دون استخدام EJB. أولئك. لقد أظهر بوضوح كيفية إزالة تعقيد تطوير التطبيقات وإتاحة استخدام JavaBeans البسيطة لتحقيق كل ما كان ممكنًا في السابق فقط باستخدام EJBs. ومع ذلك، فإن نطاق Spring لا يقتصر على تطوير مكونات البرامج التي تعمل على جانب الخادم. يمكن لأي تطبيق Java الاستفادة من مزايا إطار العمل من حيث البساطة وقابلية الاختبار والاقتران غير المحكم. حقق تصميم تطوير J2EE الخاص به نجاحًا فوريًا. كان الكثير من كود التطبيق، المقدم مجانًا كجزء من الكتاب، قابلاً لإعادة الاستخدام، وسرعان ما بدأ عدد من المطورين في استخدامه في مشاريعهم. كان لدى Wrox صفحة ويب للكتاب تحتوي على كود المصدر والتصحيحات. كما قاموا بتوفير منتدى عبر الإنترنت للكتاب. في فبراير 2003، أقنع المطوران يورغن هيلر وجان كاروف رود جونسون بإنشاء مشروع مفتوح المصدر يعتمد على كود إطار العمل. منذ تلك اللحظة فصاعدًا، بدأ رود ويورجن ويان تعاونهم لإنشاء شيء جديد تمامًا. في الواقع، كان يان كاروف هو من ابتكر اسم "الربيع" للإطار الجديد. والمقصود هنا هو أن الربيع يشبه الربيع: بداية جديدة بعد "الشتاء" في J2EE التقليدي.
  • في يونيو 2003، تم إصدار Spring 0.9 بموجب ترخيص Apache 2.0.
  • تم إصدار Spring 1.0 في مارس 2004. ومن المثير للاهتمام أنه حتى قبل إصدار Spring 1.0، تم استقبال الإصدار السابق 0.9 بشكل جيد للغاية وتم اعتماده على نطاق واسع.
  • في أغسطس 2004، شارك رود جونسون ويورغن هيلر وكيث دونالد وكولين سامبالينو في تأسيس شركة Inter21 ، وهي شركة استشارات وتدريب ودعم تابعة لـ Spring.
  • أكتوبر 2006: إطلاق Spring 2.0، الذي يبسط ملفات تكوين XML.
  • قدم Spring 2.5، الذي صدر في نوفمبر 2007، تكوينات التعليقات التوضيحية.
  • Spring 3.2، الذي تم إصداره في ديسمبر 2012، قدم تكوين Java، ودعم Java 7، وHibernate 4، وServlet 3.0، ويتطلب أيضًا Java 1.5 على الأقل.
  • غادر يان كاروف الفريق في وقت مبكر. غادر رود جونسون فريق الربيع في عام 2012. لا يزال يورغن هيلر عضوًا نشطًا في فريق تطوير Spring.
  • أضاف Spring 4.0، الذي تم إصداره في عام 2014، دعمًا لـ Java 8.
  • أيضًا في عام 2014، تم تقديم Spring Boot للعالم.
  • تم إصدار Spring 5.0 في عام 2017. مثل Spring Boot 2.x، الذي يدعم Spring 5.
  • في الواقع، هكذا أصبح إطار العمل المفضل لدينا هو ما نعرفه الآن.

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

دعونا نجري مقارنة بسيطة بين مجموعتي Java الرئيسيتين لمطوري الويب: Spring و Java EE. ما تحتاج لمعرفته حول Spring: التاريخ والوحدات الأساسية والمقارنة مع Java EE - 4
جافا إي
مزايا عيوب
  • تعتبر التطبيقات المكتوبة بلغة Java EE أكثر موثوقية وأمانًا وقابلة للتطوير
  • Java EE هو معيار API معتمد في الصناعة
  • يعتمد بشكل أساسي على التعليقات التوضيحية وCDI (حقن السياق والتبعية)، تمامًا مثل Spring
  • التنفيذ يعتمد على حاويات EJB وPOJOs
  • يتم التعامل مع التطبيقات المعقدة التي تحتوي على عدد كبير من المعاملات بشكل جيد للغاية بواسطة JEE
  • ناجح في الاستخدام لتطبيق متجانس قابل للتطوير
  • لدى Java EE لغة OOP الخاصة بها والتي تحتوي على نمط وبناء جملة محددين
  • بيئة تطوير تطبيقات معقدة للغاية يصعب على المبتدئين فهمها (وأحيانًا على كبار السن أيضًا)
  • قد تكون التكلفة النهائية للمشروع، بما في ذلك التصميم والنشر وتطوير التطبيقات، باهظة
تم تصميم Java EE، المرخص من Oracle، للمؤسسات والشركات التي تحتاج إلى بيئة قابلة للتكيف والتوزيع على نطاق واسع لبناء تطبيقات السوق الشامل. مثل Spring، يتضمن Java EE مكتبات إضافية للوصول إلى قاعدة البيانات (JDBC، JPA)، والاستدعاء الهندسي عن بعد (RMI)، والمعلومات (JMS)، وإدارة الويب، ومعالجة XML، ويميز واجهات برمجة التطبيقات القياسية لـ JavaBeans المؤسسية، والمداخل، وServlets، وصفحات خادم Java، إلخ. ما تحتاج لمعرفته حول Spring: التاريخ والوحدات الأساسية والمقارنة مع Java EE - 5الهدف الأساسي لـ Java EE هو كشف المشكلات الرئيسية التي يواجهها المطورون فيما يتعلق ببناء التطبيقات الحالية باستخدام واجهات برمجة التطبيقات المختلفة. في الوقت نفسه، يتمتع التطوير في Java EE بمستوى عالٍ من التعقيد، مما يرفع المستوى بشكل باهظ ليس فقط للمبتدئين. وقد يكون من الصعب على المتخصصين ذوي الخبرة فهم الوظائف المكتوبة بالفعل، لذا فإن التطوير في Java EE يستغرق وقتًا أطول، وبالتالي يكون أكثر تكلفة. حول Java EE باختصار يمكننا أن نقول هذا: معقدة ولكنها مرنة. حسنًا، الآن دعونا نتحدث قليلاً عن الربيع . ما تحتاج لمعرفته حول Spring: التاريخ والوحدات الأساسية والمقارنة مع Java EE - 6
ربيع
مزايا عيوب
  • يسمح لك بتنظيم تفاعلات الكائنات بشكل فعال
  • أكثر بساطة من Java EE
  • تم تنفيذه على أساس IOC و AOP ، مما يضمن اقترانًا فضفاضًا للتطبيقات
  • يعمل بناءً على تكوين XML أو Groovy أو التعليقات التوضيحية
  • يسمح لك باستخدام كائنات Java القديمة البسيطة - POJOs، لا يحتاج المطورون إلى حاوية مؤسسة مثل خادم التطبيقات
  • يوفر لمطوري Java مستوى عاليًا من الوحدات النمطية
  • يوفر تطبيقات لمكتبات Java EE، ولكن بطريقته الخاصة، مما يجعل استخدامها أسهل بكثير
  • ترخيص مفتوح المصدر
  • يعمل Spring Boot على تبسيط عملية إعداد التطبيق الأولي بشكل كبير
  • من السهل عمومًا اختبار كود تطبيق Spring
  • من الصعب نسبيًا تطوير الربيع لأنه يفتقر إلى التركيز الواضح
  • بالنسبة لمطور Java جديد، قد يكون تعلم إطار عمل Spring أمرًا صعبًا (لكنه لا يزال أسهل من Java EE)
  • الربيع أبطأ من Java EE
Spring هو إطار عمل Java مفتوح المصدر للشركات الكبيرة. يهدف إطار عمل Spring إلى توفير أبسط تنفيذ ممكن لأفكار J2EE والاستفادة من ممارسات البرمجة الممتازة من خلال توسيع قدرات نموذج البرمجة القائم على POJO. أولئك. يعد Java EE معيارًا رسميًا، في حين أن Spring هو إطار عمل ينفذ هذا المعيار بطريقته الخاصة.

نتائج المقارنة

من وجهة نظري، فإن Java EE وSpring يشبهان JDBC وHbernate، حيث تعد JDBC تقنية أسرع، ولكنها تحتوي في نفس الوقت على الكثير من التعليمات البرمجية غير الضرورية. ويستخدم Hibernate بالفعل JDBC، ولكنه في نفس الوقت يبسط ويقلل التطوير بشكل كبير (وإن كان يفرض بعض القيود). من المستحيل أن نقول على وجه اليقين أي منهم أفضل. وهذا يذكرنا أيضًا إلى حد ما بالسؤال: أيهما أفضل - ArrayList أم LinkedList. بعد كل شيء، ستكون الإجابة هي نفسها - اعتمادا على الوضع. كل واحد منهم لديه نقاط القوة والضعف الخاصة به، وتحتاج إلى الاختيار من بينها بعناية، ووزن موقفك وفهم أي منها سيحقق أكبر فائدة الآن. ما تحتاج لمعرفته حول Spring: التاريخ والوحدات الأساسية والمقارنة مع Java EE - 7

3. مكونات الربيع

حسنا، الآن دعونا نتحدث قليلا عن الأطر التي تشكل الربيع.

إطار الربيع

إنها الوحدة الأساسية التي توفر نموذجًا شاملاً للبرمجة والتكوين لتطبيقات المؤسسات الحديثة المستندة إلى Java — على أي نظام أساسي للنشر. يحتوي على العديد من تقنيات الربيع الأساسية (الأساسية) :
  • الوظيفة الأساسية الأساسية التي تنفذ مفاهيم IoC (انعكاس التحكم) وDI (حقن التبعية) ؛
  • AOP - برمجة موجهة نحو الجانب - برمجة موجهة نحو الجانب تهدف إلى تنفيذ المنطق الشامل؛
  • MVC و WebFlux - أطر عمل للتفاعل على شبكة الإنترنت؛
  • JDBC ، ORM - تقنيات التفاعل مع قواعد البيانات؛
  • الاختبار - وظيفة الاختبار الشفاف وغير المعقد لبيانات حاوية الربيع؛
  • SpEL - لغة التعبير الربيعية - لغة التعبير الربيعية؛
  • إلخ.

التمهيد الربيع

يبسط إنشاء التطبيقات المستندة إلى Spring عن طريق تقليل الإعداد الأولي للتطبيق والتكوين التلقائي لعناصر تطبيق Spring. مثال على بدء تشغيل Spring Boot خلال 5 دقائق

بيانات الربيع

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

سحابة الربيع

يتم استخدامه في بنية الخدمات الصغيرة، مما يؤدي إلى تبسيط تفاعل الخدمات الصغيرة مع بعضها البعض وأتمتة نشر التطبيقات على الأنظمة الأساسية السحابية مثل AWS و Azure وما إلى ذلك. شاهد برنامجًا تعليميًا مفصلاً عن Spring Cloud هنا ، ولكني سأحذرك من أن هذا الموضوع ليس بالأمر السهل ويستهدف المتخصصين القريبين من المستوى الأعلى.

أمن الربيع

يوفر مصادقة قوية وقابلة للتخصيص (المصادقة) وأداة التحكم في الوصول (الترخيص) لأحد التطبيقات. يمكنك العثور على مثال بسيط لربط Spring Security بالتطبيق الخاص بك في هذا المنشور . ما تحتاج لمعرفته حول Spring: التاريخ والوحدات الأساسية والمقارنة مع Java EE - 8

الرسم البياني الربيعQL

توفر هذه الوحدة الدعم لتطبيقات Spring المبنية على GraphQL Java. GraphQL هي لغة استعلام لواجهات برمجة التطبيقات التي تسمح للعملاء بالاستعلام عن مجموعة محدودة من البيانات التي يحتاجون إليها، والتي بدورها تسمح بجمع البيانات في عدد محدود من الاستعلامات. إذا كنت على دراية بـ JPA بالفعل، فربما تكون قد صادفت EntityGraph بالفعل، بمفهوم مشابه (أو نفس الشيء). يمكنك قراءة المزيد عن GraphQL هنا .

جلسة الربيع

يوفر هذا الجزء من إطار عمل Spring واجهات برمجة التطبيقات والتطبيقات لإدارة معلومات جلسة المستخدم (يتم تخزين بيانات جلسة المستخدم في وحدة تخزين ثابتة مثل Redis و MongoDb و HazelCast وما إلى ذلك). يمكن العثور على مثال لاستخدام جلسة الربيع هنا .

التكامل الربيعي

تم تصميم هذه الوحدة لتبسيط المراسلة في التطبيقات المستندة إلى Spring ودعم التكامل مع الأنظمة الخارجية من خلال المحولات التعريفية. توفر هذه المحولات مستوى أعلى من التجريد مقارنة بدعم Spring للاتصال عن بعد والمراسلة والجدولة. مقالة مفصلة .

راحة الربيع

يوفر مجموعة غنية من الأدوات التي تعمل على تبسيط تطوير REST API: أدوات لتوجيه الطلبات، لتحويل JSON/XML إلى كائنات من الأنواع المطلوبة، وما إلى ذلك. يمكن العثور على مثال لخدمة RESTful في Spring في هذه المادة .

تدفق الويب الربيع

يعتمد Spring Web Flow على Spring MVC ويسمح لك بتنفيذ "تدفقات" تطبيق الويب. تتضمن هذه التدفقات سلسلة من الخطوات التي توجه المستخدم خلال إكمال بعض مهام العمل. وهي تشمل طلبات HTTP متعددة، وتكون ذات حالة، وتعمل مع بيانات المعاملات، وقابلة لإعادة الاستخدام، ويمكن أن تكون ديناميكية ودائمة بطبيعتها. يمكن رؤية مثال على توصيل Spring Web Flow في هذا الدليل باللغة الإنجليزية .

خدمات الويب الربيعية

تم تصميم هذه الوحدة لتسهيل تطوير خدمات SOAP القائمة على العقود من خلال السماح لك بإنشاء خدمات ويب مرنة باستخدام إحدى الطرق العديدة لمعالجة حمولات XML. SOAP - بروتوكول الوصول إلى الكائنات البسيطة - بروتوكول الوصول إلى الكائنات البسيطة.

هاتواس الربيع

توفر الوحدة بعض واجهات برمجة التطبيقات لتسهيل إنشاء وحدات تحكم REST تتبع مبدأ HATEOAS عند العمل مع Spring وخاصة Spring MVC. HATEOAS - الوسائط التشعبية كمحرك لحالة التطبيق - الوسائط التشعبية كمحرك لحالة التطبيق. يمكنك رؤية استخدام مكتبة الربيع هنا .

دفعة الربيع

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

الربيع AMQP

تطبق الوحدة مفاهيم Spring الأساسية على تطوير حلول المراسلة المستندة إلى AMQP. يوفر قالبًا كفكرة تجريدية عالية المستوى لإرسال واستقبال الرسائل. كما يوفر أيضًا دعمًا لـ POJOs المبنية على الرسائل مع حاوية المستمع. AMQP - بروتوكول خدمة انتظار الرسائل المتقدم - بروتوكول خدمة انتظار الرسائل المتقدم. يحتوي المشروع على جزأين: Spring-amqp هو التجريد الأساسي، وspring-rabbit هو تطبيق RabbitMQ . مثال على اتصال RabbitMQ باستخدام Spring ما تحتاج لمعرفته حول Spring: التاريخ والوحدات الأساسية والمقارنة مع Java EE - 9

الربيع لأباتشي كافكا

يطبق هذا المشروع مفاهيم الربيع الأساسية على تطوير حلول المراسلة المستندة إلى كافكا . يتم توفير القالب كتجريد عالي المستوى لإرسال الرسائل. كما يوفر أيضًا دعمًا لـ POJOs المبنية على الرسائل مع التعليقات التوضيحية الضرورية وحاوية المستمع. هناك تشابه واضح هنا مع Spring AMQP، ولكن هذه الوحدة تم تكييفها خصيصًا لكافكا. يمكن رؤية مثال على ربط Spring Kafka هنا .

Spring CredHub

يوفر دعمًا من جانب العميل لتخزين بيانات الاعتماد واسترجاعها وحذفها من خادم CredHub الذي يعمل على النظام الأساسي Cloud Foundry . CredHub - يوفر واجهة برمجة التطبيقات (API) لتخزين أنواع مختلفة من بيانات الاعتماد وإنشائها واسترجاعها وحذفها بشكل آمن. يوفر Spring CredHub ربط Java لواجهة برمجة تطبيقات CredHub، مما يجعل من السهل دمج تطبيقات Spring مع CredHub.

فلو الربيع

إنها مكتبة JavaScript توفر مصممًا مرئيًا بسيطًا قابلاً للتضمين بتنسيق HTML5 لخطوط الأنابيب ورسومًا بيانية بسيطة لمراقبة التدفق والبيانات المجمعة. يوجد عرض لهذه التقنية في الفيديو على الرابط .

الربيع LDAP

تعمل هذه المكتبة على تبسيط عمليات LDAP وتعتمد على Spring JdbcTemplate. يسمح إطار العمل بالبحث عن السياق وإغلاقه وعرض النتائج وقيم التشفير/فك التشفير والمرشحات وغير ذلك الكثير (مبني على نفس مبادئ Spring Jdbc) ويمكن العثور على مثال لتطبيق Spring LDAP هنا .

ربيع رو

توفر هذه الوحدة أداة RAD التي يمكنها إنشاء التطبيق المستند إلى Spring وإدارته. هدفها هو تحسين إنتاجية مطوري Java. لا يمكنه كتابة منطق عمل تطبيقك، لكنه يمكنه التعامل مع عناصر التكوين والبنية التحتية.

شل الربيع

تسهل المكتبة إنشاء تطبيق Shell كامل المواصفات (المعروف أيضًا باسم سطر الأوامر) من خلال الاعتماد على Spring Shell jars وإضافة الأوامر الخاصة بك (والتي تأتي كطرق في Spring Beans). يمكن أن يكون إنشاء تطبيق سطر الأوامر مفيدًا، على سبيل المثال، للتفاعل مع REST API الخاص بمشروعك أو للعمل مع محتوى الملف المحلي. اقرأ المزيد هنا وهنا .

آلة الدولة الربيعية

تسمح هذه الوحدة لمطوري التطبيقات باستخدام مفاهيم آلة الحالة مع تطبيقات Spring. يمكن العثور على مثال تفصيلي لاستخدام هذه الوظيفة هنا وهنا .

قبو الربيع

يوفر Spring Vault تجريدات Spring المألوفة ودعمًا من جانب العميل للوصول إلى الأسرار وتخزينها وإبطالها. وهو يقدم تجريدات منخفضة المستوى وعالية المستوى للتفاعل مع Vault ، مما يحرر المستخدم من مخاوف البنية التحتية. مثال على تنفيذ Spring Vault ما تحتاج لمعرفته حول Spring: التاريخ والوحدات الأساسية والمقارنة مع Java EE - 10"هل أحتاج إلى تعلم كل هذا؟" - تسأل بذهول. لا تخف! هذا خطأ! بتعبير أدق، ليس تماما مثل هذا. كانت هذه القائمة الكاملة للتقنيات المتاحة في الربيع. قائمة التقنيات التي يحتاج المبتدئ إلى معرفتها أكثر تواضعًا:
  • جوهر الربيع
  • التمهيد الربيع
  • Spring Web (MVC وREST)
  • بيانات الربيع (Spring ORM، Spring JDBC، Spring JPA)
  • اختبار الربيع
هناك أيضًا تقنيات أخرى غالبًا ما توجد في المشاريع، ولكن نظرًا لتعقيدها، عادةً ما يتم التعامل معها من قبل مطورين أكثر خبرة بدلاً من المبتدئين في مجال البيئة. ومع ذلك، من المفيد أيضًا للمبتدئين أن يكون لديهم على الأقل فهم عام لما يلي:
  • أمن الربيع
  • الربيع AOP
  • سحابة الربيع
يتم استخدام التقنيات الأخرى بشكل أقل تكرارًا، لذلك ما عليك سوى دراستها بجدية للعمل على مشروع معين. بالمناسبة، يمكنك العثور على قائمة مرجعية كاملة لما يجب أن يعرفه مطور Java في مقالتي الأخرى. هذا كل ما بالنسبة لي اليوم، أراكم جميعًا قريبًا! ما تحتاج لمعرفته حول Spring: التاريخ والوحدات الأساسية والمقارنة مع Java EE - 11
تعليقات
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION