एक नई परियोजना के लिए JAX-RS कार्यान्वयन का चयन करना


35

मैं एक नया जावा प्रोजेक्ट शुरू कर रहा हूं जिसके लिए एक RESTful API की आवश्यकता होगी। यह मोबाइल ग्राहकों की सेवा करने वाला एक सास व्यावसायिक अनुप्रयोग होगा।

मैंने जावा ईई 6 के साथ एक परियोजना विकसित की है, लेकिन मैं पारिस्थितिकी तंत्र से बहुत परिचित नहीं हूं, क्योंकि मेरा अधिकांश अनुभव Microsoft प्लेटफॉर्म पर है।

जो वर्णित एक नई परियोजना के लिए JAX-RS कार्यान्वयन के लिए एक समझदार विकल्प होगा?

विकिपीडिया की सूची को देखते हुए , मुख्य दावेदार जर्सी, अपाचे सीएक्सएफ, रेस्टेसी और रेस्टलेट प्रतीत होते हैं। लेकिन 2008 के विकिपीडिया पर उद्धृत JAX-RS कार्यान्वयन की तुलना 2008 से है।

उनके संबंधित होमपेज से मेरा पहला प्रभाव यह है कि:

  • सीएक्सएफ का उद्देश्य एक बहुत व्यापक समाधान है (मुझे माइक्रोसॉफ्ट स्पेस में डब्ल्यूसीएफ की याद दिलाता है), जो मुझे लगता है कि यह समझने के लिए और अधिक जटिल हो सकता है कि मुझे क्या चाहिए;
  • जर्सी संदर्भ कार्यान्वयन है और यह एक अच्छा विकल्प हो सकता है, लेकिन यह सूर्य से विरासत है और मुझे यकीन नहीं है कि ओरेकल इसका इलाज कैसे कर रहा है (घोषणा पृष्ठ काम नहीं करता है और अंतिम प्रतिबद्ध नोटिस 4 महीने पहले से है);
  • Resteasy JBoss से है और शायद एक ठोस विकल्प है, हालांकि मैं सीखने की अवस्था के बारे में निश्चित नहीं हूं;
  • रेस्टलेट लोकप्रिय प्रतीत होता है, लेकिन इसमें बहुत अधिक इतिहास है, मुझे यकीन नहीं है कि यह जावा ईई 6 दुनिया में कितना अप-टू-डेट है या यदि यह एक भारी जे 2 ईई मानसिकता (एक्सएमएल कॉन्फ़िगरेशन के बहुत सारे) को ले जाता है।

इनमें से प्रत्येक विकल्प की योग्यता क्या होगी? सीखने की अवस्था के बारे में क्या? सुविधा का समर्थन? टूलींग (जैसे NetBeans या ग्रहण जादूगर)? डिबगिंग में आसानी और तैनाती के बारे में क्या? क्या इनमें से कोई भी परियोजना दूसरों की तुलना में अधिक अद्यतित है? वे कितने स्थिर हैं?


1
मैं शीर्षक संपादित की सराहना करता हूं, लेकिन मैं वास्तव में नहीं पूछ रहा हूं कि क्या JAX-RS एक मोबाइल परियोजना के लिए एक अच्छा फिट है; यह एक और सवाल होगा। मैं यह पता लगाने की कोशिश कर रहा हूं कि JAX-RS के कार्यान्वयन की सिफारिश किससे की जाएगी।
फर्नांडो कोर्रेया

जवाबों:


22

मैं एक समग्र समाधान के लिए Dropwizard को प्यार करने के लिए बड़ा हुआ हूं

कुछ विशाल एप्लिकेशन कंटेनर दृष्टिकोण के साथ जाने के बजाय, ड्रॉपवॉयर एक हल्के समाधान की वकालत करता है जो बहुत तेजी से विकास चक्र प्रदान करता है। अनिवार्य रूप से, यह निम्नलिखित प्रसिद्ध रूपरेखाओं के लिए गोंद प्रदान करता है:

  • जेट्टी (HTTP)
  • जर्सी (JAX-RS)
  • जैक्सन (JSON या XML)
  • अमरूद (जेडीके पुस्तकालयों के लिए उत्कृष्ट परिवर्धन)
  • मेट्रिक्स (वास्तविक समय अनुप्रयोग निगरानी)
  • सीतनिद्रा में होना (इनपुट सत्यापन)
  • OAuth (प्रतिष्ठित प्रमाणीकरण)

