تاريخ تطوير تطبيقات الويب في
لغة برمجة
Java مع أمثلة على استخدامها على مدار الفترة من ظهور مواصفات servlet إلى يومنا هذا.

المقالة لا تدعي أنها أكاديمية في مجملها ودقتها. إن تفسير جميع الحقائق المذكورة والأمثلة المقدمة تعكس فقط معرفة ووجهة نظر وأخطاء مؤلف المقال. الغرض من الكتابة هو محاولة الحصول على صورة كاملة للوضع الحالي لتطبيقات الويب
Java . بالإضافة إلى ذلك ، يمكن للقارئ استخدام المعلومات المقدمة كنقطة انطلاق لمزيد من البحث المستقل.
نموذج التعليمة البرمجية موجود في مستودعات
GitHub : عرض
توضيحي لكل مكتبة وإطار عمل والتطبيق من الجزء الأخير من المقالة . في وقت كتابة هذا التقرير ، هناك 37 مثالًا في
المستودع الأول ، مع مرور الوقت ، سيتم تحديث قائمتهم.
الجدول الزمني لظهور التقنيات والمكتبات والأطر وشعبيتها
لتسهيل الإدراك ، يتم جدولة البيانات ويتم توضيحها بشكل أكبر بواسطة المخططات. يتم تجميع عناصر الجدول بشروط ، إن أمكن. يتم تصنيف المكتبات والأطر حسب الشعبية بترتيب تنازلي.
المعلومات عن الشعبية مأخوذة من مصدرين. المصدر الأول هو
مؤشر شعبية إطار عمل ZeroTurnaround RebelLabs . كان آخر تحديث له في نهاية عام 2017 ، وكان مصحوبًا بمدونتين من المدونات قبل ذلك:
الأول والثاني . انضم مؤلف نشر المدونة الثانية ،
سيمون مابل ، إلى
سنيك ، حيث واصل جمع هذه الإحصاءات المفيدة وتحليلها. المصدر الثاني هو
دراسته ، التي نشرت في
مجلة جافا ، نوفمبر / ديسمبر 2018 (السؤال 17).
تمت إضافة مجموعة من المواصفات إلى أعلى الجدول ، وتم إضافة الأطر التي لم يتم تضمينها في مؤشر الشعبية ، والتي ما زلت أريد أن أذكرها ، في نهاية الجدول.
في الجدول الزمني الأول ، يتم عرض البيانات من الجدول بنفس الترتيب كما في الجدول. تم تصنيف المجموعات الحالية حسب الشعبية. في مجموعات (المواصفات ، يتم ترتيب عناصر
Spring ،
JSF ،
JAX-RS ،
MicroProfile ) بالترتيب الزمني لمظهرها. يمكنك النقر فوق أي من الصور لتكبيرها.

في الجدول الزمني الثاني ، يتم ترتيب نفس المعلومات حسب تاريخ ظهور الإصدار الأول من جميع العناصر. من السهل أن ترى أنه في عام 2001 ، على سبيل المثال ، لكتابة تطبيق على شبكة الإنترنت ، يمكنك فقط الاختيار من بين إطارين رئيسيين حاليين -
Tapestry و
Struts . في بداية عام 2014 ، كان من المستحيل استخدام
Spring Boot (تم إصدار أول إصدار رسمي له لاحقًا) ولم يكن من المنطقي استخدام
Seam (لم يعد موجودًا).

يظهر الرسم البياني الدائري مؤشر شعبية الإطار
وفقًا RebelLabs في نهاية عام 2017 . يشارك كل إطار من الأطر في الفهرس مرة واحدة ، أي أن إجمالي الفائدة هو 100. ويوضح الرسم البياني الثاني
نتيجة دراسة من مجلة Java Magazine ، 2018 . سألت الدراسة عن الأطر المستخدمة على شبكة الإنترنت ، وتم السماح لها باختيار أكثر من إطار في الإجابة. لهذا السبب ، كل نسبة مئوية مستقلة عن الأخرى ولا يمكن تلخيصها.

