आधुनिक वेब अनुप्रयोग विकास के लिए जावा का उपयोग क्यों नहीं किया जाता है? [बन्द है]


393

एक पेशेवर जावा प्रोग्रामर के रूप में, मैं यह समझने की कोशिश कर रहा हूं - आधुनिक वेब अनुप्रयोगों के लिए जावा के प्रति घृणा क्यों?

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

मैंने यह भी सुना है कि यह वही वेब स्टार्टअप समुदाय जावा डेवलपर्स को नकारात्मक रूप से संदर्भित करता है - अधिक या कम आसन्न कि वे धीमे हैं, रचनात्मक नहीं, पुराने हैं।

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

लेकिन यह भी क्योंकि मैंने जावा से कुछ भी महत्वपूर्ण "गायब" नहीं देखा है, मुझे उसी एप्लिकेशन को बनाने से रोक रहा है।

जो मुझे मेरे प्रश्न के लिए लाता है :

आधुनिक वेब अनुप्रयोगों में जावा का उपयोग क्यों नहीं किया जा रहा है?

  • क्या यह भाषा की कमजोरी है?

  • क्या यह जावा का एक अनुचित स्टीरियोटाइप है क्योंकि यह इतने लंबे समय से है (यह गलत तरीके से अपनी पुरानी तकनीकों से जुड़ा हुआ है, और इसकी "आधुनिक" क्षमताओं के लिए मान्यता प्राप्त नहीं करता है)?

  • क्या जावा डेवलपर्स का नकारात्मक स्टीरियोटाइप बहुत मजबूत है? (जावा अब "शांत" नहीं है)

  • क्या अन्य भाषाओं में लिखे गए एप्लिकेशन वास्तव में तेजी से बनते हैं, बनाए रखने में आसान होते हैं, और क्या वे बेहतर प्रदर्शन करते हैं?

  • क्या जावा केवल बड़ी कंपनियों द्वारा उपयोग किया जाता है जो एक नई भाषा के अनुकूल होने के लिए बहुत धीमी हैं?


142
मुझे लगता है कि आप गलत हैं: यह अभी भी प्रयोग किया जाता है, यह सिर्फ ठंडा कारक है।

41
@ ग्राहम ली: जावा कभी ठंडा रहा है? मुझे कुछ याद आया होगा। खैर, मुझे लगता है कि यह कोल्ड कॉफी है, लेकिन शांत है? मुझे लगता है कि मुख्य कारण यह है कि जावा, विशेष रूप से उद्यम जावा फ्रेमवर्क हैं और अभी भी भारी संकट में हैं। आप उन्हें हल्का नहीं मान सकते हैं, आप उनका इस्तेमाल सिर्फ इसलिए करते हैं क्योंकि आपको प्लेटफॉर्म के वितरण / संतुलन / स्केलेबिलिटी फीचर्स की जरूरत है और होमएजीनिटी के लिए, जैवा के साथ किए गए फ्रंटएंड के लिए एक फ्रेमवर्क का उपयोग करना चाहते हैं।
फाल्कन

20
हो सकता है, क्योंकि यह आधुनिक नहीं है ? : पी और जावा कभी भी शांत नहीं था, सिर्फ इसलिए कि उसने हैकिंग वाले हिस्से को प्रोग्रामिंग से बाहर फेंक दिया।
back2dos

28
@ फाल्कन जावा को वापस लाया गया था जब यह पहली बार पेश किया गया था, सूर्य ने जावा को हाइप करने के लिए एक महान काम किया था, चाहे प्रचार उचित था या नहीं, इसका ठंडा होने या न होने से कोई लेना-देना नहीं है, बहुत सारी शांत चीजें बिना किसी कारण के लिए सम्मोहित हैं।
महमूद होसाम

11
@ फाल्कन, आपको जावा ईई 6 में जेएसएफ 2.0 के साथ वेब एप्लिकेशन बनाने पर एक नज़र डालनी चाहिए और अपने अनुभवों से तुलना करनी चाहिए। आपको सुखद आश्चर्य हो सकता है।

जवाबों:


174

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

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

यह उल्लेख नहीं करने के लिए कि विकास प्रक्रिया उत्पादक नहीं है: कोड -> संकलित -> परिनियोजित करते समय यह (Rails / Django / Grails) जैसे ढांचे में है: परीक्षण सर्वर चलाएं -> कोड -> चीजों को बदलें और देखें कि क्या होता है।

अच्छी खबर यह है कि JRebel आपको तुरंत कोड परिवर्तन देखने देता है।


81
प्ले फ्रेमवर्क भी रूबी ऑन रेल्स की तरह है, लेकिन जावा के लिए। कोड -> अपने ब्राउज़र को अपडेट करें।
जोनास

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

22
फेसबुक भी कुछ ऐसा ही करता है। उनका कोड बेस PHP में है, लेकिन गति और स्केलेबिलिटी समस्याओं के कारण, उन्हें एक कंपाइलर (हिपहॉप) लिखना पड़ा, जो PHP को C ++ में संकलित करता है, जिसे बाद में जी ++ का उपयोग करके संकलित किया जाता है। यह मजेदार है कि हर कोई इस बारे में बात करता है कि माणिक और PHP कितने महान हैं और यह कि सभी साइटें उनके चारों ओर बनी हैं, लेकिन तब जब आप देखते हैं कि वे कितने अक्षम हैं, तो अधिकांश बड़े संगठनों को कुछ और पर स्विच करना होगा। अगर मुझे सही से याद है, तो क्रेग्स लिस्ट में इस बहुत कारण के लिए C / C ++ में लिखा बैकएंड कोड का बहुत कुछ है।
किबी

28
1) ग्रहण का उपयोग करते हुए, संकलन आप टाइप करते हैं और आप शायद ही कभी नोटिस करेंगे। इसके अलावा, एक्लिप्स के भीतर टॉमकैट चलाने से मैं एक सेकंड के भीतर एक ऐप को फिर से शुरू कर सकता हूं। मुझे शायद ही कभी अपने ऐप्स 2 को पुनरारंभ करने में बाधा होती है) 2 कोई चांदी की गोली नहीं है, दोस्तों। रूबी या कोई भी भाषा आपको 10x तेज नहीं बनाती है। जावा देव के साथ समस्या अक्सर रैंप अप होती है, लेकिन यदि आप जानते हैं कि आप क्या कर रहे हैं, तो आप <10 मिनट में एक परियोजना में काम कर सकते हैं।
एलेक्स

5
जावा और किसी भी अन्य स्थिर भाषा में, दो विशाल लाभ हैं, लगभग चिंता मुक्त रीफैक्टरिंग, और एपीआई खोज बिना प्रलेखन।
एरन मेडन

136

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

मैंने आमतौर पर जावा को बहुत बड़े वेब अनुप्रयोगों (बैंकों और बीमा कंपनियों के बारे में) में बेहतर देखा है जो कई अन्य प्रणालियों (जैसे मेनफ्रेम बैक-एंड और डेटाबेस और पीयर वेब-सर्विसेज बैकग्राउंड बैच-प्रोसेसिंग सिस्टम) के साथ संवाद करते हैं ... सभी एक ही आवेदन में)।

मैंने जो कुछ देखा है, उससे छोटे / सरल वेब अनुप्रयोगों के लिए आमतौर पर जरूरत से ज्यादा JavaEE वेब एप्लिकेशन की वास्तुकला है।


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

7
@ जालयन: मेरे अनुभव में यह इसलिए है क्योंकि वे टीम ए के लिए एडमिन वेबसियर, टीम बी के लिए टॉस्कैट, टीम सी के लिए ग्लासफिश (या कुछ और) के बजाय केवल एक एप्लिकेशन सर्वर प्रोग्राम को बनाए रखना चाहते हैं ... और मैं समझ सकता हूं कि महसूस कर रही है, लेकिन हाँ, यह मेरे लिए भी निराशाजनक है।
FrustratedWithFormsDesigner

3
यह जावा ईई के लिए सच है, लेकिन अब प्ले फ्रेमवर्क है जो आपके जावा वेब ऐप को रूबी ऑन रेल्स के रूप में हल्का और उत्पादक बना देगा।
जोनास

