2008-10-04 16 views
12

मैं लैंप स्टैक से परिचित हूं और पिछले कुछ सालों से इसके आधार पर कुछ हद तक वेब स्टेज़ को सफलतापूर्वक तैनात किया गया है। मैंने Apache + modPerl, PHP से रूबी और रेल तक सब कुछ उपयोग किया है। मेरी रेल साइट कैशिंग के अच्छे उपयोग के साथ एक बहुत अच्छा भार बनाए रख सकता है, लेकिन मैं बड़े पैमाने पर बात नहीं कर रहा हूं।जावा ईई - क्या यह सिर्फ फ्लफ या वास्तविक सामान है?

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

मैं यहां ट्रोलिंग नहीं कर रहा हूं: मैं ऐसी चीजों के ठोस उदाहरणों की तलाश कर रहा हूं जो जावा ईई वास्तव में नाखून हैं जो आधुनिक लैंप फ्रेमवर्क से अनुपलब्ध हैं, यदि ऐसे मतभेद मौजूद हैं। (आधुनिक = रेल, Django, आदि)। वैकल्पिक रूप से उन चीजों के साथ पाइप करें जो लैंप वास्तव में बेहतर करता है (कम एक्सएमएल एक के लिए बैठता है)।

+++++ अपडेट 16 अक्टूबर, 2008

मैं रिपोर्ट करने के लिए है कि उत्तर यहाँ की सबसे उपयोगी नहीं हैं, और बस दो श्रेणियों में से एक में गिर जाते हैं उदास हूँ: "यह मापता है क्योंकि यहां तीन हैं बड़ी वेबसाइटों के उदाहरण "और" यह तराजू क्योंकि यह वास्तव में लैंप स्टैक से वास्तव में बहुत बेहतर है "।

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

उपयोगी चर्चा

+1

"बाकी के लिए आप सफल हो सकते हैं या अपनी योग्यता पर असफल हो सकते हैं, पर्यावरण में घुसपैठ करने योग्य और भरोसेमंद वेबसाइट बनाने के लिए पर्यावरण में कुछ भी नहीं है" हां, लेकिन यह सामान्य में सत्य है - स्टैक नहीं करता है ' कोई फर्क नहीं पड़ता, यह प्रोग्रामर है जो –

उत्तर

18

जावा ईई एलएएमपी स्टैक पर प्रदान करने वाला मुख्य अंतर यह एक शब्द तक उबाला जा सकता है। लेन-देन।

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

लेकिन प्रत्येक जावा ईई सर्वर में एक वितरित लेनदेन प्रबंधक शामिल है। यह आपको विभिन्न प्रणालियों में सुरक्षित और विश्वसनीय रूप से अधिक जटिल चीजें करने देता है।

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

स्पष्ट रूप से इस सरल परिदृश्य को काम किया जा सकता है, इसके साथ निपटाया जा सकता है आदि। जावा ईई के साथ अच्छी बात यह है कि आपको इस तरह के मुद्दों से निपटने की ज़रूरत नहीं है - कंटेनर से निपटने के लिए उन्हें।

और फिर, हर समस्या को इस स्तर की लेनदेन हैंडलिंग की आवश्यकता नहीं है। लेकिन जो लोग करते हैं, उनके लिए यह अमूल्य है। और एक बार जब आप उनका उपयोग करने के लिए उपयोग करते हैं, तो आपको एक बड़ी संपत्ति होने के लिए जावा ईई सर्वर का लेनदेन प्रबंधन मिल जाएगा।

4

Amazon.com, ईबे, गूगल - वे सभी जावा ईई के एक सबसेट का उपयोग करें और वे बहुत सफल रहे हैं। वे सभी servlets और JSPs

का उपयोग करते हैं यदि आप ईजेबी 1.1 या ईजेबी 2.0 का उपयोग करने का प्रयास करते हैं, तो स्केलेबिलिटी हिट हो जाती है। इकाई परीक्षण को कठिन बनाने के परिणामस्वरूप डेवलपर उत्पादकता भी कम हो जाती है।

