“प्रोग्रामिंग भाषाएँ दो तरह की होती हैं। एक वे जिनकी लोग शिकायत करते हैं, और दूसरी वे जिन्हें कोई इस्तेमाल नहीं करता।” — Bjarne Stroustrup.
“Java की आलोचना और शिकायत करने वाले लोग आमतौर पर युवा होते हैं, और लगता है कि वे किसी भी दूसरी चीज़ की तुलना में JavaScript के ज़्यादा संपर्क में रहे हैं। JS की तुलना में Java थोड़ा भारी और सीमित लग सकता है। हर जगह boilerplate है, और compiler द्वारा सख्ती से लागू किया जाने वाला type system भी है। लेकिन अगर विकल्प दिया जाए, तो मैं JS की बजाय एक non-optimal Java codebase चुनूँगा। इसमें कोई शक नहीं।”
“जब आप दर्जनों या सैकड़ों files में फैले code के साथ काम करने का वास्तविक अनुभव हासिल कर लेते हैं, तभी आपको समझ में आने लगता है कि Java की तथाकथित 'सीमाएँ' दरअसल ऐसे सुरक्षा उपाय हैं जो आपको खुद अपने पैर पर कुल्हाड़ी मारने से बचाते हैं.”
“Java को खोज पाना और फिर उस पर वापस लौटना एक तरह का रहस्योद्घाटन था। मुझे एहसास हुआ कि मैं Java और उसके ecosystem से प्यार करता हूँ। इसलिए मैंने Java ecosystem की अपनी कुछ पसंदीदा बातों को लिखने का फैसला किया। तो अगर कोई Java को बुरा-भला कहे, तो यहाँ 25 कारण हैं जिनसे आप बता सकते हैं कि वे क्यों गलत हैं।”
- परिपक्व ecosystem
- WRITE ONCE, RUN EVERYWHERE
- पिछली versions के साथ compatibility (Backward compatibility)
- Strongly Typed भाषा
- तेज release cycle, लगातार सुधार
- अच्छे IDEs
- GraalVM का Native Image support
- open source libraries और frameworks
- multithreading
- परिपक्व object-oriented model
- memory management और garbage collection
- observability और monitoring
- functional programming support
- समृद्ध documentation
- build tools और dependency management
- मज़बूत testing capabilities
- विशाल community
- annotations
- security features
- समृद्ध API set
- performance
- structured concurrency
- virtual threads
- Switch statements के लिए pattern matching
- string templates
62 टिप्पणियां
Java के फ़ायदे के तौर पर जो कुछ भी लिखा गया है, वह दरअसल ऐसी बातें लगती हैं जिनमें Java के अलावा दूसरी भाषाएँ कहीं बेहतर हैं।
कोई भी Spring का ज़िक्र नहीं कर रहा है।
मुझे Java भाषा खुद से कोई शिकायत नहीं है,
लेकिन हमारे यहाँ की यह हक़ीक़त कि Spring सीखना ही पड़ता है, कुछ घुटन भरी लगी, इसलिए यह मुझे ज़्यादा आकर्षक नहीं लगा।
Java अच्छा है, लेकिन Spring... भयानक है sob
सभी 25 में कोई अलग पहचान नहीं है। सम्मान अपनी जगह, लेकिन यह legacy जश्न में जुटे लकड़बग्घों जैसा है।
2024 में भी इसके अब भी लोकप्रिय होने के 25 कारण बताए गए हैं
लेकिन लगता है कि Java न भी हो, तब भी उसकी जगह लेने के लिए पर्याप्त भाषाएँ मौजूद हैं...
लोकप्रिय तो JVM है।
ज़्यादातर कारण आधुनिक दूसरी भाषाओं के ecosystem से तुलना करने पर
कोई खास strong point नहीं लगते, और ऐसा लगता है कि लेखक ने Spring और Java को अलग किए बिना ही यह लेख लिखा है।
Java जैसी भाषा को पसंद करना स्वाभाविक है, क्योंकि उसका development environment अच्छी तरह से बना हुआ है.
इसी तरह, उसी environment के भीतर काम करने पर ही अच्छा performance निकलता है, इसलिए उसी environment में काम करना चाहने लगते हैं, और अगर कोई दूसरा environment मांगा जाए तो एक तरह की असहजता भी महसूस होती है.
लेकिन आगे चलकर AI ऐसी भाषाओं में coding और बेहतर करेगा, और अपनी सुविधाजनक environment से बाहर भी अलग-अलग environment में टिके रहने की adaptability पहले से कहीं ज़्यादा जरूरी लगती है.
इस लिहाज़ से, अब अलग-अलग भाषाओं के प्रति adaptability कोई विकल्प नहीं बल्कि अनिवार्यता जैसी लगती है.
अगर Entries web app बनानी हो तो मैं बिना किसी शक के java ही इस्तेमाल करूंगा। सिर्फ पहला कारण ही काफी है... अगर डेवलपमेंट सरल और तेज़ करना हो, तो लगता है Python बेहतर है। Js तो... मुझे वह उलझाऊ लगता है, इसलिए चिढ़ होती है।
अगर Java करना ही है तो मैं Kotlin करूंगा, और मुझे लगता है कि Java जैसी language की तुलना में .NET ecosystem की languages, Kotlin की प्रगति के साथ ज़्यादा बेहतर तालमेल बिठा रही हैं.
मेरे हिसाब से Java का इस्तेमाल अब पहले से Java पर बने सरकारी संस्थानों के सर्वरों की maintenance language के रूप में रहना बेहतर होगा; कोरिया के CEO लोग विज्ञापनों में देखे गए Java शब्द से परिचित होने के कारण Java पर अड़े रहने की प्रवृत्ति रखते हैं. Kotlin और .NET का अनुभव करने के बाद Java पर विचार कीजिए.
दोस्तों, Java की बात निकली है तो एक बात कहूँ... Go कैसा है? सच कहूँ तो मुझे Java से ज़्यादा Kotlin पसंद है, लेकिन Gradle के साथ इतनी बार निराशा झेल चुका हूँ कि अब बस Go पर ही टिक गया हूँ। थोड़े समय के इस्तेमाल के आधार पर मुझे लगा कि जहाँ भी Java की ज़रूरत होती है, वहाँ शायद Go से भी काम चल सकता है。
JS/TS के मामले में मुझे वह भी पसंद है, लेकिन फिर भी उसे Java के समान स्तर पर रखकर तुलना करना थोड़ा मुश्किल लगता है। आखिरकार single-thread की सीमा तो है ही, और pm2 वगैरह से multi-processing करते हैं, लेकिन Java में virtual thread भी काफ़ी अच्छी तरह मौजूद है, और सच कहूँ तो मुझे यही ज़्यादा बेहतर लगता है। हाँ, फिर सोचते-सोचते goroutine देखा और मैं आखिरकार Go पर ही टिक गया... haha;;;
मेरा मानना है कि ज़रूरत के हिसाब से सही जगह पर सही भाषा का इस्तेमाल करना सबसे अच्छा है। मैं आज 2024 में भी PHP भाषा से उतना ही प्यार करता हूँ, और JS, Java(Kotlin) से भी—भले ही Go जितना नहीं—फिर भी लगाव है। भाषा तो एक tool है, इसलिए अगर उसे उसके मकसद के हिसाब से ठीक से इस्तेमाल किया जाए, तो वही काफ़ी है—इसी सोच के साथ यह टिप्पणी लिख रहा हूँ।
मुझे लगता है कि अब यह सचमुच इस्तेमाल करने लायक स्तर तक पहुँच गया है। मैं भी कंपनी में सिर्फ go से ही काम करता हूँ।
पहले जब godep और glide इस्तेमाल करते थे, तब dependency ज़रा भी गड़बड़ा जाए तो उसे फिट बैठाने में पूरा दिन निकल जाता था, और सोचता था कि यह वाकई कोई language है भी या बस language जैसी कोई चीज़... 😂
भले ही single-thread की सीमाएँ हों, लेकिन कंटेनर में लपेटकर एक pod पर CPU का इस्तेमाल ज्यादा न होने दिया जाए और orchestration किया जाए, ऐसे दौर में क्या वह सीमा सच में इतनी बड़ी है? मुझे तो यही लगता है।
पहले की तरह एक ही server पर कई containers चलाने के बजाय, अगर वह container CPU बहुत ज्यादा खा रहा हो तो बात अलग है।
ज़्यादातर web servers के मामले में CPU का इस्तेमाल बहुत ज्यादा नहीं होता और IO throughput अधिक होता है, इसलिए मुझे लगता है कि Node भी एक विकल्प के रूप में लिया जा सकता है।
बेशक, अगर domain CPU-intensive है, तो किसी दूसरी language पर विचार किया जा सकता है, या
napiके ज़रिए native code भी बुलाया जा सकता है।मुझे लगता है कि goroutine की वजह से async काम अच्छी तरह abstract हो जाता है, इसलिए यह async काम के लिए उपयोगी भाषा है। Rust या Python का async code मुझे कुछ ज़्यादा ही सोचा-समझा हुआ लगता है। उसे लिखने और पढ़ने, दोनों में cognitive load काफ़ी अधिक होता है।
मैंने केवल generic शामिल होने से पहले का Go इस्तेमाल किया है, और मुझे लगता है कि यह एक बेहतरीन भाषा है। शुरुआत में इसके tools वाकई बहुत कमजोर थे, लेकिन अब उनमें काफी सुधार हुआ है.
इसका syntax थोड़ा खुरदुरा है, लेकिन इसी वजह से इसे सीखना आसान है।
कृपया बहस मत कीजिए....
चर्चा गरमाती जा रही है.
यदि आपके पास कोई आपत्ति है, तो कृपया केवल वही बात लिखें.
साइट के उपयोग नियमों के विरुद्ध जाने वाली टिप्पणियाँ हटा दी गई हैं.
साथ ही, नियमों के अनुरूप न होने वाली गतिविधियाँ बार-बार करने वाले अकाउंट्स को ब्लॉक किया गया है, कृपया इसे ध्यान में रखें.
कृपया स्वस्थ चर्चा बनाए रखें.
Java 1.8 वाकई एक शानदार version है!
मुझे लगता है कि
write once run everywhereअब थोड़ा छोड़ देने लायक नारा है.. हाहालेकिन यही तो Java है! lol
IDEA में Java से कोडिंग करना आनंददायक है, लेकिन अगर IDEA नहीं होता तो मैं दुखी होता। (और पहले था भी)
देश में hiring के फायदे भी हैं, eGovFrame भी है, और यहाँ तक कि इसे "Java गणराज्य" कहा जाता है, इसलिए Java developers भी बहुत हैं।
कई बार कंपनियाँ दूसरी भाषाओं से Java में switch भी करती हैं, लेकिन मेरे अनुभव में कुछ? Java developers सिर्फ Java ही करना चाहते हैं।
वे कहते हैं कि पहले से बनी दूसरी भाषाओं की systems में समस्या है, इसलिए Java में switch करना चाहिए। लेकिन फिर वे Kotlin भी नहीं करना चाहते।
मुझे लगा कि कुछ नया सीखने को लेकर उनमें एक तरह की हिचकिचाहट है। जैसे, जब सब कुछ Java में ही किया जा सकता है तो फिर क्यों?
SI में काम करने वाले लोग क्या generics इस्तेमाल नहीं करते?
लगता है आप कह रहे हैं कि वही समस्या है.. हाहा
इस स्तर पर तो Java किसी धर्म जैसा लगता है।
Java की आलोचना और शिकायत करने वाले लोग आमतौर पर युवा होते हैं, और लगता है कि वे किसी भी चीज़ से अधिक JavaScript के संपर्क में रहे हैं।अगर इस बात को उलटकर देखें, तो इसका मतलब यह भी हो सकता है कि जिन्होंने js इस्तेमाल किया है, उन्होंने अनुभव से पाया कि java उतना खास नहीं है।
आखिर यह मानने के बजाय कि हर चीज़ के अपने-अपने फायदे और नुकसान होते हैं, सिर्फ यही क्यों कहा जाता है कि java बेहतर है...
document db इस्तेमाल किए बिना, उसकी विशेषताओं वगैरह की परवाह किए बिना सिर्फ sql अच्छा है कहने वाले लोगों जैसा ही है।
मुझे लगता है कि लोग इस तथ्य को नज़रअंदाज़ कर रहे हैं कि पहले से ही java बहुत इस्तेमाल हो रहा था, और बहुत से senior developers सिर्फ java ही जानते हैं और वही लोग बदलना नहीं चाहते, इसलिए बदलाव नहीं हो पा रहा। अभी के समय में देखें तो मुझे लगता है कि java की अपनी अलग ताकतें लगभग न के बराबर रह गई हैं।
मेरे लंबे अनुभव में, मुझे लगता है कि Python और JS में कट्टर प्रशंसकों का अनुपात ज़्यादा है।
मुझे लगता है कि शायद यह इसलिए ज़्यादा दावे वाला महसूस हो सकता है क्योंकि बात Java भाषा की बजाय JS/Python को ज़्यादा appeal करने की स्थिति से की जा रही है।
व्यक्तिगत रूप से, मैंने कुछ ऐसे लोगों को देखा है जो Java के अलावा किसी दूसरी भाषा के बारे में सोच भी नहीं पाते। इसके अलावा, जो लोग दूसरी भाषाओं का इस्तेमाल करते थे, उनमें से ज़्यादातर लोग स्थिति के अनुसार दूसरी भाषा इस्तेमाल करने की इच्छा रखते थे।
अगर पहली भाषा Java हो तो ऐसा हो सकता है, ऐसा लगता तो है, लेकिन मैंने अपने आसपास ऐसा एक भी मामला नहीं देखा, इसलिए इसकी कल्पना करना मेरे लिए आसान नहीं है.
मेरे साथ भी ऐसा ही था कि कॉलेज में दाखिला लेने के बाद क्लास में सबसे पहले मैंने C++ सीखी, और फिर जैसे-जैसे साल बढ़ते गए, दूसरी भाषाओं से स्वाभाविक रूप से परिचय होता गया, इसलिए नई भाषा सीखने को लेकर मुझ पर इतना बोझ नहीं रहता... सच कहें तो बुनियादी syntax (variable declaration, control statements, functions आदि) तो लगभग सभी में मिलते-जुलते ही होते हैं.
ऐसे मामलों में शायद वजह यह होती है कि शुरू में भाषा को बहुत संकीर्ण तरीके से सीखा गया, इसलिए spectrum संकरा रह गया. और मैंने यह बात deep learning या mathematical statistics के उद्देश्य से Python को पहली भाषा के रूप में सीखने वाले लोगों में ज्यादा देखी है. मेरा अनुभव भी ऐसा ही है, और दोनों तरफ के अनुभव व्यक्तिगत हैं, इसलिए शायद दोनों ही बातें सही होंगी.
मेरा भी ऐसा ही अनुभव रहा है, इसलिए मेरी भी यही राय है।
जिन लोगों को Python पसंद है, वे यह दावा नहीं करते कि Python कोई महान भाषा है। JS के बारे में भी कोई यह ज़िद नहीं करता कि भाषा खुद बहुत अच्छी है। Python हो या JS, बस कुछ खास क्षेत्रों में development करने के लिए उनका ecosystem अच्छा है। लेकिन खास तौर पर Java वाले ही ऐसे लगते हैं जो इसे हर हाल में अच्छा साबित करने पर तुले रहते हैं..
Js को js डेवलपर्स खुद भी मज़ाक का विषय बनाते हैं। क्या ये भी कोई भाषा है.. अगर ts नहीं होता तो sob
अगर ज़बरदस्ती Java का बचाव करना ही हो, तो उल्टा लगता है कि सिर्फ़ Java ही तरह-तरह की वजहों से सबसे ज़्यादा मज़ाक का निशाना बनता है। जैसे सबको जाना-पहचाना मोहल्ले का चाचा...?
आजकल अगर Java से जुड़ी चीज़ें Google पर खोजो,
तो ट्रेनिंग इंस्टिट्यूट में पढ़ाई जाने वाली वही एक जैसी बातों वाले हिंदी ब्लॉग पोस्टों की बाढ़ आ जाती है,
जिससे ठीक-ठाक references ढूँढना मुश्किल हो जाता है और बहुत झुंझलाहट होती है.
Google सर्च काफ़ी खराब हो गया है...
18, 25, 20, 10, 8, 6, 5, 3, 2, 1, वगैरह सिर्फ Java की ही खासियत नहीं हैं। गलत तुलना
अब देखता हूँ तो लगता है कि Java में भी ऐसी सुविधाएँ हैं और उसकी आलोचना करने की कोई वजह नहीं है, लेकिन शायद यह कहना नहीं है कि सिर्फ इसलिए Java इस्तेमाल करो क्योंकि यह केवल Java में ही संभव है।
इसे पढ़ते हुए तो उल्टा बस यही लगता है कि हम्म.. क्या .NET ज़्यादा बेहतर नहीं है?
मुझे भी C# पसंद है, लेकिन Windows के अलावा दूसरे environment में क्या इसे खास तौर पर इस्तेमाल करने की ज़रूरत है, इस पर मुझे संदेह है।
यह ऊपर की टिप्पणी जैसा ही है। वह दौर ख़त्म हुए वास्तव में बहुत लंबा समय हो गया है.
MS की देर से की गई पसंद ने लोगों की धारणा को इस तरह बिगाड़ दिया है।
अगर आप सिर्फ Windows application बनाते हैं, तो MS ecosystem के कई फायदे हैं, इसलिए वह अच्छा है, लेकिन Linux या macOS पर Java से बेहतर कुछ नहीं लगता। MS अब देर से support दे रहा है, लेकिन उसे ज़बरदस्ती इस्तेमाल करने की कोई वजह नहीं है। समय ठीक नहीं है
अब यह .NET Framework वाले दौर का डॉटनेट नहीं रहा, फिर भी क्या आप इसे Windows applications तक ही सीमित कर रहे हैं?
आपके हाथ में जो मोबाइल फोन पहले से है, उसमें भी .NET-आधारित game engine चल रहा है;
222
333
यह Java की आलोचना नहीं है, लेकिन Java के चिढ़ाने वाले होने की वजह यह है कि खासकर Java डेवलपर्स ही अक्सर दूसरी भाषाओं के डेवलपर्स को नीचा दिखाते हैं, तुलना करते हैं, और एक अजीब-सा Java pride रखते हैं। मुझे Java पसंद है, लेकिन लोग ऐसा क्यों करते हैं, समझ नहीं आता। हर भाषा की अपनी philosophy होती है, अपने फायदे-नुकसान होते हैं, और ecosystem अलग होता है; बस इतना ही। लेकिन जब वे अचानक यह अजीब Java pride दिखाते हैं, तो वह नापसंदगी पैदा करता है।
ऐसा लगता है कि Java developers के Java पर गर्व के आधार के रूप में पेश करने के लिए कुछ सामग्री की ज़रूरत है। अगर इसे पेश करना मुश्किल है, तो मुझे लगता है कि यह ऐसा दावा है जिसे स्वीकार करना कठिन है।
लगता है हर language या tool के साथ ऐसे लोग होते ही हैं। मेरा मानना है कि Java अपने लॉन्च के समय C/C++ की तुलना में ज़्यादा hip language थी, और enterprise में भी व्यापक रूप से इस्तेमाल हुई, इसलिए developers का pool बड़ा होने की वजह से वह ज़्यादा नज़र आती है।
और आजकल लगता है कि Rust developers वही भूमिका निभा रहे हैं।
हैरानी की बात है कि Java के mainstream बनने की वजह इस पर marketing में बहुत ज़्यादा पैसा खर्च करना था lolol
https://www.youtube.com/watch?v=NVuTBL09Dn4
एक YouTube वीडियो है कि कोई भाषा कैसे mainstream बनती है, उसे आप लोग भी देखें तो दिलचस्प लगेगा!
https://www.youtube.com/watch?v=QyJZzq0v7Z4
आपको Java डेवलपर पर गुस्सा होना चाहिए, लेकिन गुस्सा Java पर निकाल रहे हैं...
वो तो आपकी पढ़ने-समझने की क्षमता...
मेरे जवाब देने से पहले ही किसी और ने यह लिख दिया है।
ऐसा नहीं है?
लगता है साक्षरता क्या होती है, यह भी नहीं जानते?
अचानक अगर आपको Java से बना Eclipse और JavaScript (TypeScript) से बना VSCode याद आ गया हो... तो क्या यह गलत तुलना होगी? बेशक, फीचर्स Eclipse में ज्यादा हैं।
यह गलत तुलना है..
आपको इसके आने का समय देखना चाहिए।
Eclipse आने के बाद कुछ समय तक Eclipse की वही स्थिति थी जो आज VS Code की है।
मैं भी Eclipse सच में इस्तेमाल करने में बहुत असुविधाजनक होने की वजह से इसका उपयोग नहीं करता,
लेकिन उस समय काम लायक विकल्प Eclipse के अलावा कोई नहीं था।
JavaScript की ताकत यह है कि v8 इंजन को Google मैनेज करता है।
छोड़ी हुई java..
Electron app का backend JavaScript ही होता है.. main process और renderer process अलग-अलग चलते हैं, लेकिन दोनों ही JavaScript code से काम करते हैं
उसी तरह, JVM भी आखिरकार native में implemented runtime ही नहीं है क्या?