9
नया जावा 6 ईई - विशेष रूप से वेब प्रोफाइल - कुछ बहुत ही सरल वेबएप के लिए अनुमति देता है।

4
@ ThorbjørnRavnAndersen ऐप सरल हो सकता है, लेकिन समझ फ्रेमवर्क नहीं है, और न ही चींटी या मावेन जैसे मुख्य टूल को समझ रहा है। एक नौसिखिया सीखने की अवस्था बहुत बड़ी है और संक्षिप्त सूप की नीडिंत परतों से भरी हुई है, चश्मे के बीच भ्रम (जैसे JAX-RS) और इप्स (जैसे जैक्सन) और बहुत कुछ। यदि आप वास्तव में समझना चाहते हैं कि आप क्या कर रहे हैं, तो यह कुछ सरल करना जटिल है।
क्रेग रिंगर

135

मैंने 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 हैं, उनके पास वह सब कुछ है जो मुझे एक टेंपलेटिंग इंजन में चाहिए, और वास्तव में उपयोग करना आसान है।


10
मैं कई बिंदुओं पर आपके साथ हूं, लेकिन कुछ के साथ समस्या ले सकता हूं। संकलन / परीक्षण लूप : ग्रहण के गतिशील वेब मॉड्यूल, और / या जेब्रेल का उपयोग करें, और यह चला गया है; महान। भारीपन : JBoss AS 7 बहुत हल्का और तेज है। और यदि आप EE नहीं चाहते हैं तो आप Tomcat या Jetty का उपयोग कर सकते हैं जो वहां भी मुश्किल से हैं। परीक्षण : Arquillian किसी भी भाषा में उपयोग किया गया सबसे अच्छा परीक्षण उपकरण है, हालांकि यह केवल उपयोग योग्य होने के लिए पर्याप्त परिपक्व हो गया है। निर्भरता नरक : बस मावेन का उपयोग करें; यह JAva का मानक और अनिवार्य हिस्सा होना चाहिए।
क्रेग रिंगर

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

2
मुझे भी लगता है कि आप एक महत्वपूर्ण बिंदु से चूक गए: सीखने की अवस्था और कीड़े वास्तव में चीजों को धीमा कर देते हैं।
क्रेग रिंगर

@ क्रेगिंगर मैंने ग्रहण के डायनामिक वेब मॉड्यूल या जेब्रेल का उपयोग नहीं किया है, इसलिए आप सही हैं, यह हो सकता है।
केन कोचरन

2
यदि आपको IntelliJ पसंद है, तो PyCharm का प्रयास करें - यह उसी मूल पर आधारित है।
तमलिन

94

स्टार्ट अप चमकदार चाहते हैं। जो भी चमकदार है: आरओआर, ग्रूवी, ग्रेल्स, ओओपी डब्ल्यू / पीएचपी, फोबार, वाइबल, नारियो, आदि।

एंटरप्राइज स्थिर, विश्वसनीय और स्केलेबल चाहता है: जावा और .NET उस बिल को फिट करते हैं (जब सही तरीके से किया जाता है)।

वर्तमान टमटम: वित्तीय सेवाएँ। प्लेटफ़ॉर्म: कोल्डफ़्यूज़न (अनिवार्य रूप से एक जावा टैग लाइब्रेरी) और जावा।

पिछले गिग्स:

  1. शिक्षा परीक्षण सेवाएँ - कोल्ड फ्यूजन
  2. उच्च जोखिम बीमा - कोल्ड फ्यूजन और जावा
  3. 401k - कोल्डफ्यूजन और जावा
  4. यात्रा - जावा w / आंतरिक ColdFusion एप्लिकेशन
  5. प्रतिभूति - कोल्ड फ़्यूज़न (प्री-जावा संस्करण)

ये सभी उच्च-खंड, उच्च-सुरक्षा साइट हैं। इन कंपनियों में से किसी ने कभी भी PHP पर विचार नहीं किया, कुछ ने RoR को देखा और कई मुद्दों को देखा। 401k कंपनी की एक बहन कंपनी थी जो सक्षम डेवलपर्स के साथ एक .NET एप्लिकेशन चलाती थी, ऐप हर हफ्ते बस दुर्घटनाग्रस्त होता रहा। उन्होंने अंततः इसे जावा में बदल दिया और स्थिरता प्राप्त की।

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


23
"401k कंपनी की एक बहन कंपनी थी, जो सक्षम डेवलपर्स के साथ .NET एप्लिकेशन चला रही थी, ऐप हर हफ्ते दुर्घटनाग्रस्त होता रहा। उन्होंने आखिरकार इसे जावा में बदल दिया और स्थिरता प्राप्त की।" लोल :), विपरीत मामले के बारे में सुना है।
डेन

12
आपके पास बेशक। कोड लिखने की तुलना में वेब एप्लिकेशन के लिए अधिक है, आपको यह जानना होगा कि अपने सर्वर को कैसे ट्यून करना है, इष्टतम एसक्यूएल और इतने पर लिखना है। उस कंपनी में 2 .NET देवता थे और कोई वास्तविक सर्वर व्यवस्थापक नहीं था। जिस कंपनी के साथ मैं था, उसे खरीदने वाली कंपनी को सौदे में वह ऐप भी मिला था। वे एक विशाल जावा दुकान थे और इसलिए स्थिरता की गारंटी के लिए अधिक संसाधन उपलब्ध थे।
एड्रियन जे। मोरेनो

48
यह मेरे लिए अपमानजनक लगता है कि आपने उस वाक्य को कारण और प्रभाव के रूप में लिखा है। जावा = स्थिरता लाभ में परिवर्तित करें? हम सभी जानते हैं कि ऐसा क्यों नहीं है। इसके अलावा, सभी उस कोल्डफ़्यूज़न अनुभव के बारे में खेद;)
जॉर्डन

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

9
बहुत उच्च गुणवत्ता वाले जावा देवता जिन्हें ढूंढना आसान नहीं है - वास्तव में।
luis.espinal

73

FrustratedWithFormsDesigner के उत्तर के अतिरिक्त : चूंकि मुझे लगता है कि आपका प्रश्न छोटी साइटों की ओर अधिक लक्षित है, इसलिए एक महत्वपूर्ण पहलू यह है कि आपको बहुत से लोगों पर विचार करने की आवश्यकता है: होस्टिंग PHP के लिए सर्वव्यापी है, लेकिन जावा या एएसपी साइटों के लिए अधिक कठिन है। हालाँकि यह उन भाषाओं का दोष नहीं है।


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

जावा की मेजबानी के लिए +1। हालांकि ASP.Net मुश्किल नहीं है और यह सस्ता है। मैं अपने साझा ASP.Net होस्टिंग के लिए $ 8 एक महीने का भुगतान करता हूं। दूसरी ओर, मैं एक साइट को जावा में लाने की कोशिश करना चाहता हूं और एक साझा होस्ट नहीं पा रहा हूं जो जावा चलाता है और एक वीपीएस का उपयोग करने के लिए मुझे एक सीखने की परियोजना के लिए रुचि नहीं है।
जेटी

9
इसके लिए +1। PHP के लिए एक सर्वर पर कई साइटों को होस्ट करना बहुत आसान है क्योंकि यह जावा के लिए है और इसमें जोड़ा गया है कि जावा की तुलना में PHP के लिए सस्ते वेब होस्टिंग समाधान खोजना बहुत आसान है।
जोनास

आप ठीक हैं @ मर्क, फिक्स्ड।
सेबस्टियनजिगर

1
@Kibbee - Arvixe कि मैं का उपयोग करने वाले है। मेरे पास PersonalASP Pro योजना है।
जेटी

70

जावा बिल्कुल है आधुनिक वेब अनुप्रयोग विकास के लिए इस्तेमाल किया। विशेष रूप से एक बार जब आप वेब एप्लिकेशन स्पेक्ट्रम के धीमे बड़े / अधिक जटिल / स्केलेबल अंत तक पहुंच जाते हैं।

यदि आप आधुनिक, उत्पादक उपकरणों और रूपरेखाओं में रुचि रखते हैं, तो एक नज़र डालें:

लेकिन मुझे लगता है कि जेवीएम प्लेटफॉर्म पर सबसे वास्तविक रूप से आधुनिक वेब विकास जावा के सीधे उपयोग के बजाय नई जेवीएम भाषाओं में से एक में होने की संभावना है , जावा के साथ केवल अंतर्निहित पुस्तकालयों और बैक-एंड बुनियादी ढांचे के संदर्भ में रीढ़ प्रदान करता है। Groovy ( Grails ), Scala ( Lift and Play ), JRuby ( JRuby on Rails ) और Clojure ( Noir , Ring / Enlive + बहुत सारे रिवाज) के नाम पर बहुत सारे वेब डेवलपमेंट हो रहे हैं ।

नए JVM भाषा स्थान पर होने वाले सभी नवाचारों के साथ, मुझे व्यक्तिगत रूप से संदेह है कि जावा अंततः "सर्वर-साइड प्रोग्रामिंग का कोडांतरक" बन जाएगा।


Vaadin इंट्रानेट और बड़े उद्यम अनुप्रयोगों को बनाने के लिए एक महान उपकरण है। ऐसा नहीं है कि मुझे लगता है कि एक स्टार्टअप के लिए अच्छी तरह से अनुकूल है। यह तब तक है जब तक आप इसे गले नहीं लगते, क्योंकि यह बदलना बहुत मुश्किल है।
नौगटूर

7
माना; जैसे ही आप JSF2 ड्रॉप करते हैं और कुछ समझदार और उत्पादक का उपयोग करते हैं, जावा ईई 6 महान है। सीखने की अवस्था अभी भी बहुत अधिक है।
क्रेग रिंगर

1
आप आधुनिक जावा वेब फ्रेमवर्क की अपनी सूची में Tapestry5 ( tapestry.apache.org ) जोड़ सकते हैं ।
नीम प्रैक्स

@ क्रेगिंगर जेएसएफ आसान है। आपकी टिप्पणी स्वयं प्रश्न की तरह पढ़ती है: एक धार्मिक शेख़ी
jwenting 11

@jwenting खैर, यह तीन साल हो गया है , इसलिए यह तब से प्रलेखन और बाहरी उपकरणों के मामले में थोड़ा सुधार हुआ है। ईई 6 स्टैक पर जब मैं इसके साथ काम कर रहा था तो यह ग्लासिक 3 और एएस 7. का समर्थन करने पर फ्रिकिन का भयानक, मोर्सो था
क्रेग रिंगर

41

क्या Google, अमेज़ॅन, या लिंक्डइन को आधुनिक के रूप में गिना जाता है?

जावा का उपयोग आधुनिक वेब अनुप्रयोगों के लिए किया जाता है। यदि आप उद्यम को देखते हैं तो यह वेब एप्लिकेशन (आंतरिक) के लिए सबसे अधिक उपयोग की जाने वाली भाषा है।

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

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

आधुनिक वेब विकास में उपयोग की जाने वाली कई भाषाएँ गतिशील रूप से टाइप की जाती हैं। यह टूलिंग को सक्षम बनाता है जो कोड को गतिशील रूप से पुनः लोड कर सकता है क्योंकि यह लिखा गया है (यह स्थिर भाषा में पूरा करना कठिन है - jrebel)। चूंकि वेब विकास खुद को तेज पुनरावृत्तियों के लिए उधार देता है, गतिशील पुन: लोड करना एक बड़ी जीत है। यह ग्रीनफील्ड परियोजनाओं पर विकास चक्र को काफी कम कर देता है और UI और UX अधिकार (प्रकृति द्वारा परीक्षण और त्रुटि) प्राप्त करना आसान बनाता है।

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

इसके अतिरिक्त, जैसा कि डेवलपर काउंट / टर्नओवर बढ़ता है और उत्पादों को अच्छी तरह से इरादे वाले लोगों की संभावना की परिपक्वता होती है, जो बग्स स्काईट्रैक का परिचय देते हैं। कठोरता और अनुशासन कि एक अच्छी तरह से डिज़ाइन किए गए जावा प्रोजेक्ट (इंटरफेस, पैटर्न और उन php पिशाच :) के लिए पवित्र पानी) enforces दीर्घकालिक जोखिम को कम करने में मदद करता है। हालांकि, यह इकाई परीक्षण के माध्यम से भी प्राप्त किया जा सकता है, स्थैतिक जाँच से प्राप्त सुरक्षा जाल (और फाइबग्स और क्लैंग जैसे स्थैतिक विश्लेषक) एक अंतर्निहित कोड कवरेज प्रदान करता है जो हस्तलिखित परीक्षणों के साथ दोहराने के लिए कठिन है। मुझे गलत मत समझो, यूनिट परीक्षण और कार्यात्मक परीक्षण होना चाहिए, लेकिन वास्तविक संगठन कभी भी 100% कवरेज प्राप्त नहीं करते हैं। वे जो जाँचते हैं, उसके लिए स्थैतिक विश्लेषक करते हैं।

इसलिए, बड़ी परियोजनाओं में (जैसा कि कोड आकार की तुलना में टीम के आकार से अधिक परिभाषित किया गया है), जहां कोड के स्वतंत्र रूप से विकसित विखंडों के बीच जटिल व्यवधान है, जावा जैसी भाषाओं को अभी भी पसंद किया जाता है। उदाहरणों में वित्तीय दलालों (ameritrade), वित्तीय आदान-प्रदान (nasdaq, nyse, शायद लंदन के बाद .net विफलता), ऑनलाइन बैंकिंग (उनमें से लगभग सभी), ईमेल (Google), नीलामी (eBay) जैसे बड़े / जटिल वेब अनुप्रयोग शामिल हैं। , आदि।

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

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

नीचे की रेखा, अधिकांश वेब अनुप्रयोग तकनीकी रूप से सरल होते हैं। सरल के लिए, जावा अक्सर ओवरकिल होता है (पुराने दिनों की तरह जब हमने उन्हें सी :) में लिखा था)। यदि, हालांकि, वेबएप्प जटिल है (बैकएंड या अन्यथा) या 100+ डेवलपर्स होने की उम्मीद है, जावा को हराना मुश्किल है।

-

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

BTW - मुझे लगता है कि PHP का उदय वास्तव में चौंकाने वाला है। एक भाषा के रूप में PHP परिणामों की गुणवत्ता में पठनीयता और VB के बराबर है। यह भयानक प्रथाओं को प्रोत्साहित करता है, बनाए रखने के लिए असंभव के बगल में है, 3 पार्टी पुस्तकालय शायद ही कभी उम्मीद के मुताबिक काम करते हैं, और इसमें एक सिंटैक्स है जो लैरी वॉल को ऊपर उठाएगा ... अच्छी तरह से ... एक दीवार। एकमात्र स्पष्टीकरण जो मैं समझा सकता हूं वह यह है कि यह वृद्धिशील शिक्षा (जैसे वीबी) के लिए उधार देता है। दूसरे शब्दों में, आप प्रोग्रामिंग / प्रशासन के बारे में बहुत कम जानते हुए कुछ उपयोगी सिद्ध कर सकते हैं और आप एक समय में अपने ज्ञान को एक छोटा हिस्सा बना सकते हैं। गोद लेने के दृष्टिकोण से इसके लिए बहुत कुछ कहा जा सकता है। हालाँकि, हर किसी के लिए कॉर्पोरेट या mfg दुनिया में "प्रोग्रामर" द्वारा लिखे गए अरबों VB ऐप्स में से किसी एक का समर्थन करना या बदलना पड़ा है, आप शायद अपना सिर हिला रहे हैं और अपनी सेवानिवृत्ति की योजना बना रहे हैं। :)


3
"चूहों का घोंसला है कि सी # बन रहा है" बिंदु पर विस्तार से देखभाल?
XåpplI'-I0llwlg'I -

1
मुझे यकीन नहीं है कि आप क्यों कहते हैं '' अपने आप को दोहराएं नहीं '' xml नरक और जावा वेब विकास के लंबे समय के चक्र का जवाब था। '' DRY एजिले समुदाय में एक अवधारणा के रूप में उभरा, जिनमें से अधिकांश उस समय जावा के अलावा अन्य भाषाओं का उपयोग कर रहे थे।
जूल्स

38