مواصفة
حجر الزاوية في وجود جميع المكتبات هو المعايير والمواصفات التي تستند إليها. توجد المواصفات في شكل
طلبات مواصفات Java (
JSRs ) التي تم تطويرها من خلال إجراء رسمي يسمى
عملية مجتمع جافا (
JCP ).
قائمة
JSRs المتعلقة
Java Enterprise Edition هنا . يعرض الجدول أدناه فقط أهم اثنين من المواصفات المختارة منهم -
Servlet و
Java EE (الأخير هو مجموعة من المواصفات الأخرى). لم يتم قبول الإصدارات الأولى من المواصفات كجزء من
JCP ، لذلك ليس لديهم أرقام
JSR .
منذ 12 سبتمبر 2017 ،
تم نقل
Java EE إلى إدارة
مؤسسة Eclipse Foundation وتسمى الآن
Jakarta EE .
تم استبدال
JCP بعملية تحديد مواصفات جاكرتا EE كعملية لتطوير واعتماد المواصفات.
باستخدام HTTP Servlets
فيما يلي بعض الأمثلة لإنشاء تطبيق ويب دون أي مكتبات أو أطر عمل. سيتم إعطاء الروابط إلى موقع الكود مع تعليق موجز بالتتابع. هناك طرق أكثر مماثلة ، وأوضح منها.
المثال الأول (
helloworld-web-servlet-xml module) في
واصف النشر web.xml
يحدد الفئة الموروثة من فئة الملخص
HttpServlet مع تطبيقه الخاص
لأسلوب doGet () . لأول مرة ، تم ذكر ملف
web.xml
النشر في مواصفات
Servlet 2.2 (1999).
في المثال الثاني (وحدة
تعليقات helloworld-web-servlet-annotation ) ، يكون
web.xml
واصف نشر
web.xml
مفقودًا. فوق نفس الفئة الموروثة من فئة الملخص
HttpServlet ، هناك تعليق توضيحي
WebServlet الذي ظهر في
Servlet 3.0 (2011).
المثال الثالث (وحدات
helloworld-web-servlet-interface-jar و
helloworld-web-servlet-interface-war ) أكثر تعقيدًا بعض الشيء. يوضح كيفية استخدام تطبيق واجهة
ServletContainerInitializer ، والتي ظهرت أيضًا في
Servlet 3.0 . في أول وحدة نمطية
helloworld-web-servlet-interface-jar لا يوجد حتى الآن
web.xml
واصف نشر
web.xml
، هناك فئة مشتقة من فئة الملخص
HttpServlet . يسمح
Servlet 3.0 بتطبيق واجهة
ServletContainerInitializer لإضافة مكونات servlet برمجياً ، بما في ذلك إجراء تسجيل servlet. يتم تكوين فئة التنفيذ لواجهة
ServletContainerInitializer باستخدام مفهوم
واجهة مزود الخدمة (
SPI ) عن طريق تحديد اسمها في ملف
META-INF/services/javax.servlet.ServletContainerInitializer
. الوحدة الأولى بإنشاء ملف JAR. ينشئ ملف WAR الوحدة النمطية الثانية
helloworld-web-servlet-interface-war ، ويتم تحديد الوحدة الأولى في قائمة التبعيات. يتم استخدام أسلوب مشابه لتطبيق واجهة
ServletContainerInitializer بواسطة إطار عمل
JSF و
Spring في
فئتي FacesInitializer و
SpringServletContainerInitializer ، على التوالي.
قدم Servlet 3.0 أيضًا servlets غير المتزامنة ، في
Servlet 3.1 (2013) - الإدخال / الإخراج غير
المحظور ، في
Servlet 4.0 (2017) - دعم
HTTP / 2 .
العمر قبل الربيع
Apache Tapestry هو إطار عمل حقيقي لتطبيق الويب. تم إصدار الإصدار الأول منه في عام 2000 ؛ حيث يستمر إصدار الإصدارات الجديدة الآن. عند تصميم
Tapestry ، تم استعارة الأفكار من
WebObjects ، وهي إطار ويب ظهر قبل عدة سنوات. تستخدم التطبيقات التي تستخدم
Tapestry (على سبيل المثال ،
helloworld-web-tapestry module) البنية المعيارية وملزمة مكونات واجهة المستخدم لصفحات الويب مع فئات
Java المقابلة لها.