उपर्युक्त का संयोजन, कार्यात्मक परीक्षण के लिए एक ठोस दृष्टिकोण के साथ मिलकर, आपकी सेवा को प्राप्त करने और जल्दी से चलाने के लिए एक पूर्ण समाधान देता है।

हाँ? और JAX-RS प्रश्न मैंने पूछा ...

आप देखेंगे कि उनकी पसंद जर्सी थी, संदर्भ JAX-RS कार्यान्वयन। RESTEasy पुरुष होने के नाते मुझे लगा कि यह एक समस्या होगी, लेकिन शून्य सीखने की अवस्था थी। दो बड़े पैमाने पर विनिमेय हैं। हालांकि, मैं कहूंगा कि जर्सी क्लाइंट ने परीक्षण के निर्माण के लिए एक धाराप्रवाह इंटरफ़ेस की पेशकश की। एक उदाहरण होगा ...

 @Override
  protected void setUpResources() {
    addResource(new HelloWorldResource("Hello, %s!","Stranger"));

    setUpAuthenticator();
  }

  @Test
  public void simpleResourceTest() throws Exception {

    Saying expectedSaying = new Saying(1,"Hello, Stranger!");

    Saying actualSaying = client()
      .resource("/hello-world")
      .get(Saying.class);

    assertEquals("GET hello-world returns a default",expectedSaying.getContent(),actualSaying.getContent());

}

2
मेरे ध्यान में Dropwizard लाने के लिए बहुत बहुत धन्यवाद। मैं इसके बारे में नहीं जानता था और यह मेरी जरूरतों को बहुत अच्छी तरह से फिट करता है। यह अच्छी तरह से सोचा, व्यावहारिक और डाउन-टू-अर्थ दिखता है और संभवतः मुझे जावा ईई प्लेटफॉर्म के अपने सतही ज्ञान देने की तुलना में बहुत बेहतर समाधान बनाने में मदद कर सकता है। और एक सफल कंपनी से आ रही है जैसे कि यामर जो कॉर्पोरेट बाजार की सेवा करता है वह निश्चित रूप से एक प्लस है। फिर से, बहुत धन्यवाद।
फर्नांडो कोर्रेया

1
कोई बात नहीं। मैंने अपनी एक परियोजना के बारे में ब्लॉग किया है, जो ड्रॉपवॉर्म की कई विशेषताओं को प्रदर्शित करती है। यह एमआईटी लाइसेंस के तहत है ताकि आप की जरूरत के रूप में उपयोग करने के लिए स्वतंत्र महसूस हो रहा है: gary-rowe.com/agilestack/2012/06/06/…
गैरी रोवे

वह मदद करेंगे। बहुत सराहना की।
फर्नांडो कोर्रेया

1
मैं जैक्सन, अमरूद, वैलिडेटर और ऑउथ का उपयोग करने के लिए पहले से ही झुकाव था, इसलिए यह एक नो-ब्रेनर की तरह दिखता है ... धन्यवाद।
फीलो

चेतावनी: जर्सी 2.0 1.0 से काफी खराब है। यह लापता कार्यक्षमता है जो 1.0 में मौजूद थी, यह आप पर एक विशिष्ट DI फ्रेमवर्क को मजबूर करता है, और सामुदायिक समर्थन इससे कहीं अधिक बदतर है जितना कि इसका उपयोग किया जाता है।
गिल्ली

6

आप इस प्रश्न पर एक नज़र डाल सकते हैं , जो अन्य डेवलपर्स के कुछ अनुभवों पर चर्चा करता है।

मैं व्यक्तिगत रूप से जर्सी की सिफारिश कर सकता हूं। इसका उपयोग करना बहुत आसान है, और इसका संदर्भ कार्यान्वयन होने के कारण इसका अच्छा पालन हो रहा है। इसका मतलब यह भी है कि इसे अगले कुछ समय तक बनाए रखा जाएगा और इसका समर्थन किया जाएगा।


1
आपके मददगार जवाब के लिए और उस संबंधित प्रश्न के लिए धन्यवाद - अजीब तरह से, यह खोज में नहीं दिखा । यह जवाब 4 साल पहले से है, हालांकि, मैं आपकी अप-टू-डेट सिफारिश की सराहना करता हूं।
फर्नांडो कोर्रेया
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.