खैर, मैं हाल ही में एक जावा लड़के से मिला जो वास्तव में नए स्प्रिंग डेटा प्रोजेक्ट से उत्साहित था, क्योंकि आपके DB के लिए बुनियादी CRUD की पहुँच प्राप्त करने में कितना कम कोड लगता है।

मैं कुछ आदेशों के साथ रेल (न केवल डीबी पहुंच, बल्कि दृश्य और नियंत्रक) का उपयोग करके एक सीआरयूडी ऐप बना सकता हूं ।

(मेरे सिर के ऊपर से: नई परियोजना, प्रति इकाई 1 पाड़ कमान, 1 आदेश डेटाबेस को स्थानांतरित करने के लिए, 1 कमांड सर्वर शुरू करने के लिए।)

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

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


24
व्यक्तिगत रूप से मुझे गतिशील भाषाएं पसंद नहीं हैं। जब मैं अपनी IDE में सभी प्रकार की त्रुटियों को तेजी से देख सकता हूं और रीफैक्टरिंग साधनों का उपयोग कर सकता हूं, तो स्थिर भाषाएं मुझे अधिक उत्पादक बनाती हैं। आपको प्ले फ्रेमवर्क पर एक नजर डालनी चाहिए, यह एक वेब वेब फ्रेम है जो रूबी ऑन रेल्स से प्रेरित है और आपको जावा के साथ उत्पादक बनाता है।
जोनास

4
एक शक्तिशाली ढांचा, जैसे रेल का अर्थ यह भी है कि यदि कुछ खराब है, तो अधिकांश लोग इसे किसी और चीज़ से प्रतिस्थापित नहीं कर सकते, क्योंकि यह घटक ढांचे से बहुत तंग है। जावा के लिए, अगर मुझे हाइबरनेट पसंद नहीं है, तो मैं उदाहरण के लिए कैयेन या जेपीए जैसे कुछ और उपयोग कर सकता हूं।
Coyote21

2
जैसा कि कोई भी Django से लड़ रहा है, मुझे सिर्फ यह कहने की अनुमति दें: Coyote21 बिल्कुल सही है। आप पाँच मिनट में मूल CRUD को प्राप्त कर सकते हैं, लेकिन दूसरा आप व्यावसायिक तर्क जोड़ना शुरू करते हैं (जब यह रिकॉर्ड अपडेट हो जाता है, तो CRUD में इस तालिका में एक रिकॉर्ड सम्मिलित किया जाना चाहिए, और ...), आपको समस्याएँ मिल गई हैं ।
आषाढ़

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

आप मिनटों में Roo का उपयोग करके जावा में CRUD ऐप बना सकते हैं, ग्रेल्स के साथ एक ही बात (बिल्कुल जावा नहीं, लेकिन अभी भी JVM) प्ले 1.0 में जनरेटर / मचान थे, मुझे आश्चर्य है कि यह कहाँ गया ...
एरन मेडन

24

जावा को "उद्यम" होने के लिए हाल के वर्षों में तैनात किया गया है। स्टार्टअप के लिए स्पेक्ट्रम की दूसरी तरफ क्या है। वेब एप्लिकेशन डेवलपमेंट में आपको 4 चीजों की आवश्यकता होती है - आपके ऐप के लिए बहुत कम बदलाव करने के लिए दर्द रहित डेटाबेस एक्सेस, बढ़िया स्ट्रिंग हेरफेर, सिंटैक्स शुगर और रैपिड पुनरावृत्ति प्रक्रिया।

प्राथमिकता सूची में प्रदर्शन, मापनीयता और स्थिरता थोड़ी कम है।

साथ ही जावा को कोड करने के लिए बहुत अयोग्य भाषा है। इसे कल ही एक स्विच स्टेटमेंट में स्ट्रिंग का उपयोग करने की क्रांतिकारी क्षमता मिली। और javascript बहुत hackerish भाषा है इसलिए अपने frontend को विकसित करने के बाद जब आप java में वापस आते हैं तो आपको बहुत अड़चन महसूस होती है।

तो मुझे लगता है कि ये कारण हैं कि वेबस्टार्टअप जावा से बचते हैं।


12
दर्द रहित डीबी पहुँच? स्प्रिंग जेडडीबीसी या हाइबरनेट महान काम करते हैं। महान स्ट्रिंग हेरफेर? किसी भी परियोजना में स्ट्रिंग हेरफेर 5% से अधिक नहीं है। सिंटेक्स चीनी? आपको इससे क्या मतलब है? तेजी से चलने की प्रक्रिया? जावा के पास यह है (एक्लिप्स के अंदर टॉमकैट दर्द रहित है)। जावा अनफंड? केवल एक चीज गुम है अनाम कक्षाएं / लंबोदर / आदि। अन्य भाषाओं में "मज़ेदार" सुविधाएँ बाधा बनती हैं और चीजों को कम स्पष्ट करती हैं। स्विच में स्ट्रिंग्स ... हाँ, मैं मानता हूँ कि बेकार है (हालांकि, ज्यादातर समय, आप का उपयोग करना चाहिए)।
एलेक्स

4
@alex: Syntax sugarजावा का व्यावहारिक रूप से DSL के लिए उपयोग नहीं किया जा सकता है, उदाहरण के लिए, Play का कॉन्फिग और रूट फाइल Java फ़ाइल नहीं है, यह एक विदेशी सिंटैक्स में है जो django के सेटिंगहोम और urls.py से कम कहता है; कोई सूची समझ नहीं; महत्वपूर्ण डेटाैटिप्स (उदाहरण के लिए, सूची) डिफ़ॉल्ट रूप से आयात नहीं किए जाते हैं; मुहावरेदार एक-क्लास-प्रति-फ़ाइल वास्तव में रास्ते में मिलती है; और जावा एपीआई अनावश्यक रूप से क्रियाशील होते हैं। इसके अलावा, जब आप GET / POST पैरामीटर से प्राप्त तार के बीच स्विच कर रहे हों, तो आप enums का उपयोग नहीं कर सकते।
रेयान

4
@alex दिलचस्प है। मैं सी # में हर जगह जेनरिक का उपयोग करता हूं - हालांकि इसे बाहर से देख रहा हूं, यह शायद लामाओं की बढ़ती कार्यक्षमता के कारण है - इसलिए मैं एक के IRepository<T>साथ हो सकता हूं IQueryable<T> Where(Expression<Func<T, Boolean> Expression)। मुझे आश्चर्य है कि जब वे लैम्बदास हो जाते हैं तो वे जावा में अधिक लोकप्रिय हो जाएंगे? यह शायद एक आराम क्षेत्र की बात है, लेकिन जावा सिर्फ क्रिया को महसूस करता है - और बहुत पसंद है कि मुझे 50 अलग-अलग प्रकार की कार बनाने के लिए पर्याप्त बिट्स सौंपे गए हैं कोई गारंटी नहीं है कि कोई 2 भाग एक साथ फिट होंगे।
बेसिक

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

1
@ ब्रेंडन मैं वह दूसरा होगा। मैंने कभी नहीं, एक बार Node या Python / Django में कॉन्फिग इश्यू को लेकर संघर्ष नहीं किया। मैं रो के साथ धैर्य खो देता हूं। हमारे एंट / मावन / स्प्रिंग / हाइबरनेट / ग्रहण निर्भरता से ग्रस्त जावा कोडबेस आपके द्वारा कोड में आने से पहले भी एक भयानक दुःस्वप्न है।
एरिक रिपेन

18

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