ظهر
Apache Struts بشكل متزامن تقريبًا مع الإطار السابق ، في مايو 2000 ، ويستمر أيضًا في التطور حتى يومنا هذا. في المثال المبني عليها (
الوحدة النمطية helloworld-web-struts ) ، يمكنك أن ترى في ملف واصف النشر
web.xml
إشارة للفئة
StrutsPrepareAndExecuteFilter
كمرشح. يعمل هذا الفصل كمدير طلب ، ويختار إجراءً يتوافق مع الطلب.
تعتمد Apache Struts ، مثل
Tapestry ، على
نمط تصميم
MVC .

في مارس 2004 ، تم إصدار مواصفات
وجوه JavaServer وتطبيقين متعاقبين لها: يسمى الآن
Eclipse Mojarra (المعروف سابقًا باسم
Sun JSF Reference Implementation و
JSF RI و
Mojarra و
Oracle Mojarra ) و
Apache MyFaces . النهج الرئيسي الذي تدعمه المواصفات هو استخدام المكونات.
يتطابق كلا المثالين (وحدات
helloworld-web-jsf-mojarra و
helloworld-web-jsf-myfaces ) تمامًا مع بعضهما البعض ، باستثناء مكتبات التبعية. تحدد التطبيقات وتعرض على صفحات الويب إصدار تطبيق مواصفات
JSF واسم التطبيق (
Mojarra أو
MyFaces ) وإصدار التطبيق.

يونيو 2005 وإصدار الإصدار الأول من
Wicket Framework ، يشبه عقائديًا
Tapestry و
JavaServer Faces . نهج موجه للمكونات وربط قوالب
HTML لصفحات الويب بفئات
Java . منذ يونيو 2007 ، ينتمي إطار العمل إلى
مؤسسة Apache Software Foundation ، وتغيير اسمه إلى
Apache Wicket . جاءت ذروة شعبية الإطار في الفترة 2008-2009 ، ثم تلاه انخفاض تدريجي في الاهتمام به. يستمر إصدار الإصدارات الجديدة ؛ يمكن مشاهدة تطبيق مثال في وحدة
helloworld-web-wicket .

في أكتوبر 2005 ، تم إصدار الإصدار الأول من
Grails ، وهو إطار لبناء تطبيقات الويب المكتوبة بلغة
Groovy JVM . كما يوحي اسم المنتج ، فإن
Ruby on Rails ، وهو إطار مكتوب بلغة
Ruby ، كان له تأثير قوي على إنشائه. يعتمد أيضًا على
نمط MVC . الميزة المميزة هي استخدام ملفات عرض
GSP (
صفحات خادم Groovy ) كقوالب. تم إنشاء مثال (
helloworld-web-grails module) ، وتم إنشاؤه ويمكن تشغيله باستخدام
البرنامج المساعد Grails Maven ، البرنامج المساعد لـ
Maven .
Spring MVC و Spring Boot و Spring WebFlux

