2011-01-15 18 views
12

मैं एक जावा एसई डेवलपर हूं लेकिन मेरे पास समृद्ध वेब-पृष्ठभूमि (PHP, पर्ल/सीजीआई और इसी तरह) है और अब मैं नई परियोजना शुरू कर रहा हूं। इसमें वेब इंटरफेस, स्पेगेटी बिजनेस लॉजिक, रिलेशनल डेटाबेस को स्टोरेज और अन्य सेवाओं के कनेक्शन के रूप में होगा। मैं इसे खरोंच से करता हूँ।जावा ईई 6 और विकल्प

मेरे सहयोगियों ने मुझे वसंत, वसंत सुरक्षा और स्ट्रेट्स का उपयोग करने के लिए कहा। मैं जावा ईई 6 spec पर संक्षेप में देखता हूं और पाया कि इसमें एंटरप्राइज़ एप्लिकेशन के लगभग सभी पहलुओं को शामिल किया गया है। मैंने अपने सहयोगियों से पूछा कि उन्हें वसंत और स्ट्रेट की आवश्यकता क्यों है, लेकिन ऐसा लगता है कि वे तकनीकों का उपयोग केवल इसलिए करते हैं क्योंकि वे उनसे परिचित हैं और क्लासिक जावा ईई 6 स्टैक से परिचित नहीं हैं।

तो, मेरा सवाल है: जावा ईई 6 के बारे में क्या बुरा है? यदि जेएनडीआई लुकअप हैं तो मुझे वसंत की आवश्यकता क्यों है? यूनिट-टेस्ट के लिए नकली InitialContext बनाने में एक या दो दिन लगेंगे। और यह सब कुछ है: मैं वसंत जैसे बाहरी उपकरणों से बाहर खड़ा हूं। Servlets spec में निर्मित सुरक्षा होने पर मुझे वसंत-सुरक्षा की आवश्यकता क्यों है? मैं web.xml का उपयोग कर किसी भी सर्वलेट को किसी भी अनुरोध को मैप कर सकता हूं, कोई struts.xml की आवश्यकता नहीं है। मैं struts interceptors के बजाय servlet-filter का उपयोग कर सकते हैं। आरएमआई है, इसलिए मुझे वसंत-रिमोट की आवश्यकता नहीं है। और इतने पर ..

जावा ईई 6 होने पर मुझे अपने सभी फैंसी सामानों के साथ अपने आप को परेशान क्यों करना चाहिए?

मैं वास्तव में स्थिति खोजना चाहता हूं जब जावा ईई 6 पर्याप्त नहीं है। क्या आपके पास कोई है?

धन्यवाद!

+3

तब से पुरानी जे 2 ईई और आधुनिक जावा ईई 6 के बीच काफी अंतर है। आप किसके बारे में बात कर रहे हैं? फिर, जे 2 ईई के शीर्ष पर स्प्रिंग और स्ट्रूट्स बहुत अच्छे ऐड-ऑन थे। लेकिन अब, जावा ईई 6 लगभग पहले से ही बॉक्स के बाहर प्रदान करता है। आपके सहयोगी अभी भी प्राचीन युग में लटक रहे हैं। – BalusC

+0

क्षमा करें) जावा ईई 6. मैं जावा 1 का उपयोग नहीं कर रहा हूं।2))) –

+0

कृपया अपने प्रश्न को फिर से संशोधित करें/फिर से करें। आप इसे पुनर्विचार भी कर सकते हैं :) इसी तरह का प्रश्न [यहां] (http://stackoverflow.com/questions/2084169/choosing-a-java-web-framework-now) और [यहां] (http://stackoverflow.com/प्रश्न/1960280/क्या सीखने के लिए बनाने में जावा जावा-वेब-अनुप्रयोगों--ee-6)। – BalusC

उत्तर

1

जावा ईई के लिए वसंत आवश्यक नहीं है। वसंत सिर्फ जटिल जावा ईई घटकों का उपयोग करने में आसान बनाता है।

+0

मुझे पता है) लेकिन मैं वसंत डी के बजाय जेएनडीआई का उपयोग कर सकता हूं। तो, मुझे वसंत की आवश्यकता क्यों है? –

+2

जेएनडीआई स्प्रिंग डी के अनुरूप नहीं है। सीडीआई है। – BalusC

0

एक मॉडल-व्यू-नियंत्रक वसंत करें जो जावा ईई क्लीनर और अधिक व्यवस्थित बनाता है। यह आपके मॉडल, विचार और नियंत्रक को अलग करने के लिए संरचनात्मक रूप से अधिक सही है।