डेवलपर्स से सबसे बड़ी शिकायतें मुझे सुनाई देती हैं

  1. सिंटेक्स बहुत लंबा है। बस हमें कुछ लिखने के लिए System.out.print लिखना होगा। आप वास्तव में संपादक की तरह एक साधारण VI का उपयोग नहीं कर सकते हैं और कुछ घंटों में कोड का एक काम कर सकते हैं।
  2. कमजोर परीक्षण रूपरेखा। हालाँकि जावा और रूबी में टेस्टिंग फ्रेमवर्क बहुत समान हैं, लेकिन रूबी टेस्टिंग के लिए आसानी से उपलब्ध होने वाली चीज बनाकर एक कदम आगे ले जाती है। यह विशेष रूप से सच है यदि आप अपने आवेदन में डीबी का बड़े पैमाने पर उपयोग कर रहे हैं। यहां तक ​​कि वेब फ्रेमवर्क के कई परीक्षण के बारे में नहीं सोचते हैं।
  3. टेम्प्लेट एक दर्द है। एक नूडल सूप में अपेक्षाकृत सरल भाषा बनाता है।
  4. शांत नहीं। अधिकांश जावा एप्लिकेशन विशाल कंपनियों में लिखे जाते हैं, जो कि ब्यूरोक्रेसी से जुड़ी है जो डेवलपर्स के साथ इतनी अच्छी तरह से नहीं जाती है। जब लोग सोचते हैं कि वे Google को जावा नहीं समझते हैं। गूगल == पायथन। यह भी है कि Y दिनों में X करने का संकेत देने वाली कोई किताब नहीं है।
  5. संकलन करना पसंद नहीं है। अधिकांश डेवलपर्स संकलन के लिए एक दशक पुरानी घटना है। यह 80 के सी के साथ समझ में आता है लेकिन मॉडर्न कंप्यूटर बहुत कुछ कर सकते हैं। वे संकलित भाषाओं में कोड नहीं लिखते हैं। जावा उन बहुत कम भाषाओं में से एक है जिन्हें संकलित किया जाता है और वेब एप्लिकेशन लिखने के लिए उपयोग किया जाता है।
  6. बहुत सारे ऊप्स कॉन्सेप्ट्स। भले ही डेवलपर्स ने चुपचाप ऊप्स डोमेन को अपनाया हो। वे इसे पूरी तरह से पसंद नहीं करते। वे पसंद नहीं करते हैं जब आप प्रत्येक वर्ग के साथ 10 कक्षाएं करते हुए एक आवेदन लिखते हैं। आप कभी-कभी चौखटे के साथ 100 की कक्षाओं को खोलते हैं और 100 की कक्षाओं में बातचीत की कल्पना करते हैं। पूरी प्रोग्रामिंग एक्टिविटी को एक विरेचन बनाता है। यह अधिकांश भाषाओं के साथ सच हो सकता है लेकिन मैंने देखा है कि जावा डेवलपर्स एक वर्ग क्या करता है, इस पर बहुत ध्यान दिया जाता है। इसके जावा डेवलपर्स जो अक्सर 100 की कक्षाओं के साथ एक कोड के साथ आते हैं। यह कई दृष्टिकोणों से अच्छा है लेकिन गैर जावा डेवलपर्स इससे नफरत करते हैं।

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


(२) जेबॉस अर्क्विलियन ( arquillian.org ) द्वारा आश्चर्यजनक रूप से संबोधित किया गया है । बाकी के बहुत सारे एक जावा मुद्दे की तुलना में एक जेएसएफ 2 मुद्दा है। सबसे बड़े मुद्दे IMO कर्व सीख रहे हैं और चौखटों की विशालता है, लेकिन यदि आप JSF2 से बचते हैं तो आप अच्छा प्रदर्शन कर सकते हैं।
क्रेग रिंगर

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

2
"जब लोग जावा समझते हैं तो वे Google को नहीं सोचते हैं।" ... मैं निश्चित रूप से एंड्रॉइड और उनके Dalvik VM (जो कि जावा VM है) के बारे में सोचता हूं जब मैं Google के बारे में सोचता हूं। मैं जीडब्ल्यूटी (जावा से जावास्क्रिप्ट की स्वचालित पीढ़ी) जैसे शांत सामान के बारे में भी सोचता हूं। यदि जावा पर "उच्च" एक कंपनी है, तो यह Google है। Apple या Microsoft से बहुत अधिक। दी गई, ओरेकल और आईबीएम Google की तुलना में जावा से अधिक संबद्ध हैं लेकिन फिर भी: जावा वीएम पर जावा ऐप चलाने वाले अरबों एंड्रॉइड डिवाइस बहुत मजबूत Google / जावा लिंक की स्थापना के बिना सोचने के लिए कुछ कठिन है।
सेड्रिक मार्टिन

इन टिप्पणियों में JSF2 फॉर्म @CraigRinger के प्रति बहुत नफरत है। :-) इसके बारे में क्या है जो आपको परेशान करता है? मैंने इसे शुरू करने के लिए जटिल पाया, लेकिन एक बार जब मैं जा रहा था, मैं इसे प्यार करता हूं । बेशक, मैं उससे पहले वसंत का उपयोग कर रहा था, इसलिए कुछ और सुधार की तरह लग रहा है ... :-)
ब्रायन नोब्लुच

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

14

जावा वेब डेवलपमेंट करने की रूपरेखाओं में सीखने की अवस्था काफी कम है, वे अक्सर आपकी ज़रूरत के लिए ओवरकिल होते हैं, और काम करने के लिए आवश्यक अप्रत्यक्ष चीज़ों के साथ काम करने के लिए बस ... दर्दनाक ... होता है।

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

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


फ्रेमवर्क ओवरकिल के लिए +1। इसकी पागल, वसंत j2ee मावेन चींटी हाइबरनेट हो रही है, आप अपना सारा समय xml config लिखने में खर्च करते हैं।
रिचर्ड

1
फ्रेमवर्क के लिए +1। न केवल मूल ढांचे के प्रयास थे P ** s पुअर (JSP, STRUTS), अब हमारे पास लगभग तीस ऐसे हैं, जिनमें से एक के रूप में भी रूर काम नहीं करता है।
जेम्स एंडरसन

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

14

यह लागत और रुझानों के लिए नीचे आता है। वेब 2.0 स्टार्टअप एक अंडर 30 दूरदर्शी द्वारा बनाया गया है, जिसके पास पैसे की तुलना में अधिक प्रतिभा है (मैं निश्चित रूप से सामान्य कर रहा हूं लेकिन यह वही है जो आप "औसतन" देखेंगे)। वह एक ऐसी भाषा का उपयोग करने जा रहा है जिससे वह परिचित है क्योंकि वह प्रोग्रामिंग कर रहा है (शायद कुछ दोस्तों के साथ)। वह सबसे अधिक आत्म-सिखाया प्रोग्रामर है।

जावा को एक उद्यम वातावरण के रूप में लक्षित किया गया है (जावा द्वारा, मेरा मतलब भाषा, रूपरेखा और मानकों से है)। महंगे साधनों का एक समूह है जो आईबीएम, ओरेकल और बीईए के दुनिया के उद्यमों को बेचना चाहते हैं।

जावा के साथ कुशल बनने के लिए कदम जटिल और / या महंगे हैं। मुझे पता है कि वहां परिदृश्य बदल रहा है लेकिन क्या बहुत देर हो चुकी है?

स्टार्टअप के बढ़ने के बाद ट्रैक्शन में तेजी आती है। प्रतिभाशाली डेवलपर्स की भर्ती करना मुश्किल है। अधिकांश "छह सप्ताह में एक प्रोग्रामर बन जाते हैं" प्रोग्राम जावा (या .NET) सिखाते हैं और बाजार "छह सप्ताह के प्रोग्रामर" के साथ संतृप्त है (अजीब तरह से मैंने डेवलपर्स को 7 साल के अनुभव के साथ रिज्यूमे के साथ देखा है जो अभी भी एक छह का ज्ञान दिखाते हैं सप्ताह प्रोग्रामर)। गैर-मुख्यधारा गैर-"एन्ट्रीप्रिसि" वातावरण का उपयोग करना छह सप्ताह के प्रोग्रामर के लिए एक प्राकृतिक फिल्टर हो सकता है। एक नौकरी की आवश्यकता के बाहर रूबी या स्काला सीखने के लिए समर्पण और व्यक्तिगत निवेश होता है। यह सबसे बड़ी मेरे लिए सूचक है संभावित एक उम्मीदवार के लिए।

ज्ञान अनुभव के साथ आता है लेकिन एक समर्पित / भावुक प्रोग्रामर उस समर्पण / जुनून के बिना किसी की तुलना में अधिक तेजी से (औसतन) ज्ञान प्राप्त करेगा। जैसे एक बच्चा जो गिटार बजाना पसंद करता है, वह सबक लेने वाले बच्चे की तुलना में जल्दी बेहतर हो जाएगा क्योंकि उसके पिता ने उसे बनाया था।


मुझे लगता है कि यह
sfrj

