मैंने 4 साल पहले अजगर पर स्विच करने से पहले 10 साल के लिए जावा वेब ऐप्स को प्रोग्राम किया था। मुझे लगता है कि मैं अजगर का उपयोग करके बहुत अधिक उत्पादक हूं और बहुत कम समय में किया जा सकता है, और ईमानदारी से कहूं तो, जब मैं अजगर में विकसित होता हूं तो मैं बहुत खुश होता हूं। यहाँ कुछ कारण बताए जा रहे हैं कि मुझे लगता है कि अजगर बेहतर है तो जावा मेरे व्यक्तिगत अनुभव के आधार पर, आपका लाभ बहुत हो सकता है।
वेब फ्रेमवर्क:
जब मैंने पहली बार जावा में वेब ऐप की प्रोग्रामिंग शुरू की, तो स्ट्रट्स सिर्फ बाहर आया, और यह बहुत अच्छा नहीं था, लेकिन यह सबसे अच्छी चीज उपलब्ध थी। मैंने स्ट्रट्स ऐप्स का एक गुच्छा बनाया, और रास्ते में कुछ अन्य रूपरेखाओं में। जब भी कोई नया ढांचा सामने आया (टेपेस्ट्री, विकेट, जीडब्ल्यूटी, स्ट्राइप, ग्रेन, एपफ्यूज, प्ले, रिचफेसेस, स्प्रिंग, इत्यादि), तो मैं इसे आज़मा कर देखूंगा कि क्या यह कोई बेहतर था, और ज्यादातर बार यह थोड़ा बेहतर था , और कभी-कभी बेहतर नहीं होता है। मेरा कहना है कि नाटक की रूपरेखा सही दिशा में एक कदम है।
बैटरियों में शामिल नहीं:
जावा के सबसे कष्टप्रद हिस्सों में से एक यह तथ्य था कि आपके द्वारा उपयोग किए जाने वाले अधिकांश पुस्तकालयों को जावा में ही शामिल नहीं किया गया था, आपको अपाचे कॉमन्स जैसी जगहों से एक टन का 3 जी लिबास शामिल करना था। यदि आप किसी अन्य बड़े पुस्तकालय के साथ हाइबरनेट की तरह कुछ का उपयोग करते हैं, तो आप जार निर्भरता नरक में समाप्त होते हैं, जहां हाइबरनेट को जार के एक संस्करण की आवश्यकता होती है, और कुछ और को दूसरे संस्करण की आवश्यकता होती है। यदि आप जार फ़ाइलों को गलत क्रम में लोड करते हैं, तो आप भाग्य से बाहर हैं। आपको अपनी निर्भरता को प्रबंधित करने के लिए मावेन, और आइवी जैसे उपकरणों पर निर्भर रहने की आवश्यकता है, और यह सिर्फ आपकी परियोजना में अधिक निर्भरता लाता है जिसके परिणामस्वरूप परियोजनाएं बड़ी होती हैं। मेरे पास सबसे सरल वेब ऐप्स के लिए कुछ युद्ध फाइलें 100MB + युद्ध फाइलें थीं।
बहुत सारे विकल्प:
किसी कारण से जावा में एक ही काम करने के लिए कई अलग-अलग तरीके होने लगते हैं। Wikipedia ( http://en.wikipedia.org/wiki/Comparison_of_web_application_frameworks#Java ) के अनुसार java के लिए 38 से अधिक विभिन्न वेब फ्रेमवर्क हैं और 23 अलग-अलग ORM's ( http://en.wikipedia.org/wiki/List_of_object-relational_mapping_software#) हैं। जावा ) केवल कुछ उदाहरणों के नाम के लिए। यदि आप अन्य भाषाओं को देखते हैं तो उनके पास अधिक उचित संख्या है। कुछ लोग सोचते हैं कि बहुत सारे विकल्प होना एक अच्छी बात है, लेकिन ऐसा नहीं है कि यह डेवलपर समुदाय में बहुत सारे व्यर्थ प्रयास करता है, हर कोई एक ही पहिए को फिर से मजबूत कर रहा है, और यदि आप उस भाषा के लिए एक नए व्यक्ति हैं से चुनने के लिए बहुत सारे विकल्प।
ऐप सर्वर:
जावा वेब एप्लिकेशन वास्तव में भारी हैं, और चलाने के लिए बहुत सारे संसाधनों की आवश्यकता होती है। वे विशेष रूप से स्मृति भूख लगी है। सॉफ्टवेयर के किसी भी टुकड़े की तरह उन्हें अपने संसाधन के पदचिह्न को कम करने के लिए तैयार किया जा सकता है, लेकिन अन्य भाषाओं की तुलना में उनका बॉक्स सेटअप बहुत ही भयानक है। अपने अतीत में मैंने वेबलॉजिक, वेबस्पेयर, जेबॉस, टॉमकैट और जेट्टी का उपयोग किया है। जब मैंने EJB का उपयोग करने के लिए बाध्य किया गया था, तब मैंने केवल पहले तीन का उपयोग किया था, लेकिन भले ही आप EJB का उपयोग नहीं कर रहे हों, वे बड़े ऐप सर्वर थे और कभी-कभी कॉन्फ़िगर करने और सही ढंग से चलने में मुश्किल होते थे। Tomcat और Jetty सेटअप करने के लिए बहुत बेहतर और आसान हैं, लेकिन अभी भी संसाधन हॉग हैं।
ऐप होस्टिंग:
यदि आप अपना स्वयं का सर्वर नहीं चला रहे हैं, तो उचित मूल्य पर अपने जावा ऐप्स के लिए साझा होस्टिंग ढूंढना वास्तविक है। मुख्य कारण यह है कि जावा ऐप्स को अन्य भाषाओं की तुलना में बहुत अधिक मेमोरी की आवश्यकता होती है, इसलिए यह एक साझा होस्टिंग प्रदाता के लिए समझ में नहीं आता है कि वे अपने मूल्यवान रैम को जावा साइट चलाने के लिए खर्च करें, जब वे एक ही स्थान पर 5 php साइट चला सकते हैं। इसका मतलब है कि जावा होस्टिंग प्रदान करने वाले कम प्रदाता हैं, जो बदले में आपकी वेबसाइट को चलाने के लिए उच्च लागत का मतलब है।
विकास का समय:
जब मैं जावा में विकसित हो रहा था, मैंने अपने आप को बहुत धीमा पाया, फिर मैं अजगर में क्या कर सकता हूं। मुझे एक बदलाव, संकलन, पुनर्विकास और फिर परीक्षण करने की आवश्यकता होगी, और यह पुनरावृत्ति प्रक्रिया को धीमा कर देता है। मुझे पता है कि इसे और तेज़ बनाने के तरीके हैं, लेकिन फिर भी यह सबसे अच्छा है, मुझे बहुत धीमा लगा, फिर मैं अजगर में क्या कर सकता हूं।
अजगर में समान कार्य करने के लिए बहुत कम बॉयलरप्लेट कोड भी है, इसलिए मैं कोड विकसित करने में कम समय व्यतीत करता हूं।
जावा बस बहुत सारे हिस्सों में इंजीनियर के रूप में महसूस करता है, एपीआई के बहुत सारे और इंटरफेस आप जो करना चाहते हैं उसके लिए जटिल हैं। और हर कोई और उनके भाई सोचते हैं कि वे एक जावा वास्तुकार हैं और इसके परिणामस्वरूप बड़े जटिल सिस्टम हैं जिनका उपयोग करना और विकसित करना कठिन है।
आईडीई:
जब मैं जावा में विकास कर रहा था, तो मुझे लगा कि यह आईडीई से चिपक गया है, मैं इसके बिना खो गया था। IntelliJ बाजार पर सबसे अच्छा IDE है, और यह अजगर के लिए मुश्किल था क्योंकि अजगर के लिए ऐसा कुछ भी नहीं था। इसलिए एक आईडीई के बजाय, मैंने सिर्फ टेक्सटमेट का उपयोग किया, जो कि एक सामान्य टेक्स्ट एडिटर है। यह पहली बार में कठिन था, लेकिन क्योंकि यह सिर्फ एक पाठ संपादक था, यह वास्तव में तेज और उत्तरदायी अनुप्रयोग था। मैं कुछ ही सेकंड में अपनी पूरी परियोजना को खोल सकता था, जबकि जब मैं एक आईडीई में एक परियोजना खोलना चाहता था तो उसमें एक मिनट या अधिक समय लग सकता था, जिसमें एक टन रैम वाली मशीन थी। IntelliJ के निर्माताओं ने अजगर नामक एक अजगर संपादक के साथ बाहर आया, मैंने इसे पहली बार बाहर आने पर खरीदा था, और यह बहुत अच्छा है। लेकिन मुझे एहसास हुआ कि मुझे अजगर के लिए एक आईडीई की आवश्यकता नहीं है, मैं एक पाठ संपादक के साथ ठीक हूं। जब मैं जावा वेब ऐप पर काम करना चाहता हूं, जो मुझे समय-समय पर करना होता है, तो मैं टेक्स्ट एडिटर का उपयोग करने की कोशिश करता हूं, लेकिन मुझे अभी तक इसमें कोई महारत हासिल नहीं है। मुझे व्यक्तिगत रूप से जावा के लिए आईडीई की अधिक आवश्यकता है क्योंकि अगर मैं कुछ गड़बड़ कर देता हूं तो इसे recompile और redeploy में अधिक समय लगता है, जो मुझे धीमा कर देता है।
ORM:
जब मैंने पहली बार एक ORM के रूप में हाइबरनेट का उपयोग करना शुरू किया, तो मुझे लगा कि यह बहुत अच्छा है, यह समस्या थी, और यह बिल्कुल सही नहीं था, लेकिन यह बेहतर था फिर मैं इससे पहले क्या कर रहा था। मैं इससे खुश था, जब तक कि मैंने एक अजगर परियोजना पर Django के ORM के साथ एक आवेदन नहीं किया था, और उसने मेरी आँखें खोल दीं, वह यह है कि एक ORM काम कैसे करना चाहिए। उस परियोजना के बाद मैं हाइबरनेट में वापस चला गया, और मैं बस निराश महसूस किया, और Django के ORM पर वापस जाने के लिए तरस गया। एक और महान अजगर ORM sqlalchemy है, जो Django के ORM के समान है, लेकिन थोड़ा अलग है। मुझे आरओआर के ओआरएम के साथ सीमित अनुभव है, लेकिन मुझे जो याद है, उससे यह बहुत अच्छा था।
टेम्पलेट:
जावा में वेब टेम्प्लेटिंग सिस्टम उतना अच्छा नहीं है, और मुझे लगता है कि मैंने उन सभी (टाइल्स, फ्रीमार्कर, वेग, आदि) की कोशिश की है। उनमें से ज्यादातर केवल बुनियादी कार्यक्षमता प्रदान करते हैं और साथ काम करने के लिए एक दर्द है। पायथन की ओर, मेरे दो पसंदीदा Django टेम्प्लेट और जिनजा 2 हैं, उनके पास वह सब कुछ है जो मुझे एक टेंपलेटिंग इंजन में चाहिए, और वास्तव में उपयोग करना आसान है।