मैं आपसे सहमत हूं। यदि यह एक साधारण वेबसाइट है तो मुझे लगता है कि आप जावा ईई के साथ सबकुछ कर सकते हैं। हालांकि, कल्पना करें कि बहुत सारे कोड हैं जो फ़ॉर्म इनपुट और कई मॉडलों को संभालते हैं। प्रत्येक नियंत्रक के पास एक दृश्य हो सकता है। आप एक सर्वलेट बना सकते हैं और फिर सही जेएसपी पेज पर अग्रेषित कर सकते हैं, या आप वसंत का उपयोग कर सकते हैं क्योंकि यह पहले से ही यह सब करता है।

निर्णय यह है कि आपको वसंत का उपयोग करने की कितनी आवश्यकता है। एक अच्छा ढांचा वह है जो आपको चुनने और चुनने देता है कि किन हिस्सों का उपयोग करना है। मुझे लगता है कि वसंत यह अच्छी तरह से करता है क्योंकि आप केवल एमवीसी मॉडल का उपयोग कर सकते हैं या आगे बढ़ सकते हैं और इसके साथ और अधिक कर सकते हैं।

अंतिम बात, वसंत में निर्भरता इंजेक्शन है जो कॉन्फ़िगरेशन को अधिक आसान बनाता है।

+0

धन्यवाद। मैं अपने स्वयं के एमवीसी पैटर्न को कार्यान्वित कर सकता हूं: प्रत्येक सर्वलेट एक नियंत्रक है और जेएसपी पृष्ठ सिर्फ एक दृश्य है। मैं जेएसपी के अंदर किसी भी तर्क का उपयोग नहीं करता (क्योंकि यह परीक्षण करना असंभव है)। मैं वसंत के लिए जेएनडीआई (सेवा लुकअप) का उपयोग कर सकता हूं। यह निर्भरता इंजेक्शन जितना अच्छा है, है ना? –

+0

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

+0

एक अच्छे एमवीसी डिजाइन में आपके पास केवल एक सर्वलेट होगा। – BalusC

13

लोग वसंत का उपयोग क्यों करते हैं और यह इतना लोकप्रिय क्यों है कि थोड़ा इतिहास चाहिए।

ऐसा लगता था कि वसंत जावा ईई अनुप्रयोगों से सरल था। मैं EJB2.x spec का संदर्भ देता हूं। मुझे लगता है कि उस कल्पना की जटिल प्रकृति के खिलाफ एक विद्रोह था। डेवलपर्स एक सरल वास्तुकला चाहते थे, और वसंत ने उन्हें उन वर्गों के बजाय पीओजेओ (सादा ओल्ड जावा ऑब्जेक्ट्स) लिखने की अनुमति देकर प्रदान किया जो वांछित कार्यक्षमता प्राप्त करने के लिए विशिष्ट इंटरफेस को लागू करना था।

वसंत ने 2 सिद्धांतों को और भी लोकप्रिय बना दिया: नियंत्रण (आईओसी) और निर्भरता इंजेक्शन का उलटा। संयुक्त, उन दो सिद्धांतों ने एक आवेदन के विभिन्न घटकों को तारों का तारों का एक अलग तरीका प्रदान किया, और जब वे भागते थे तो उन घटकों को एप्लिकेशन में प्राप्त करना।पीओजेओ लिखने के विचार के साथ संयुक्त, कई लोगों के लिए बहुत ही आकर्षक था, क्योंकि कोड सरल था और आपके सभी घटकों को तार करना आसान था।

नया ईजेबी 3 spec वसंत की पेशकश करने वाले कुछ चीज़ों को रद्द करता है, लेकिन वसंत एक आईओसी कंटेनर से कहीं अधिक है। यह डेटाबेस में जेडीबीसी पहुंच के लिए महान टेम्पलेट प्रदान करता है, लेनदेन को संभालने के कई सरल तरीकों, उपयोगिताओं का परीक्षण, एक एमवीसी ढेर, और इसी तरह। यह लोकप्रिय था और लोकप्रिय बना हुआ है। एक मजाक मैंने सुना है

"EJB3, सवाल कोई नहीं पूछा का जवाब ..." है

EJB3 एक अच्छा विकल्प है। वसंत एक बढ़िया विकल्प है। Grails भी एक अच्छा विकल्प है (कवर के तहत वसंत, Hibernate का उपयोग करता है)।

+1