1
मैं उस पैराग्राफ से सहमत नहीं हूँ जो कहता है: वह सबसे अधिक संभावना एक स्व-सिखाया प्रोग्रामर है। यह इन दिनों असत्य है, आजकल 30 से अधिक लोग उस कार्यक्रम के सक्षम प्रोग्रामर हैं और कम से कम डिग्री है।
Coyote21

1
??? मैं प्रोटोटाइप वेब वेब पेंटिंग कर रहा हूं। मैंने उनके सक्षम होने के बारे में कुछ नहीं कहा। आप एक ही समय में स्वयं-सिखाया और सक्षम हो सकते हैं। मुझे यकीन नहीं है कि आप किस बात से असहमत हैं।
माइकल ब्राउन

1
यह मेरा जवाब होना था। जावा बहुत ही एकमात्र वर्तमान वेब तकनीक है जिसे डिज़ाइन नहीं किया गया है ताकि कोई भी सक्षम डेवलपर इसे उठा सके और इसका उपयोग कर सके। आपके जवाब का दूसरा भाग बहुत ज्यादा है जो पॉल ग्राहम ने द पायथन पर्डोक्स
user16764

14

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

मुझे यह भी लगता है कि आपके पास कम से कम PHP के साथ बहुत सारे डेवलपर्स हैं जो मुझे पसंद करते हैं जो 14/15 साल पहले स्थिर HTML के साथ शुरू हुआ था। जैसे-जैसे चीजें आगे बढ़ीं, हमने अपनी साइटों में PHP जोड़ना शुरू किया क्योंकि यह आसान, सरल और सस्ती थी। इन वर्षों में भाषा बढ़ी है और इसका विस्तार हुआ है और यह विनम्र शुरुआत से परे है। अब मैं जो कुछ भी सोचता हूं वह वास्तव में ऐसा नहीं है।

फ्लिप की ओर सबसे अधिक PHP देवता मुझे पता है कि यह विशाल रूप से जटिल 800lb गोरिल्ला के रूप में जावा को देखता है, लगभग 18 व्हीलर सेमी ट्रक को किराने की दुकान तक नीचे ले जाने और रोटी पाने के लिए।

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


3
मैं PHP के 9000 से अधिक बिल्ट-इन तरीकों पर अधिक विकल्प और थोड़ी अधिक जटिलता ले जाऊंगा।
कालेब ब्रेज़े

1
PHP सेटअप करना इतना आसान है।
बारफील्डम

9
लेकिन यह सिर्फ इतना अच्छा कोड लिखने के लिए कठिन बनाता है ... सेटअप करने के लिए आसान, शुरू करने के लिए आसान, कम उबाऊ नहीं होना चाहिए मानदंड आप एक भाषा का चयन करने के लिए उपयोग करते हैं। अच्छी प्रोग्रामिंग के लिए अनुशासन, धैर्य और प्रयास की आवश्यकता होती है ... यदि आपके पास चुनते समय यह नहीं है तो यह एक बुरा संकेत है ...
एलेक्स

जब तक वे दोनों बदबू नहीं करते लेकिन एक दूसरे की तुलना में स्थापित करने के लिए एक पीआईटीए के बहुत अधिक है।
एरिक रेपेन

12

मेरी टीम और मैं वर्तमान में जावा 6 + स्ट्राइप्स में एक ग्रीनफील्ड वेब एप्लिकेशन विकसित कर रहे हैं । पिछले वर्ष के भीतर मैंने जावा 6 + स्टेपलर (हडसन / जेनकिंस की प्रसिद्धि के कोहसके कवगुची द्वारा विकसित एक अज्ञात वेब फ्रेमवर्क) का उपयोग करके एक और ग्रीनफ़ील्ड वेब एप्लिकेशन पर भी काम किया।

जावा का उपयोग आधुनिक वेब विकास के लिए किया जाता है। निश्चित रूप से इसमें रूबी या अन्य गतिशील भाषाओं की "सेक्सी" अपील नहीं है, लेकिन एक परियोजना के पैमाने पर शुरू होने से मैं आश्वस्त हूं कि गतिशील भाषाएं एक अच्छी चीज हैं।

आधुनिक जावा ऐप सर्वर प्रदर्शन के मामले में ASP.NET के साथ बहुत प्रतिस्पर्धी हैं, और दोनों किसी भी गतिशील भाषा वीएम जिसे मैं जानता हूं, की तुलना में तेजी से परिमाण के आदेश हैं।

मुझे गलत मत समझो ... मैं यह नहीं कह रहा हूं कि जावा हमेशा सबसे अच्छा विकल्प है (दूरस्थ रूप से नहीं!) - लेकिन न तो यह हमेशा एक गलत या "पुराना" विकल्प है।


1
मैं "तेज" से असहमत हूं। सिद्धांत रूप में उन्हें होना चाहिए लेकिन वहाँ कुछ बड़े पैमाने पर php साइटें हैं और प्रदर्शन समस्याओं के बारे में लगभग सभी उपाख्यान MySQql या अन्य अंतर्निहित डेटाबेस से संबंधित हैं। दूसरी ओर लगभग हर J2EE ऐप मैं प्रदर्शन से पहले आवश्यक व्यापक ट्यूनिंग के संपर्क में आया था, यहां तक ​​कि स्वीकार्य भी था।
जेम्स एंडरसन

1
@ नाम: क्या आपके पास अस्पष्ट उपाख्यानों के अलावा कुछ भी है जो इसे वापस करने के लिए है? सभी शीर्ष -10 वेबसाइटें या तो प्रबंधित प्लेटफार्मों पर चल रही हैं (अमेज़न जावा पर ट्विटर, स्काला IIRC पर ट्विटर, जावा और C ++ के कस्टम बैकएंड पर Google) या फिर उनके पास अत्यधिक अनुकूलित बुनियादी ढाँचा है (फेसबुक और विकिपीडिया में PHP का उपयोग करें, लेकिन उन दोनों के पास भारी मात्रा में कस्टम देशी कोड गति के लिए है)। जावा नियमित रूप से बेंचमार्क में गतिशील भाषाओं को बेहतर बनाता है। मैं जावा zealot नहीं हूं, लेकिन प्रदर्शन जावा की समस्या नहीं है।
डैनियल प्रेडेन

जावा के साथ कोई प्रदर्शन समस्याएं नहीं हैं "सी के रूप में बहुत तेज़ नहीं है लेकिन किसी भी चीज़ की तुलना में तेज़"। हालांकि J2EE, प्लस फ्रेमवर्क, प्लस ORM, प्लस डिपेंडेंसी इंजेक्शन, प्लस ओवरकिल डिजाइन लगभग प्रदर्शन नहीं करने की गारंटी है; छिपी हुई अड़चनों और अप्रत्याशित बातचीत के लिए बहुत अधिक संभावनाएं हैं
जेम्स एंडरसन

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

1
@ बैसिक: पीछे से क्या? जब मैंने पहली बार यह उत्तर लिखा था, तब से डेढ़ साल में, मैं वर्तमान में Google पर काम कर रहा हूं, और मैं आपको आश्वस्त कर सकता हूं कि Google पर वेब एप्लिकेशन विकास के लिए जावा का बहुत अधिक उपयोग किया जाता है। बेशक, Google की ज़रूरतें कई अन्य कंपनियों की ज़रूरतों से बहुत अलग हैं, लेकिन जावा पूरी तरह से एक अलग जानवर है जब आप सही पुस्तकालयों और रूपरेखाओं का उपयोग करते हैं - बस कुछ चीजों की जाँच करें जो Google के पास खुली-खट्टी (गुवा, गुएस,) हैं GWT, प्रोटोकॉल बफर, आदि)।
डैनियल प्राइडेन