ईजेबी 3.0 के साथ, डेवलपर उत्पादकता और अनुप्रयोग स्केलेबिलिटी में सुधार होता है।

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

नई जावा ईई अनुप्रयोग सर्वर को हमेशा बहुत सारे एक्सएमएल की आवश्यकता नहीं होती है। वे आपको निर्भरता इंजेक्शन और डेटाबेस मैपिंग करने के लिए एनोटेशन का उपयोग करने देंगे।

जावा ईई पर सभी उद्यम विकास का 50% से अधिक होता है (जब मैं कहता हूं कि यह ज्यादातर जावा ईई स्टैक का सबसेट का उपयोग कर रहा है। कोई स्टेटलेस सत्र बीन ईजेबी का उपयोग कर सकता है, कोई व्यक्ति सिर्फ जेएनडीआई का उपयोग कर सकता है, कोई संदेश का उपयोग कर सकता है ड्राइविंग बीन ईजेबी)।

उम्मीद है कि यह मदद करता है।

+0

अच्छी चीजें हैं, लेकिन यह भी ध्यान रखें कि मूल अमेज़ॅन स्टोर लिस्प में लिखा गया था, और ऐसी भी बड़ी साइटें हैं जो गैर-जावा जे 2 ईई हैं, इसलिए केवल सफलता के उदाहरण सूचीबद्ध नहीं होते हैं जे 2 ईई विशिष्ट रूप से बेहतर है, बस यह भी अच्छा है।पोस्ट के बाकी हिस्सों में अच्छी जानकारी, धन्यवाद। – Jeff

+0

@ जेफ - क्या आप वाकई उस कंपनी के बारे में सोच नहीं रहे हैं जिसे पॉल ग्राहम ने अमेज़ॅन को बेचा था? यह लिस्प में लिखा गया था, और एक ऐसी वेबसाइट थी जो छोटे व्यवसाय को अपने ऑनलाइन स्टोर बनाने की अनुमति देती है। मुझे नहीं लगता कि अमेज़ॅन खुद लिस्प में कभी लिखा गया था। –

4

आप जावा ईई के साथ वास्तव में विशाल और स्केलेबल एप्लिकेशन बना सकते हैं, और इसका व्यापक रूप से एंटरप्राइज़ कंप्यूटिंग में उपयोग किया जाता है।

लेकिन:

मेरे जावा ईई के साथ अनुभव है क्योंकि यह काम अपनी टीम कर रही थी बॉयलरप्लेट और पाइपलाइन था की 90% की तरह लग रहा था बहुत बुरा था। उस समय हमारी उत्पादकता बहुत अधिक थी, अगर हम एक अलग प्रौद्योगिकी ढेर का इस्तेमाल कर सकते थे।

10

बड़ी बंदूक जावा ईई वेब सर्वर (जेबॉस, वेबस्पियर, वेबलोगिक इत्यादि), और विंडोज सर्वर/आईआईएस/एएसपी.नेट वास्तव में आपके विशिष्ट लैंप स्टैक की तुलना में स्केलेबिलिटी और प्रदर्शन में एक अलग लीग में हैं।

मेरी टीम संयुक्त राज्यों में सबसे बड़ी दूरसंचार वाणिज्य साइटों में से एक के लिए जिम्मेदार है, प्रतिदिन लाखों हिटों को संभालने के लिए जिम्मेदार है (हमारे डेटाबेस में से एक डेटा आकार में 1000TB से अधिक है, आपको कुछ परिप्रेक्ष्य देने के लिए)।

हम अपनी साइट के विभिन्न वर्गों के लिए एएसपी.नेट और वेबस्पेयर के साथ-साथ एसएपी आईएसए (जो जावा ईई समाधान भी है) के संयोजन का उपयोग करते हैं, बिल्कुल कोई रास्ता नहीं है कि लैंप स्टैक बिना इस तरह के लोड को संभालेगा हार्डवेयर की भारी मात्रा में स्केलिंग .... .NET स्टैक सेक्शन अधिकांश लोड को संभालता है और केवल 32 सर्वर पर चलता है।

