كل عام في الماضي ، ظهرت المزيد من أطر Java. مثل JavaScript ، يعتقد الجميع أنهم يعرفون كيف يجب أن تكون وظائف الإطار الجيد. حتى جدتي القديمة تستخدم الآن إطارًا لم أسمع به من قبل وربما لن أستخدمه أبدًا. سوق الإطار المتضخم مشبع بالإطار المتضخم الذي يمكن أن يفعل أي شيء تقريبًا ، ولكن كيفية الحكم عليه؟ تهدف هذه المقالة إلى توفير أفضل أطر عمل جافا المتاحة في الوقت الحاضر. أنا فقط أقدم منتجات خفيفة الوزن ، وتخطي تلك الأطر المفرطة المصممة. في الوقت نفسه ، أريد فقط أن يكونوا مستقرين ونضجين ، مما يوفر ميزات بسيطة وخفيفة الوزن. لقد كسرت هذه القاعدة فقط عند تقديم أطر العمل ، يتم تقديم السبب لاحقًا. الذي يعتمد إطار Java Restful لاستخدامه في المشاريع المستقبلية تمامًا على احتياجاتك الحالية. لتسهيل اختياراتك ، سأدرج أبرز ميزات الإطار ، على أمل أن يوفر لك ذلك بعض الوقت.
Dropwizard
وقت الميلاد: 2011
التقييم: 4.5/5
يوفر Dropwizard مكتبة Java مستقرة وناضجة وتغلفها في حزمة بسيطة وخفيفة الوزن.
Dropwizard في مكان ما بين الإطار والمكتبة. يوفر جميع الاحتياجات اللازمة لتطوير تطبيق ويب. بفضل النموذج المدمج ، يمكن أن يظل التطبيق صغيراً وذوًا ، مما يقلل من وقت التنمية والصيانة والحد من العبء.
يستخدم Dropwizard مكتبة HTTP Nergent Jetty لتضمين مشروعك دون الحاجة إلى خادم خارجي. تحتوي جميع مشاريع Dropwizard على طريقة رئيسية لإدارة خادم HTTP المدمج.
الرابط <br /> الموقع الرسمي github وثائق
ميزة
بناء المشروع السريع وبدء التشغيل
وحدات
لا يصدق بسرعة (على الأقل بناءً على النتائج التي يقاسها المقياس المدمج)
رصيف HTTP ، Jersey for REST ، وجاكسون من أجل JSON
كما يدعم المكتبات الأخرى ، مثل الشارب ، والأسود ، و jdbi ، ومقحة السبات ، والجوافة ، ...
دعم المراقبة مع المقاييس
الطريقة الرئيسية تبدأ خادم رصيف ، والذي يمكن تصحيحه وصيانته بسهولة
قوة المجتمع القوية
عيب
وثائق Dropwizard هي المصدر الرئيسي للمعرفة ، لكنها ليست ممتازة. قد تحتاج إلى البحث واكتشاف المستندات لمكتبات الطرف الثالث.
لسبب ما ، يتم التعامل مع الخطأ كنص عادي ، إذا كنت تريد أن تكون نتيجة الاستجابة دائمًا JSON ، فقد يكون هذا مشكلة
تأكد من استخدام أحدث Dropwizard ، بعض الإصدارات القديمة تستخدم مكتبات الطرف الثالث المهجورة. وكان من الصعب ترقية Dropwizzard المبكر
مثال
حزمة com.example.helloworld ؛ استيراد io.dropwizard.application ؛ استيراد io.dropwizard.setup.bootstrap ؛ استيراد io.dropwizard.setup.environment ؛ import com.example.helloworld.resources.helloworldResource ؛ import com.example.helloworld.health.templatecheck ؛ الطبقة العامة HelloWorldApplication يمتد التطبيق <helloWorldConfiguration> {public static void main (string [] args) resword {new HelloWorLdApplication (). Run (args) ؛ } Override public string getName () {return "Hello-World" ؛ } override public void تهيئة (bootstrap <HelloWorLdConfiguration> bootstrap) {// لا شيء يجب القيام به بعد} Override public void Run (HelloWorLdConfiguration ، بيئة البيئة) {// لا شيء يجب القيام به بعد}}}} ملاحظة <br /> أنا شخصياً لا أرغب في التوصية بهذا الإطار للمشاريع الكبيرة. ولكن إذا كنت ترغب في تجربتها ، فلن تشعر بخيبة أمل. بشكل رئيسي ، يستخدم هذا الإطار أفضل مكونات الويب الحديثة على شبكة الإنترنت ويجمع في إطار بسيط وسهل الاستخدام.
لسوء الحظ هذا يجلب أيضا مشاكلها. يمكن أن يؤدي الجمع بين هذه المكتبات إلى مشاكل غير متوقعة. هذا هو السبب في أنني فقدت 0.5 نجمة لذلك ، دون تصنيفها كنتيجة كاملة من 5 نجوم.
جيرسي
وقت الميلاد: 2012 (جيرسي 2.x)
التقييم: 5/5
إطار Jersey Restflork هو إطار مصادر مفتوح المصدر يقوم بتنفيذ مواصفات JAX-RS (JSR 311 & JSR 339). يمتد تطبيق JAX-RS ويوفر المزيد من الميزات والأدوات التي يمكن أن تبسيط خدمة RESTful وتطوير العميل. على الرغم من كونه جديدًا نسبيًا على Xinyi ، إلا أنه بالفعل خدمة مريحة على مستوى المنتج وإطار عمل العميل.
الرابط <br /> الموقع الرسمي github وثائق
ميزة
وثائق وأمثلة ممتازة
سريع
توجيه سهل للغاية
تكامل جونيت السلس
شخصيا ، عند تطوير خدمة راحة ، يكون تطبيق Jax-RS أفضل من أطر عمل MVC.
يمكن دمجها في مكتبات/أطر أخرى (Grizzly ، Netty). قد يكون هذا أيضًا السبب وراء استخدام العديد من المنتجات.
دعم الارتباط غير المتزامن
لا تحب حاويات servlet؟ يمكنك استخدامها عند استخدام جيرسي.
WADL ، XML/JSON دعم
شملت في الأسماك الزجاجية
عيب
يستخدم Jersey 2.0+ بعض تطبيق حقن التبعية المعقدة
ربما ليس شيئًا سيئًا. Jersey 1.x ينفذ باستخدام Jax-RS الأقدم
يدعم عدد كبير من مكتبات الطرف الثالث Jersey 1.x فقط ، وليس متاحًا في Jersey 2.x
مثال
حزمة org.glassfish.jersey.examples.helloworld ؛ استيراد javax.ws.rs.get ؛ استيراد javax.ws.rs.path ؛ استيراد javax.ws.rs.produces ؛ path ("HelloWorld") الطبقة العامة HelloWorLdResource {Public Static Final String Cliched_Message = "Hello World!" ؛ @GET@Produces ("text/plain") السلسلة العامة gethello () {return cliched_message ؛ }} التعليقات التوضيحية
جيرسي هو خياري ، 5 نجوم.
إطار الويب النينجا
وقت الميلاد: 2012
التقييم: 3.5/5
Ninja Web Framework هو إطار عمل Java الكامل. مستقر ، سريع ، موثوق ، درجة المنتج.
إنه يوفر كل ما يطور واختبارات ونشر وصيانة تطبيقات الويب المريحة (Servlets ، Guice ، JPA ، Flyway Migrations ، Maven ، إلخ).
تمامًا مثل Dropwizzard ، يعد Ninja Web Framework مكدس برامج متكامل. لست مضطرًا إلى إنشاء نموذج Maven الخاص بك ، فقط استخدم نموذج Maven لإنشاء مشروع جديد واستيراده إلى IDE وبدء الترميز.
الرابط <br /> الموقع الرسمي github وثائق
ميزة
سريع
بناء المشروع السريع وبدء التشغيل
وحدات
XML ، HTML ، JSON Rendering
يتم دعم المكتبات الأخرى أيضًا (مثل Guice و Logback و Goaava وما إلى ذلك)
استمرار البيانات الجيد والتخزين المؤقت
لا تحب حاوية servlet؟ يمكنك اختيار الحاوية التي تحبها
إذا كنت لا تحب الحاويات على الإطلاق ، فيمكنك استخدام الوضع المستقل واستخدام الرصيف كجرة تنفيذ الذات
عيب
وبالمثل ، مثل Dropwizzard ، فإن الوثائق لديها ولكنها ليست جيدة بما فيه الكفاية. استغرق الأمر مني وقتًا طويلاً للتعرف عليه. يعتمد هذا الإطار أيضًا على العديد من المكتبات الأخرى ، وأحيانًا يكون من المقلق الحصول على المعلومات المطلوبة.
ليس مشهورًا جدًا ، مجتمع صغير. هناك شائعات بأن هذا الإطار تم إنشاؤه بواسطة Play 2.x المستخدمين الذين تحولوا إلى Scala
مثال
وحدات التحكم في الحزمة ؛ الفئة العامة ApplicationController {public result index () {person person = new person () ؛ person.name = "John Johnson" ؛ Return Results.Json (). Render (person) ؛ }}لاحظ <br /> يبدو جيدًا ، لكنني سأرميها جانباً قبل أن تنضج.
إطار اللعب
وقت الميلاد: 2011
التقييم: 4/5
استخدم إطار العمل لإنشاء وإنشاء ونشر تطبيقات الويب باستخدام دعم Java & Scala. يستخدم Akka ، استنادًا إلى بنية خفيفة الوزن عديمة الجنسية. يجب استخدامه للتطبيقات ذات وحدة المعالجة المركزية المنخفضة واستهلاك الذاكرة على نطاق واسع.
الرابط <br /> الموقع الرسمي github وثائق
ميزة
من السهل التطوير
سريع ، ولكن ليس بالسرعة مثل الأطر الأخرى
بناءً على Netty ، فإنه يدعم I/O غير المحظور. إنه ممتاز عند التعامل مع المكالمات عن بُعد بالتوازي.
المجتمع كبير
بناء المشروع السريع وبدء التشغيل
وحدات
MVC
REST ، JSON/XML ، مآخذ الويب ، I/O غير المحظورة
ما عليك سوى تحديث المتصفح لمشاهدة أحدث التغييرات
دعم ASYNC
هناك كتب منشورة
عيب
الإصدار 2.0 هو إطار Java الأكثر إثارة للجدل. التبديل إلى Scala جعل بعض مطوري Java تفوق.
غير متوافق للخلف. لعب 2.x إعادة كتابة
تُعرف بالوزن الخفيف ، لكنه منتفخ قليلاً
أداة بناء SBT. المعروف باسم Maven Killer ، ولكن لا يتفوق أبدًا من أجل استبداله. من الصعب التعلم والتكوين
غير الخدمة
كسر التغييرات عبر الإصدارات
مثال
وحدات التحكم في الحزمة استيراد play.api._import play.api.mvc._ تطبيق الفئة يمتد وحدة التحكم {def hello (name: string) = Action {OK ("Hello" + Name + "!)}}}ملاحظة <br /> بغض النظر عن مقدار شكوى ، ما زلت أحب وأختار هذا الإطار أولاً. لسوء الحظ ، لا يمكنني إلا أن أعطيها 4 نجوم. أعتقد اعتقادا راسخا أن الإطار القائم على JAX-RS أكثر ملاءمة لخدمات الويب المريحة.
RestExpress
وقت الميلاد: 2009
التقييم: 3/5
RestExpress عبارة عن غلاف مكدس HTTP Netty HTTP Lighty Lightweight Lightweight لتسهيل إنشاء خدمات Java Restful.
الهدف من RestExpress هو دعم أفضل الممارسات المريحة.
وصلة
جيثب
ميزة
microframework الحقيقية
أداء أعلى ، سريع وموثوق
XML/JSON
واحدة من أقدم وأكثر الأطر المريحة
عيب
لا يوجد وثائق
تقريبا لا دعم
مجتمع صغير جدا
مثال
حزمة com.example ؛ استيراد java.io.ioException ؛ استيراد io.netty.handler.codec.http.httpmethod ؛ استيراد org.restexpress.restexpress ؛ الفئة العامة الرئيسية {public static restexpress starterver (string [] args) يلقي ioException {restExpress server = new restExpress () ؛ MyResource r = new MyResource () ؛ server.uri ("/myapp/myresource" ، r) .method (httpmethod.get) .Noserialization () ؛ server.uri ("/myapp/myresource" ، r) .method (httpmethod.post) ؛ server.bind (8080) ؛ خادم إرجاع ؛ } static void main (string [] args) يلقي الاستثناء {restExpress server = starterver (args) ؛ System.out.println ("اضغط على إدخال لإيقافه ...") ؛ System.in.Read () ؛ server.shutdown () ؛ }}ملاحظة <br /> على الرغم من أن هذا الإطار سريع للغاية ، إلا أنني لا أريد أن أوصي به أيضًا. إن الافتقار إلى الوثائق وعدم الدعم يجعلها إطارًا متخلفًا. أعطها 3 نجوم للسرعة.
استراحة
وقت الميلاد: 2005
التقييم: 4.5/5
تساعد Restlet مبرمجي Java على بناء واجهات برمجة تطبيقات ويب سريعة على نطاق واسع تتوافق مع أنماط الهندسة المعمارية المريحة.
يوفر أنظمة توجيه وتصفية قوية. تلبي واجهة برمجة تطبيقات العميل/الخادم Java الموحد جميع المنصات الرئيسية (Java SE/EE ، Google Appengine ، OSGI ، GWT ، Android) ، وتوفر ملحقات لا حصر لها لتلبية احتياجات المبرمجين.
بقدر ما أستطيع أن أقول ، فهو أول إطار ويب جافا. تستخدمه العديد من الشركات ، لكن ربما لم تسمع به من قبل ، كما لو لم يعد مرئيًا.
الرابط <br /> الموقع الرسمي github وثائق
ميزة
قوي
إطار على مستوى المؤسسة
متعدد المنصات Java SE ، Java EE ، Google Web Toolkit ، Google Appengine ، Android ، OSGI Beadies
دعم Jax-RS (تمامًا مثل جيرسي)
الدعم المريح الأكثر تقدما
وحدات
دعم المكتبات الأخرى
كان التنمية نشطة
ربط عنوان URL الذكي ، توجيه URI كامل الميزة
هناك كتب ذات صلة
عيب
منحنى التعلم شديد الانحدار
مجتمع مغلق ، مفتوح حتى على stackoverflow
لم يعد شعبية ، أكثر بسبب إطار اللعب والقميص
مثال
الفئة العامة part03 يمتد ServerResource {public static void main (string [] args) يلقي الاستثناء {// إنشاء خادم http والاستماع إلى المنفذ 8182 خادم جديد (protocol.http ، 8182 ، part03. class) .start () ؛ } get ("txt") public string tostring () {return "hello ، world" ؛ }}ملاحظة <br /> على الرغم من أن هذا الإطار كان شائعًا طوال الوقت ، لا يمكنني إعطائه 5 نجوم لإنجازه الحالي.
RESTX
وقت الميلاد: 2013
التقييم: 3.5/5
RESTX عبارة عن إطار Java REST خفيف الوزن ، وحدني ، متعدد الميزات ، فائق المصدر.
الرابط <br /> الموقع الرسمي github وثائق
ميزة
سريع وخفيف الوزن
سهل البناء
microframework الحقيقية
وحدات
دعم المكتبات الأخرى
دعم mongodb
عيب
وثائق غير ودية مربكة. أتوقع توثيق أفضل لهذا النوع من الإطار
صغار جدا
غير متزامن غير متزامن غير مدعوم بعد
مثال
get ("/message/{id}") رسالة عامة sealhhello (معرف السلسلة ، // park param string who // query param) {return new message (). } post ("/message/{id}") رسالة عامة sealhhello (معرف السلسلة ، // param param message msg // body param) {return msg.setMessage (string.format ("٪ s @ ٪ s" ، msg.getMessage () ، dateTime.now (). toString ("hh: mm: ss"))) ؛ }لاحظ <br /> لأكون صادقًا ، لم أقضي الكثير من الوقت في هذا الإطار. لا يستحق إنفاق الكثير من الجهد على إطار آخر ، أعني ، أن سوق Java Framework أصبح أكثر وأكثر تجزئة ، تمامًا مثل سوق JavaScript ، يجب إيقاف هذا الاتجاه.
إطار شرارة
وقت الميلاد: 2011
التقييم: 3.5/5
لا تكون مرتبكًا مع شرارة إطار البيانات الكبيرة من Apache ، فإن إطار Spark هنا هو إطار عمل خفيف الوزن على شبكة الإنترنت للتطوير السريع (يستخدم 50 ٪ من مستخدمي Spark Spark لإنشاء واجهات برمجة التطبيقات REST). إنها مستوحاة من إطار روبي سيناترا.
إنه يحتوي على نواة أقل من 1M وتوفر جميع الميزات الأساسية لبناء تطبيقات الويب المريحة أو التقليدية.
الرابط <br /> الموقع الرسمي github وثائق
ميزة
سريع وخفيف الوزن
نموذج أولي سريع ممتاز
سهل البناء
يستخدم في كثير من الأحيان مع AngularJS
microframework الحقيقية
باستخدام رصيف
يمكن استخدامها في الحاويات أو تشغيلها بشكل مستقل
عيب
يمكن أن تكون الوثائق أفضل ، فهي ليست مناسبة للمبتدئين
غير مناسب للمشاريع الكبيرة
المجتمع صغير
مثال
استيراد Spark.Spark.*؛ الطبقة العامة HelloWorld {public static void main (string [] args) {get ("/hello" ، (req ، res) -> "Hello World") ؛ }}ملاحظة <br /> هذا الإطار مناسب للتطوير الأولي. يستخدم بشكل أساسي كمشاريع صغيرة أو نماذج أولية.