12
  1. जावा PHP / Python / Ruby से सीखने के लिए अधिक जटिल है
  2. जावा पारिस्थितिकी तंत्र बहुत जटिल है, बहुत बड़ा और शुरुआती लोगों के लिए काफी भ्रामक है
  3. जावा से जुड़ी नकारात्मक प्रतिष्ठा के साथ कई ऐतिहासिक रूप से खराब ढांचे हैं, आपको यह जानना होगा कि समय बर्बाद करने से बचने के लिए कौन से ढांचे हैं
  4. जावा बिल्ड टूल जटिल (मावेन और चींटी) का रास्ता है
  5. जावा में एक मॉड्यूल सिस्टम नहीं है जिसका उपयोग करना आसान है (OSGI रास्ता बहुत जटिल है)
  6. एक्सेल जैसे जावा आईडीई, जबकि अद्भुत सुविधाओं के साथ बहुत शक्तिशाली, बहुत सारे अनुभव के बिना प्रभावी वेब विकास के लिए कॉन्फ़िगर करना मुश्किल है।
  7. यदि आप एक सर्वर के रूप में टॉमकैट या जेट्टी के अलावा कुछ भी उपयोग कर रहे हैं तो आप वेबस्फीयर / वेबलॉजिक / जेबीओएसएस के लंबे स्टार्टअप समय से निराश होंगे
  8. जावा ईई उन समस्याओं को हल करता है जो कई लोगों के पास वितरित लेनदेन जैसे नहीं हैं

पेशेवर विकास में शामिल एक नया डेवलपर जावा को ऑर्डर ऑफ मैग्नेट का पता लगाएगा, जो रेल, अजगर, या php की तुलना में कठिन है ताकि वे आसानी से सीख सकें।

उपरोक्त सभी कहने के बाद, मैंने अपने स्टार्टअप के लिए जावा का उपयोग करने का निर्णय लिया क्योंकि ठीक से कॉन्फ़िगर किया गया जावा डेवलपमेंट वातावरण में काम करने के लिए बहुत उत्पादक है। ठीक से कॉन्फ़िगर करने का मेरा मतलब है।

  1. कम से कम 10 सेकंड का स्टार्ट-अप समय
  2. ठीक से कॉन्फ़िगर किए गए ग्रहण कार्यक्षेत्र, एक सभी चौखटे के साथ घूम और कॉन्फ़िगर किया गया
  3. पुस्तकालयों का अच्छा चयन (स्प्रिंग, स्प्रिंग एमवीसी, स्प्रिंग सोशल, स्प्रिंग सिक्योरिटी, जेपीए, हाइबरनेट, वेलोसिटी, .... आदि)
  4. एसएसडी के साथ फास्ट डेवलपर मशीनें
  5. ओरेली सफारी सदस्यता

8
हालांकि स्पष्ट होना चाहिए। भाषा जावा, सीखना मुश्किल नहीं है। यह जावा के साथ काम करने के लिए बनाई गई बकवास की सभी परतें हैं इसकी कमियों के लिए बनाने के लिए (क्रिया, सभी गेटआउट के रूप में अनम्य होने के नाते, अपने आप को और अपने साथियों से आपकी रक्षा करना, पुस्तकालयों की बेतुकी मात्रा निर्भर है, आदि ...) यह एक PITA है सीखना।
एरिक रेपेने

2
@ErikReppen बहुत सच है। मैं एक जावा परियोजना पर काम कर रहा हूँ, लेकिन .Net में एक पृष्ठभूमि है। भाषा और वाक्यविन्यास कुछ भी आसान है क्योंकि मुझे समझ में आ गया है। यह वाचालता है जो वास्तव में मुझे पागल कर रही है। 1 लाइन में जो मैं अब उपयोग करता था वह 5-10 लेता है और (अक्सर) एक XML कॉन्फिग फाइल एडिट करता है। यह उल्लेख करने के लिए कि घंटों पढ़ने पर घंटों खर्च किए बिना, नौकरी के लिए "सही" रूपरेखा चुनना एक बुरा सपना है - और इससे पहले कि आपको पता चले कि आपके परिदृश्य को एक किनारे का मामला माना जाता है, समर्थित नहीं है और यदि आपको पसंद नहीं है यह, इसे फिर से लिखना। मैं अपना समय बड़ी समस्याओं को सुलझाने में बिताना चाहता हूं
बेसिक

"जावा अधिक जटिल है" - क्या कोई भी PHP strposया के लिए पैरामीटर के आदेश को याद कर सकता है in_array? और PHP के XML DOM इंटरफ़ेस हास्यास्पद है (उन्हें पुनः प्राप्त करने के लिए तार के लिए कास्ट विशेषताएँ?)। OSGi बिल्कुल शानदार और भाषा-स्वतंत्र है।
jevon

@ जेवॉन: PHP डॉक्स बहुत अच्छे हैं और मेरी आईडीई मुझे वैसे भी याद दिलाने के लिए उत्सुक है। इसके अलावा, SimpleXML।
दानमैन

12

लगभग 5 साल पहले, मुझे और एक सहयोगी को कुछ आंतरिक परियोजना के लिए एक प्रोग्रामिंग कार्य दिया गया था। एक साधारण पर्याप्त कार्य जिसे कमांड पार्सिंग की आवश्यकता थी।

मैं पूरी तरह से जावा कोड की लगभग 80 लाइनों में आया और मेरे सहयोगी ने एक सप्ताह में, लगभग 20 जावा वर्ग और बहुत अधिक जावा कोड की लाइनों को एक जैसा करने के लिए लिया। कहने की जरूरत नहीं है, उसका कोड चुना गया था।

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

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

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

गतिशील भाषाओं को स्केल करने के लिए, जेवीएम दशकों के शोध का परिणाम है। रूबी आदि के लिए बहुत कुछ हो रहा है।

स्काला एक भाषा है जो मुझे पता है कि बहुत ही चतुर और व्यावहारिक है। खेल! Scala के साथ वेब / एंटरप्राइज़ एप्लिकेशन डेवलपमेंट के लिए बस उतना ही उत्कृष्ट है जितना कि वहाँ।

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


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

11

हाल ही में एक साक्षात्कार में, Google plus के लिए एक तकनीकी लीड जोसेफ स्नायर ने बताया कि कैसे एप्लिकेशन बैक एंड के लिए जावा सर्वलेट्स का उपयोग करता है और फ्रंट एंड पर जावास्क्रिप्ट।

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

मुझे लगता है कि यह कारण है कि बहुत सारे स्टार्ट-अप अन्य तकनीकों का उपयोग कर रहे हैं, क्योंकि वे सेक्सियर हैं और उनके पीछे एक खुला स्रोत धक्का है।


4
स्टार्ट-अप अन्य तकनीकों का उपयोग करते हैं क्योंकि वे इसे अभी पूरा करना चाहते हैं। बाद में नहीं। और वे इसे 30 लोगों की तरह नहीं, बल्कि 30 लोगों से करवाने के लिए गए।
एरिक रेपेन

किसी व्यक्ति को उद्धृत करना केवल उसके विचार और उसकी पसंद प्रदान कर सकता है, लेकिन यह मान्य नहीं करता है कि उसने जो भी चुना / वह सही निर्णय था।
DivKis01

9

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


9
बिलकुल नहीं! वास्तव में जावा सर्वर साइड की दुनिया में एक प्रमुख भाषा है। शायद दशक पहले बुझ गए सेब।
चिरौं

5
Flash ने वही किया जो Applets ने करने की कोशिश की। क्विक स्टार्ट अप, फास्ट डाउनलोड, कम मेमोरी फुटप्रिंट।

4
मैं ऐसे बहुत से लोगों को जानता हूं जो जावा और जावास्क्रिप्ट के बीच अंतर नहीं कर सकते हैं। हालांकि वे पूरी तरह से असंबंधित हैं। यह एक और बात है जो जावा को एक बुरा नाम देता है।
किबी

5
@ तिब्बती ... या यह जावास्क्रिप्ट को एक बुरा नाम देता है :)
मैथ्यू सिनचकेल

9

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

Google जैसी कंपनी बड़े पैमाने पर चीजों के निर्माण की विलासिता को बर्दाश्त कर सकती है, भले ही वे अपना समय बर्बाद कर रहे हों, ताकि वे कुछ ऐसा कर सकें जिसके लिए कोई उपयोगकर्ता नहीं मिल सकता है, क्योंकि वे नुकसान को अवशोषित कर सकते हैं।

कम से कम, यह मेरी राय है, कि कई "शांत", "कूल्हे", "आधुनिक" कंपनियां छोटी टीमों के साथ छोटे ऐप बनाती हैं जहां चलना गति और सादगी सबसे बड़ी आवश्यकताएं हैं।