हम किसी भी प्रकार की कल्पना नहीं करते हैं, जैसे कि एक मेमकैच किए गए प्रकार समाधान या स्थैतिक HTTP कैशिंग का उपयोग ... हम अलग-अलग ऐप सर्वर पर कैश SOAP कॉल और डेटाबेस कॉल करते हैं, लेकिन स्मृति डेटाबेस में कोई उपयोग नहीं करते हैं आदि ... हमारा मंच अब तक इसे संभाल सकता है।

तो हाँ, इस तरह की चीजों की तुलना LAMP से तुलना करने के लिए संतरे के सेब।

+1

मुझे लगता है कि आप कुछ अच्छे अंक बनाते हैं। इंटरनेट स्टार्टअप के साथ लैंप स्टैक इतना लोकप्रिय कारण है कि यह मानसिक रूप से गीक मानसिकता के लिए लगभग कुछ भी नहीं है और अपील करता है जो अक्सर इन स्टार्टअप के संस्थापक होते हैं। – Craig

2

जावा ईई का मूल बस एक कंटेनर द्वारा प्रदान किए गए कार्यान्वयन के इंटरफेस का एक गुच्छा है। अधिकांश एप्लिकेशन जावा ईई विनिर्देश का उपयोग नहीं करते हैं।

जावा ईई के दो मुख्य पहलू हैं जो लोग सोचते हैं कि जब वे इसकी चर्चा करते हैं: ईजेबी और सर्वलेट।

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

Servlets, हालांकि, शानदार हैं। वे एक बहुत अच्छी और सिद्ध तकनीक हैं।

एक सर्वलेट का मूल एक अनुरोध और प्रतिक्रिया चक्र है: उपयोगकर्ता कुछ अनुरोध करता है, और सर्वर अनुरोध को रोकता है और इसके आधार पर प्रतिक्रिया प्रदान करता है। अनुरोधों और प्रतिक्रियाओं की एक श्रृंखला को एक उपयोगकर्ता के लिए सत्र के माध्यम से ट्रैक रखा जा सकता है।

मालिकाना ऐप सर्वर की उच्च कीमत के लिए, मुझे नहीं पता कि कीमत इतनी ऊंची क्यों है, लेकिन अपाचे टॉमकैट एक बहुत अच्छा सर्वलेट कंटेनर है और यह मुफ़्त है। हम तैनाती के लिए परीक्षण और वेबस्पेयर के लिए टोमकैट का उपयोग करते हैं (वेबपेज हमारे क्लाइंट द्वारा ऐप्स के उपयोग के लिए प्रदान किया जाता है)।दुर्भाग्यवश यह केवल वेबस्पेयर 6 है (अपडेट 11, जैसा कि हमने हमारी निराशा को पाया है, जिसमें अपडेट 13 के लिए फिक्स नहीं है जो जेएसटीएल कार्यों को जेएसपी टैग के अंदर ठीक से संचालित करने में सक्षम बनाता है), इसलिए हमें जावा का उपयोग करने के लिए मजबूर होना पड़ता है 1.4x, जावा 1.5+ नहीं।

कई ढांचे भी हैं (उदाहरण के लिए पहले संदर्भित स्प्रिंग फ्रेमवर्क देखें) जो आसान सर्वलेट विकास की अनुमति देता है। यदि आप इसका उपयोग HTTP/HTML के लिए कर रहे हैं, तो इस विकास में आसानी से आपकी सहायता करने के लिए बड़ी संख्या में ढांचे हैं।

4

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

1

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

1

स्केलेबिलिटी के मामले में, जावा ईई आपको ऐसे विशाल विकल्प देता है जिनके पास आपके पास लैंप स्टैक या रूबी नहीं है। सभी विकल्प एन-स्तरीय अनुप्रयोगों के आसपास घूमते हैं, जबकि अधिकांश एलएएमपी और रूबी अनुप्रयोग 2 स्तर होते हैं।

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