ظهرت النسخة الأولى من
Spring Framework ، بما في ذلك
Spring MVC ، في ديسمبر 2005. فئة servlet
HTTP فيه هو
DispatcherServlet . فيما يلي بعض الأمثلة بترتيب زمني لظهور الميزات (الإصدارات الجديدة من مواصفات
Servlet ، إصدار
Spring التمهيد لأول مرة في أبريل 2014 ، ثم
Spring WebFlux في سبتمبر 2017) ، والتي يتم استخدامها فيها.
في المثال الأول (الوحدة النمطية
helloworld-web-spring-mvc-xml ) ، يتم تحديد
web.xml
واصف نشر
web.xml
باعتباره servlet
DispatcherServlet . في وحدة التحكم مع الطريقة الوحيدة التي تعالج طلب GET ، هناك تعليقات توضيحية مقابلة (
وحدة التحكم و
RequestMapping ).
العرض ملف
JSP .
في المثال الثاني (وحدة
helloworld-web-spring-mvc-java ) ، يكون
web.xml
واصف نشر
web.xml
مفقودًا ويتم استخدام الميزة المقدمة في
Servlet 3.0 لتنفيذ تكوين البرنامج. الفئة الموروثة من
AbstractAnnotationConfigDispatcherServletInitializer (تنفذ في النهاية تطبيق واجهة
ServletContainerInitializer مع
SPI ) و
JavaConfig (يتم استخدام التكوين باستخدام رمز البرنامج مع التعليق التوضيحي
للتكوين معًا ).
يوضح المثال الثالث (وحدة
helloworld-web-spring-boot-mvc ) تبسيطًا كبيرًا للمشروع مع الحفاظ على نفس الوظيفة بفضل ظهور
Spring Boot . بالإضافة إلى فئة وحدة التحكم ، هناك بالإضافة إلى ذلك فئة واحدة فقط موروثة من
SpringBootServletInitializer ويتم
شرحها بواسطة
SpringBootApplication .
يُظهر المثال الرابع (وحدة
helloworld-web-spring-boot-webflux ) ، إلى جانب
Spring Spring ، استخدام
Spring WebFlux ، الذي تمت إضافته إلى
Spring Framework مؤخرًا نسبيًا. يستخدم
Spring WebFlux المبادئ التفاعلية
ومفاعل المشروع . من بين النهجين الرئيسيين (
الأسلوب الوظيفي والقائم على التعليق التوضيحي ) ، يتم تضمين الأول في المثال.
بعد مجيء الربيع ، 2000s

بدأ تطوير
Vaadin في عام 2002 كمكمل لإطار آخر ،
Millstone 3 . خلال عام 2006 ، تم إنشاء ما تم إنشاؤه كمنتج تجاري نهائي. حتى مايو 2009 ، كان يحمل اسم
IT Mill Toolkit ، فقط بعد تلك اللحظة التي أصبحت
Vaadin . في نهاية عام 2007 ، تم استبدال جزء العميل الذي تم تنفيذه بشكل مستقل سابقًا بواسطة
Google Web Toolkit (
GWT ). يوضح المثال (وحدة
helloworld-web-vaadin ) أنه يوجد ملف فئة
Java واحد فقط يتم فيه إنشاء جميع مكونات واجهة المستخدم برمجيًا ، مع إخفاء التفاصيل الفنية ذات المستوى المنخفض.

ظهر منتج مثير للاهتمام للغاية ،
Google Web Toolkit (
GWT ) ، في مايو 2006 ، وتم إصدار أحدث إصدار منذ عامين. لكتابة أجزاء الخادم والعميل ، يتم منحك الفرصة لاستخدام نفس
لغة Java . يقوم برنامج التحويل البرمجي الخاص بتحويل كود العميل في
Java إلى
JavaScript . يتكون المثال من ثلاث وحدات -
helloworld-web-gwt-client (جزء العميل) ،
helloworld-web-gwt-server (جزء الخادم) و
helloworld-web-gwt-share (رمز مشترك لأجزاء العميل والخادم). أثناء التطوير ، يمكنك استخدام
المكوّن الإضافي المناسب Maven لإطلاق جزء العميل في
Super Dev Mode ، حيث يسهل
خادم Code ما يسمى إعادة ترجمة رمز
Java الذي تم تغييره.