1
आपके स्रोत ने कहा कि स्टार्टअप जावा का उपयोग नहीं करते हैं? कृपया कुछ तथ्यों के साथ अपनी धारणा का बैकअप लें।
वाल्टर

7

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

ऐसा कहने के बाद, मैंने PHP और C # में भी एप्लिकेशन लिखे हैं, और वे सिर्फ बेहतर काम करते हैं, और जावा की तुलना में कहीं अधिक क्षमाशील हैं। इससे भी अधिक, रूबी ऑन रेल्स विशेष रूप से तेजी से अनुप्रयोग विकास के लिए लिखा गया था, जो कि रॉबी ने कहा, डेटाबेस में आसान सीआरयूडी की अनुमति दें। समस्या यह है कि आपके द्वारा विकसित की जा रही अधिकांश वेब साइट्स को अनुकूलन के स्तर की आवश्यकता नहीं है जो जावा प्रदान करता है (और आपको प्रदर्शन करने की आवश्यकता है)। इसके अतिरिक्त, प्रत्येक DB कनेक्शन ऑब्जेक्ट को हाथ से लिखा जाना चाहिए और इसे आसान बनाना आसान नहीं है। आसपास एक बेहतर ढांचा हो सकता है, विशेष रूप से एक जो जावा 7 की नई गतिशील भाषा समर्थन सुविधाओं का लाभ उठाता है , लेकिन मैंने अभी तक शोध नहीं किया है।


3
आपके पास प्ले फ्रेमवर्क पर एक नज़र होनी चाहिए यह एक जावा वेब फ्रेमवर्क है जो आपको जावा के साथ उत्पादक बनाता है और रूबी ऑन रेल्स से प्रेरित है।
जोनास

2
@ जोनास, यह सब अच्छी तरह से समझाते हुए कुछ अच्छे ब्लॉग पोस्ट लिखने पर विचार करें।

@ जोनास थोरजॉर्न ने क्या कहा! मैं इसे पूरी तरह से पढ़ता हूँ। :)
ब्रायन

@ थोरबजर्न: मेरे पास ब्लॉग नहीं है। संक्षेप में: Play फ्रेमवर्क के साथ आप बस अपने जावा स्रोत कोड को सहेजते हैं, और फिर वेब-ब्राउज़र को अपडेट करते हैं। एक्लिप्स कंपाइलर का उपयोग करके कोड स्वचालित रूप से सर्वर-साइड संकलित किया जाता है। JPA का उपयोग डेटाबेस एक्सेस के लिए किया जाता है। यहाँ इसके बारे में एक लेख खेलें! फ्रेमवर्क उपयोगिता
जोनास

2
@ Thorbjørn & ब्रायन: प्ले फ्रेमवर्क वेबसाइट के फ्रंट पेज पर वीडियो देखें, यह बहुत अच्छी तरह से बताता है कि मैं कहूंगा।
बजरैक फ्रायंड-हैन्सन

7

सरल उत्तर: आधार उत्पादकता के लिए सीखने की अवस्था।

RoR जैसी फ्रेमवर्क आधारित प्रणालियाँ भाषा / वाक्य-विन्यास में "जादू" डालने का काम करती हैं। अपने मूल आरओआर सिंटैक्स पर रैंप करना और ऐप प्राप्त करना और जाना बहुत आसान है।

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

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

लेकिन अगर आप फेसबुक और ट्विटर को देखते हैं, तो जैसा कि उन्होंने विस्तार किया, उन्हें ऐसी चीजें मिलीं जो बॉक्स फ्रेमवर्क से बाहर नहीं हो सकती थीं और इसलिए उन्हें निचले स्तर की तकनीकों का उपयोग करना पड़ा।

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


6

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


6

Google ऐप इंजन जावा का समर्थन करता है, जिससे आप अपने पूरे वेब ऐप को जावा में ग्रहण कर सकते हैं, ग्रहण को आईडीई और परिनियोजन इंटरफ़ेस के रूप में, उचित रूप से प्रलेखित Google एपीआई के साथ - तो मैं यह नहीं कहूंगा कि इसका उपयोग नहीं किया गया है या नहीं। प्रयोग करने योग्य।


5

स्टार्टअप में मैंने अपने एपीआई को लागू करने के लिए जावा और जेरी दोनों का उपयोग करने के लिए चुना है क्योंकि वे एक-दूसरे के पूरक हैं।

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

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

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

कुंजी सभी जावा ईई सामान से बचने के लिए है - यह बहुत बड़ा और बोझिल और विरोधी चुस्त है।


5

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

उस ने कहा, सभी मूल प्रश्नों पर टिप्पणी करते हुए ...

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

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

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

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

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


5

यह सच है, लेकिन जावा और इसके पारिस्थितिकी तंत्र के कारण नहीं। यह लोगों की वजह से है, जब जावा का उपयोग करते हुए बड़ी गड़बड़ और भारी घृणा पैदा करते हैं।

पर्याप्त चौखटे (स्प्रिंग-एमवीसी, ग्रेल्स, प्ले, आदि) हैं जो आपको चीजों को तेजी से बनाने की अनुमति देते हैं। तथ्य यह है कि लोगों को उनके सिस्टम पर काबू पाने में एक समस्या है जो बढ़े हुए ज्ञान के साथ आती है जब लोग जावा पारिस्थितिकी तंत्र के साथ काम करते हैं - तो आप कई और चीजों को जानते हैं, और आप उन्हें उपलब्ध हैं (हर चीज के लिए उपकरण हैं), और "सब कुछ दिखता है" एक कील"।

यदि आप "हैकी" हैं, तो आप जावा के साथ अन्य भाषाओं की तरह ही बहुत कुछ कर सकते हैं, और यहाँ एक अध्ययन यह दर्शाता है कि:

49 प्रोग्रामर का अध्ययन: स्थिर प्रकार की प्रणाली का विकास के समय पर कोई प्रभाव नहीं पड़ा ... http://www.cs.washington.edu/education/courses/cse590n/10au/hanenberg-oopsla2010.pdf


3

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

यदि आपके पास आज एक विचार है, जहां से आप अपने वेब एप्लिकेशन को लिखने के लिए जा रहे हैं, तो नीचे गिरना लगभग आसान है, चाहे आप एक होस्टिंग प्रदाता या अपना खुद का बुनियादी ढांचा चुनें (जैसे कि ईसी 2 छवि)। मेरे अनुभव में जावा चुनना, आमतौर पर अधिक काम है, और अक्सर लागत भी अधिक होती है।

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


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

3

कौन कहता है कि यह नहीं है?

स्प्रिंग MVC + स्प्रिंग डेटा JPA या Mongo + Thymeleaf के लिए टेम्प्लेटिंग + कॉफी-मावेन-प्लगइन से कॉफी के लिए जेएस ट्रांसप्लांटिंग और आप जाने के लिए अच्छे हैं।


मैं आपसे पूरी तरह सहमत हूँ +1
अरशद अली

3

कई लोग J2EE की भयावहता के साथ जावा और वेब एप्लिकेशन डेवलपमेंट को जोड़ सकते हैं, जो बड़े नीले और लाल निगमों से राक्षसी J2EE एप्लिकेशन सर्वरों के साथ बंडल किया गया था, जो मूल "हैलो वर्ल्ड" के ऑनलाइन होने से पहले हफ्तों के बराबर थे।

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

यह अभी भी जावा में वेब अनुप्रयोग विकास करने का मानक-आधारित तरीका है। विकल्प, जिनमें से कई अन्य उत्तरों में उल्लिखित हैं, बनाने के लिए बहुत अधिक विकल्पों के साथ एक अधिक मिश्रित और भ्रमित तस्वीर व्यक्त करते हैं।

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


जावा ईई 6 "हल्का वजन" (जेएसएफ 2 को छोड़कर) हो सकता है लेकिन यह अभी भी एक अविश्वसनीय रूप से विशाल सीखने की अवस्था, जटिल विनिर्देशों का एक विशालकाय ढेर, और एक बेहद जटिल स्तरित प्रणाली है। हल्का हो सकता है, लेकिन यकीन है कि सरल नहीं है।
क्रेग रिंगर

2

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

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.