इसलिए मुझे इंटरफेस, वेब यूआई और एसओएपी एपीआई करना है। अब मैं एक आराम एपीआई चाहता हूँ। ठीक है ... मध्य इंटरफ़ेस को भी हिट करने के लिए उस इंटरफ़ेस का निर्माण करें .. और क्लस्टर में और कंप्यूटर जोड़ें .. या मल्टीक्लस्टर पर जाएं वास्तव में कोई फर्क नहीं पड़ता। यह मध्यम स्तर सभी ईजेबी है, एक तेजी से प्रोटोकॉल तो SOAP कई तरीकों से।

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

स्केलिंग के अनुसार, मैं देख सकता हूं कि मेरे कौन से ईजेबी सबसे अधिक प्रभावित हो रहे हैं, और संसाधनों को हटाने के दौरान उन लोगों को अधिक संसाधन जोड़ें। मैं जेएमएस कतारों, और जावा ईई प्रौद्योगिकियों के ढेर के हर दूसरे हिस्से के साथ ऐसा कर सकता हूं। न केवल मुझे स्केलेबिलिटी मिलती है, मुझे अपने सर्वर संसाधनों का प्रबंधन मिलता है।

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

1

स्केलेबिलिटी और अन्य मामलों को अलग करना, यहां एक साधारण बात है जिसका उल्लेख नहीं किया गया था, जो एक लाभ हो सकता है: यह जावा है।

  • जावा के लिए उपलब्ध तृतीय पक्ष पुस्तकालयों की एक बड़ी राशि है, दोनों स्वामित्व और खुले स्रोत। अब, मुझे यकीन है कि पर्ल, रुबी, पीएचपी इत्यादि के लिए बहुत बड़ी मुफ्त पुस्तकालय हैं - लेकिन जब अधिक विशिष्ट अनुप्रयोग क्षेत्रों के लिए वाणिज्यिक पुस्तकालयों की बात आती है, तो वे जावा (और .NET, और शायद C++ के करीब नहीं आते हैं))। चाहे आप की आवश्यकता है पाठ्यक्रम की कोई भी विशेष तृतीय पक्ष लाइब्रेरी पूरी तरह से निर्भर करती है कि आप किस प्रकार के एप्लिकेशन का निर्माण कर रहे हैं।
  • मुझे लगता है कि किसी भी अन्य मंच के लिए डेवलपर्स की तुलना में दुनिया में अधिक जावा डेवलपर्स हैं। (हो सकता है कि मैं गलत हूँ लेकिन यह क्या मैं कभी कभी सुना है।)

जब एक वाणिज्यिक सेटिंग में एक मंच का चयन, या तो बाहर महत्वपूर्ण बदल सकते हैं।

+0

मैं उस जावा में जोड़ना चाहता हूं, एक बार एप्लिकेशन शुरू होने के बाद तैयार मेमोरी में रहता है। प्रत्येक अनुरोध पर php संकलित किया जाना है। (यह बदल सकता था लेकिन अब तक मुझे यह सच याद है) –

1

क्या मालिकाना एप्लिकेशन सर्वर

कुछ भी नहीं है की ऊंची कीमत को सही ठहराते हैं! यही कारण है कि जावा वेब ऐप्स का भारी बहुमत टोमकैट पर तैनात किया गया है (जो मुफ़्त है)। हालांकि टोमकैट एक पूर्ण जावा ईई ऐप सर्वर नहीं है, ज्यादातर ऐप्स के लिए यह "पर्याप्त पूर्ण" है। यदि आपको वास्तव में एक पूर्ण जावा ईई ऐप सर्वर की आवश्यकता है, तो ग्लासफ़िश और जेबॉस दोनों उत्कृष्ट और नि: शुल्क हैं।

संबंधित मुद्दे