بدأت
Seam حياتها في مايو 2007 وتوقف عن الوجود في عام 2012. كان يعتمد على
Enterprise JavaBeans (
EJB3 ) و
JavaServer Faces (
JSF ). التي وضعتها
JBoss ، ثم جزء من
ريد هات . واقترح مفاهيم مختلفة مثيرة للاهتمام (على سبيل المثال ،
bijection ، والتي كانت هناك
شروح المقابلة ). لا يزال موقع الإطار موجودًا ، لكن في بعض أقسامه لم تعد بعض الروابط ذات صلة. تطبيق مثال موجود في
وحدة التماس helloworld-web-seam .

تم إصدار الإصدار الأول من مواصفات
Java API لخدمات RESTful Web Services (
JAX-RS ) في عام 2008 (
JSR 311 ) ، وتم تحديث المواصفات لاحقًا (
JSR 339 ،
JSR 370 ). أشهر تطبيقات
JAX-RS هي أطر عمل
Apache CXF (الإصدار الأول هو أبريل 2008) ، و
RESTEasy (سبتمبر 2008) ،
وجيرسي (مايو 2010) ، و
Restlet (يناير 2013). تم العثور على أمثلة لاستخدامها في الوحدات النمطية
helloworld-web-jaxrs-apache-cxf و
helloworld-web-jaxrs-resteasy و
helloworld-web-jaxrs-jersey و
helloworld-web-jaxrs-restlet ، على التوالي .

ظهرت
لعبة Play Framework في مايو 2008. مكتوب
بلغة برمجة
Scala JVM . يتيح لك إنشاء تطبيقات ويب بناءً عليها في كل من
Scala و
Java . ميزة خاصة لمطوري
Play هي التزامهم
بأداة بناء
sbt . لهذا السبب ، لكتابة مثال (وحدة
helloworld-web-play ) ، اضطررت إلى بذل بعض الجهود للبناء تحت
Maven ، باستخدام
المكون الإضافي المناسب لذلك.
2010s ، وآخر مرة

في عام 2011 ، تم إصدار النسخة الأولى من أعمال
Spark المصغرة الرائعة ، والتي تم إصدارها تحت تأثير
Sinatra ، والتي كتبت في
روبي . اللاكونكونية والخفة والبساطة في بناء الجملة متأصلة فيه. مثال (
helloworld-web-sparkjava module ) يوضح كيف يمكنك كتابة تطبيق كامل في سطرين فقط. قد تكون قدرات الإطار كافية إذا لم تكن بحاجة إلى شيء معقد للغاية في التطبيق الخاص بك.

في عام 2011 ،
ظهر Vert.x ، وهو إطار موجه نحو الأحداث يعمل على
JVM . تم
كتابته تحت التأثير الكبير لـ
Node.js ، والذي كان يسمى في الأصل
Node.x. له طبيعة متعددة اللغات ، مما يسمح لك باستخدام
Java أو
JavaScript أو
Groovy أو
Ruby أو
Ceylon أو
Scala أو
Kotlin عند استخدامك للإطار. بناءً على مكتبة
Netty ، فإنه يحتوي على العديد من الميزات والمزايا المميزة. مثال على ذلك في وحدة
helloworld-web-vertx .

كان ديسمبر 2011 هو الوقت الأولي لوجود
Dropwizard ، حيث
يضع مؤلفوه منتجهم كشيء بين المكتبة والإطار. الأجزاء الرئيسية الثلاثة التي تتكون منها هي مكتبات
Jetty (
HTTP ) و
Jersey (
JAX-RS ) و
Jackson (
JSON ). تستمر في التطور في الوقت الحاضر ، حتى مع وجود بعض الشعبية. يوضح المثال (وحدة
helloworld-web-dropwizard ) بنية نموذجية لتطبيق ويب
يستند إلى
Dropwizard .
Ratpack هو إطار آخر (إلى جانب
Spark ) ، مستوحى من مكتبة
سيناترا وكتب إلى حد كبير
بلغة JVM Groovy . علاقة فرانك سيناترا بما يسمى
حزمة الفئران ("حزمة الفئران"). تم إصدار الإصدار الأول من الإطار في عام 2013 ، ولا تزال الإصدارات الجديدة تصدر. استنادًا إلى مكتبة
Netty ، سريع وسهل الاستخدام وسهل الاستخدام وقابل للتوسعة بدرجة كبيرة. يمكن رؤية مثال في وحدة
helloworld-web-ratpack .