मैं Grails का एक बड़ा प्रशंसक हूँ! आश्चर्यजनक है कि आप कितनी तेजी से उठ सकते हैं और दौड़ सकते हैं। –

+0

@amir, मैं पूरी तरह से सहमत हूं। – hvgotcodes

+1

और मैं नहीं करता हूं। Grails अच्छा है, लेकिन संस्करण के रूप में हम उपयोग कर रहे हैं - 1.3.3 - अभी भी अस्थिर। हमें खुद को कुछ बग ठीक करना था (निश्चित रूप से उन्हें रिपोर्ट करने के बाद)। और वे कुछ कोने-केस कीड़े नहीं थे। – Bozho

1

"तो, मुझे वसंत की आवश्यकता क्यों है?"

इलिया! अंत में आपने मुझे विश्वास दिलाया है (और उम्मीद है कि) कि आपको वसंत की आवश्यकता नहीं है। असल में इस ढेर में कुछ भी खास अच्छा नहीं है ... जब तक कि आप इसका पहले से उपयोग नहीं कर लेते हैं। वे वेब तकनीक के बारे में एक पुस्तक लिखते हैं, फिर इसमें शेष कंप्यूटर विज्ञान जोड़ें और उस RESTfull को कॉल करें।

"हालांकि, कल्पना करें कि बहुत सारे कोड हैं जो फॉर्म इनपुट और मॉडल के बहुत सारे हैंडल करते हैं। प्रत्येक नियंत्रक के पास एक दृश्य हो सकता है"।

अमीर! - बहुत अच्छा विचार। वेब ढांचे के बीच वास्तविक अंतर मुझे पता है कि घटक की परिभाषा क्या है। स्ट्रैट्स में तीन प्रकार के घटक होते हैं - देखें, कंट्रोलर और मॉडल घटक। पहली नज़र में अच्छा लग रहा है (निश्चित रूप से कुछ अन्य लोगों की तुलना में बेहतर)। लेकिन आप उन घटकों का निर्माण कैसे कर सकते हैं? - एक पेज देखें, एक पेज कंट्रोलर और एक पेज मॉडल। भगवान जानता है कि घटकों की इन तीन पंक्तियों से बाध्यकारी वस्तुओं की लागत क्या होगी - यदि संभव हो तो शायद एक बड़ी विन्यास।

असली समाधान है (जैसा कि आपने व्यावहारिक रूप से ऊपर उद्धृत में कहा है) घटकों की एक अवधारणा है जिसमें प्रत्येक के पास इसका दृश्य, इसके नियंत्रक और उसका मॉडल है। केवल एक ढांचा अभी तक चला गया है - हाइब्रिड जावा। वसंत में एक वेब पेज बिल्डिंग ब्लॉक क्या है?

1

लगता है जैसे आपको वसंत के साथ पीओसी विशेष क्षमताओं की आवश्यकता है और फिर जावा ईई 6 के साथ, ताकि आप दो वास्तविक तुलनात्मक व्यावहारिक प्रोटोटाइप की तरह तुलना कर सकें।

कारणों मैं हालांकि वसंत का उपयोग करें, इस प्रकार हैं:

  • सार अपने आवेदन करने के लिए आवेदन सर्वर से दूर करने की क्षमता। मैं इस प्रकार किसी भी आवेदन सर्वर पर चला सकते हैं, या के रूप में के बाहर इकाई परीक्षण के लिए
  • कि मैं लिखने के लिए, मेरे डिजाइन में सुधार करने के लिए होता बॉयलर प्लेट कोड का एक बहुत पहले से ही उपलब्ध है
  • आईओसी/डि - उद्देश्य यह है कि जरूरत निर्भरताओं को यह नहीं पता कि उन्हें कैसे प्राप्त किया जाए - यह सब जानता है कि यह किस इंटरफ़ेस की आवश्यकता है। कुछ तीसरी पार्टी उन्हें प्रदान करती है। हां, आप जावा ईई 6 में इस तीसरे पक्ष के अपने संस्करण को रोल कर सकते हैं लेकिन यह वसंत में पहले से ही उपलब्ध है।
  • बीन प्रबंधित लेनदेन - वसंत आपके सभी लेन-देन पर पूर्ण निम्न स्तर नियंत्रण रखने के लिए आवश्यक सभी टूल प्रदान करता है। मैं हमेशा बीएमटी का उपयोग करने का सुझाव देता हूं क्योंकि यह आपको लचीलापन देता है जिसकी आपको आवश्यकता हो सकती है।
संबंधित मुद्दे