أكتوبر 2013 ، ظهور مشروع
JHipster الغريب ، وهو منشئ إطار تطبيق الويب. لإنشاء جزء العميل ، يتم دعم إطار
جافا سكريبت Angular و
React و
Vue (لا يزال الأخير مدعومًا في
الوضع التجريبي ). تستند الواجهة الخلفية إلى
Boot Spring . لبناء المشروع ، يمكن اختيار
Maven أو
Gradle . مثال على تطبيق
JHipster الذي تم إنشاؤه في وحدة
helloworld-web-jhipster .

في أغسطس 2014 ، تم إصدار الإصدار الأول من إطار
Rapidoid ، وهو بسيط وسريع
وموحد . تشتمل الوحدة النمطية الموصى بها والتي يوصى باستخدامها في بدء استخدام إطار العمل على التفاعل عبر
مكتبات HTTP ، و
Hibernate ، و
Hibernate Validator ، و
MySQL Connector ، و
Logback . مع زيادة الاحتياجات ، يمكن توسيع مجموعة الوحدات المستخدمة. مثال (
helloworld-web-rapidoid module ) يسمح لك بتقييم الحد الأدنى من الكود المطلوب للحصول على تطبيق ويب بسيط.

مارس 2016 ، إصدار إطار
Lagom . يضع مؤلفو منتج البرنامج هذا تطبيقه لتقسيم التطبيقات المتجانسة القديمة إلى خدمات ميكروية تفاعلية تتسع بشكل جيد أثناء تشغيلها. يستند الإطار إلى
Akka و
Play Framework . يمكن استخدام لغات البرمجة
Java أو
Scala لتطوير تطبيقاتها. يوجد مثال يستند إلى
Lagom في وحدات
helloworld-web-lagom-api و
helloworld-web-lagom-impl .
في الآونة الأخيرة ، في مايو 2017 ، تم
إصدار مكتبة
جافالين البسيطة
والخفيفة . يشير منشئوها أنفسهم إلى مؤلفي أطر عمل
سيناترا وسبارك التي سبق ذكرها. تركز المكتبة على لغات
Java و
Kotlin . إنه يضمن عدم وجود تعليقات توضيحية والحاجة إلى وراثة أي فئات مكتبة ، رمز موجزة قدر الإمكان ، ودعم
WebSocket ،
HTTP / 2 وطلبات غير متزامنة. مثال على ذلك يمكن رؤيته في وحدة
helloworld-web-javalin .

النجم الصاعد بين أطر الويب ، التي ظهرت أول نسخة منها منذ عام فقط ، في أكتوبر 2018 ، هو
Micronaut . يدعم
لغات البرمجة
Java و
Groovy و
Kotlin JVM . ميزته الكبيرة هي بداية سريعة للتطبيقات بناءً عليه وانخفاض استهلاك الذاكرة. يتم ضمان ذلك من خلال تطبيق التبعيات في مرحلة الترجمة ، وليس في وقت التشغيل. ومن الميزات الأخرى دعمًا ممتازًا للبرمجة التفاعلية ، ويمكن استخدام
مكتبات RxJava و
Reactor و
Akka . مثال (
helloworld-web-micronaut module ) يوضح إنشاء تطبيق بسيط قائم على
Micronaut .
MicroProfile

نظرًا للثقل الحالي لـ
Java EE ، فإن هناك عددًا من الشركات التي تحتاج إلى خدمات ميكروية لتطوير مجموعة من المواصفات خفيفة الوزن ، والتي تم تنفيذها - في سبتمبر 2016 ، تم إصدار
MicroProfile 1.0. في البداية ، تضمنت المجموعة ثلاثة مواصفات فقط (
CDI ،
JAX-RS و
JSON-P ). زادت المتطلبات تدريجياً ؛ بحلول الإصدار 3.0 ، نمت قائمة المواصفات بشكل ملحوظ.
حاليًا ، هناك أطر ويب ترضي
MicroProfile بدرجات متفاوتة. تم اختيار سبعة منهم للتوضيح ، فيما يلي مراسلات إطار العمل مع إصدارات
MicroProfile . معلومات كاملة عن جميع الأطر الحالية التي تنفذ
MicroProfile هنا .

تتضمن المجموعة الأولى من الأطر تلك التي كانت موجودة بالفعل في وقت إصدار
MicroProfile 1.0:
TomEE (الإصدار الأول تم إصداره في أبريل 2012) و
Hammock (فبراير 2014) و
Thorntail (التي كانت تسمى سابقًا
WildFly Swarm ، January 2016) و
KumuluzEE (أبريل 2016). في أغلب الأحيان ، تم تحقيق الامتثال لمجموعة جديدة من المواصفات من خلال إزالة كل ما كان لا لزوم له من المنتج الحالي. أمثلة الاستخدام موجودة في الوحدات النمطية
helloworld-web-microprofile-tomee و
helloworld-web-microprofile-hammock و
helloworld-web-microprofile-thorntail و
helloworld-web-microprofile-kumuluzee .

تتضمن المجموعة الثانية من الإطارات الأطر التي ظهرت بعد الإصدار الأول من
MicroProfile :
Payara Micro (يوليو 2017) ،
Open Liberty (سبتمبر 2017) و
Helidon (سبتمبر 2018). بالنسبة إلى هذه الأطر ، أصبح العكس ممكنًا - منذ بداية التنفيذ ، على سبيل المثال ،
تم تطوير
Helidon خصيصًا من أجل التوافق مع
MicroProfile ، وبالتالي لم يكن لديه أي شيء غير ضروري في تكوينه. يمكن رؤية أمثلة عن تطبيقات البناء في الوحدات النمطية
helloworld-web-microprofile-payara و
helloworld-web-microprofile-openliberty و
helloworld-web-microprofile-helidon .
حاويات Servlet وخوادم التطبيقات
يتم تنفيذ تطبيقات الويب في برامج متخصصة تنفذ المواصفات ذات الصلة (على سبيل المثال ،
Servlet API ). فيما يلي حاويات servlet الأكثر شعبية وخوادم التطبيقات في الوقت الحالي. تؤخذ نسبة شعبية أيضا من نتائج
الدراسة (السؤال 20).
يُظهر الجدول الزمني عمر كل منتج من منتجات البرامج في الجدول. يمكنك رؤية تسلسل ظهورها ووقت إصدار أحدث الإصدارات.

يتم استخدام حاويات أكثر وأكثر عند نشر التطبيقات ونشرها ، وبالتالي فإن استخدام خوادم التطبيقات أصبح أقل أهمية.
استخدام لغات أخرى غير Java في التطبيقات
في الآونة الأخيرة ، كان هناك ميل لإنشاء تطبيقات هجينة ، باعتبارها واحدة من المكونات التي توجد بها كود
جافا . وفقًا للاتجاه السائد في
Java Magazine ، والذي كان موضوعه الرئيسي
لغة برمجة
Java ، في عمود رئيس التحرير في عدد
يناير / فبراير 2017 ، تم إعلان "The Polyglot Future" وإدراج
JavaScript في منطقة الاهتمام.
في
الدراسة التي سبق ذكرها أعلاه
، في السؤال 16 ، كانوا مهتمين بما هي اللغات غير
JVM المستخدمة في تطبيقات
JVM . القائد (57 ٪) كان
جافا سكريبت ، وتستخدم في الواجهة الأمامية. بالنظر إلى حقيقة أن بعض تطبيقات الويب لا تحتوي على
واجهة المستخدم الرسومية على الإطلاق (الخدمات ، والخدمات الميكروية ، والخدمات) ، يمكننا أن نقول بثقة أن استخدام أطر
جافا سكريبت للواجهة الرسومية في تطبيقات
Java واسع الانتشار.

مثال على تطبيق جافا النموذجي اليوم

لإظهار تطبيق ويب
Java نموذجي بواجهة رسومية ، تمت كتابة
برنامج بمضاهاة الوظائف الأساسية لـ Twitter : المصادقة ، إدارة الحساب (إنشاء ، تحرير ، حذف ، البحث عن طريق سلسلة فرعية) ، الصفحة الرئيسية (خصائص الحساب ، تغذية الرسائل) ، الإنشاء تغريدات ، الاشتراك / إلغاء الاشتراك.
تتم كتابة الواجهة الخلفية باستخدام
Spring Boot ، بينما يتم كتابة الواجهة الأمامية باستخدام إطار
جافا سكريبت Angular الشهير. في جزء
Java من التطبيق ، يتم تمثيل مكونات عائلة
Spring كحد أقصى:
Spring MVC ،
Spring Boot ،
Spring Security ،
Spring Spring ،
Spring Spring Admin .
يتم تقديم الواجهة الخلفية
REST API باستخدام
Swagger .
JUnit ,
Spring Test ,
Mockito ,
TestContainers (unit-
Java -)
Jasmine Protractor (unit- end-to-end-
JavaScript Angular ).
(
Spring Boot Angular )
,
TechTrain 2019 .
النتائج
Java , -, . , , , , .
, ,
GitHub :
,
.
JUG Ru GroupSpring :
- «Spring the Ripper», ( JPoint 2014 : , )
- «Spring Data? , !», ( Joker 2014 : , )
- «Spring Puzzlers: Spring», ( Joker 2014 : )
- «Spring Puzzlers — », ( JPoint 2015 : , )
- «The Bootiful Application», Josh Long ( Joker 2015 : , )
- « Spring Boot Starter», ( JPoint 2016 : , )
- «Spring – », ( JPoint 2017 : , )
- « Spring Test», ( JPoint 2017 : , )
- «Boot yourself, Spring is coming», ( Joker 2017 : )
- « Spring 5/Reactor», ( Joker 2017 : )
- «Spring Framework 5.0 on JDK 8 & 9», Juergen Hoeller ( JPoint 2018 : , )
- «Spring Framework 5: feature highlights and hidden gems», Juergen Hoeller ( JPoint 2018 : , )
- «Camel microservices with Spring Boot and Kubernetes», Claus Ibsen ( JPoint 2018 : , )
- «Spring Boot Xtend: c », ( JPoint 2018 : , )
- «Boot yourself, Spring is coming», ( JPoint 2018 : 1 2 , )
- «Spring Boot 2: release notes», ( Joker 2018 : , )
- «The Proxy fairy and the magic of Spring», Victor Rentea ( JPoint 2019 : , )
- « Spring Boot, : AOT- Spring-», ( JPoint 2019 : , )
- «Reactive reactive, », ( JPoint 2019 : , )
- « Spring Boot- Java 8 11: ?», ( JPoint 2019 : , )
Play :
- «50 Play!», ( Joker 2015 : )
Vaadin :
- « — web UI Java desktop-», ( JPoint 2018 : , )
- « Vaadin Flow», ( JPoint 2019 : , )
Vert.x :
- «Vert.x: », ( Joker 2015 : )
- «Vert.x: », ( Joker 2016 : , )
- « Vert.x », ( JPoint 2018 : , )
Micronaut :
- «Micronaut vs Spring Boot, ?», ( Joker 2018 : , )
MicroProfile :
- «Microprofile.io: », ( Joker 2018 : , )
Java JavaScript :
- «JavaScript in the nterprise», Markus Eisele ( Joker 2014 : , )
- «Java(Script) on JVM», ( Joker 2015 : )
UPD :
Quarkus (
helloworld-web-quarkus )
ActFramework (
helloworld-web-actframework ), .. 39.
25-26 2019 - Java- Joker 2019 , 1 .
8-9 2019 JavaScript- HolyJS 2019 Moscow , 1 .