स्टार्टअप्स Java से क्यों बचते हैं?
(news.ycombinator.com)स्टार्टअप्स Java से क्यों बचते हैं? HN पर पोस्ट किए गए सवाल के जवाब
- सबसे बड़ा कारण यह है कि Java ecosystem बिगड़ चुका है, और Maven/Gradle वगैरह भयानक हैं।
- Spring का पीछा करने वाले developers की वजह से इससे बचते हैं।
- क्योंकि लोग Java को hibernate/springboot के साथ गड्डमड्ड कर देते हैं।
- Java उबाऊ enterprise coding है, Rust जैसी नई hotness नहीं।
- अगर JVM इस्तेमाल करना ही है, तो Kotlin या Clojure जैसी दूसरी भाषाओं का इस्तेमाल करना बेहतर है।
- 2022 में यह कहना कि आपका नया startup Java इस्तेमाल कर रहा है, वैसा ही है जैसे कहना कि आप Cobol इस्तेमाल कर रहे हैं।
- एक समय यह hip और trendy था, लेकिन फिर Oracle आ गया।
47 टिप्पणियां
आखिर में मेरा भी एक वोट। Oracle के अधिग्रहण के बाद से यह पीछे जाने लगा।
लागत और लोगों को संभालने की हैसियत नहीं है, ये बात सबको साफ़ दिख रही है, फिर कैसी बातें कर रहे हैं...
Maven/Gradle वगैरह की भयानकता
यह देखकर लगता है कि लेखक के स्तर का अंदाज़ा हो जाता है।
वरिष्ठों की बात अच्छी तरह सुनकर जा रहा हूँ
हायरिंग आसान होना एक फ़ायदा है, लेकिन यह सच में इस कमी में भी बदल सकता है कि फिर कोई भी आवेदन कर देता है।
Kotlin और Scala तक सब सीखकर JVM में महारत हासिल कर चुके वेटरन भी होंगे, और SI इंडस्ट्री में Java का 10 साल से ज़्यादा अनुभव होने के बावजूद तकनीकी रूप से आगे बढ़ने की इच्छा न रखने वाले, जिन्हें Stream API तक नहीं पता और जो आज भी उसी पुराने सिंटैक्स पर अटके हुए हैं, ऐसे लोग भी होंगे। अगर Golang या Rust के लिए हायरिंग की जाए, तो लगता है कि बाद वाली श्रेणी का अनुपात काफ़ी कम हो जाएगा। Python के बारे में पक्का नहीं कह सकता...
Java से Kotlin पर जाना मुश्किल नहीं है, और JSP से Thymeleaf पर जाना भी मुश्किल नहीं है। बस reference वाली थोड़ी असुविधा होती है। जो भी करें, पहले object, inheritance और structural design से शुरुआत करें। library या side tools पर निर्भर रहना बस यही साबित करता है कि आप अभी beginner हैं।
व्यक्तिगत तौर पर मुझे लगता है कि Java का इतिहास लंबा होने के कारण इसमें information asymmetry काफ़ी ज़्यादा है.
आख़िरकार यह अपने दौर की एक बेहद प्रभावशाली भाषा रही है, इसलिए उस समय की जानकारी से बने हुए नतीजे आज भी बहुत बचे हुए हैं, और इतने सारे version upgrade के बाद भी कई बार वही सामग्री मानो अब भी वैध हो, इस तरह बार-बार दोबारा बनाई और फैलायी जाती रही है.
मुझे याद है कि नए version के अनुरूप नया approach ढूँढने में काफ़ी कठिनाई हुई थी.
ऐसा नहीं है कि दूसरी भाषाओं में यह समस्या नहीं होती, लेकिन अगर बहुत ज़्यादा fragmented भाषाओं की बात करें, तो Python और Java तुरंत याद आते हैं.
लेकिन Python को development speed के मामले में बेहतर माना जाता है, इसलिए लगता है कि startup अब भी उसे अक्सर hire करते हैं.
हालाँकि startup में Java से बचने की वजह इससे अलग लगती है.
[startup में Java से बचने के कारण]
[फिर भी startup में Java चुनने के कारण]
[लेकिन फिर भी दोबारा सोचने की वजह]
Java अच्छा है या नहीं, इससे अलग मेरी अपनी महसूस यही है कि Java विदेशी startup इकोसिस्टम में मुख्यधारा जैसा नहीं लगता।
विदेशी कंपनियों के अधिग्रहण के लिए मैंने तकनीकी विश्लेषण का काम किया था, लेकिन एक भी जगह Java नहीं था। दिलचस्प बात यह थी कि उम्मीद के उलट .NET काफी ज़्यादा था.
शायद इसलिए भी यह बात मुझसे जुड़ती है, क्योंकि 2~3 साल पहले भी मेरा ऐसा ही अनुभव रहा था.
maven बहुत ज़्यादा verbose है, इसलिए मुझे भी खास पसंद नहीं,
gradle भी भयानक चीज़ निकली।
मुझे तो npm ज़्यादा डरावना लगता है;
और cobol तो मुझे लगता है थोड़ा हद से ज़्यादा हो गया।
शायद बड़े एंटरप्राइज़ के डेवलपर्स के नज़रिए से लिखा गया होगा, haha
खैर, Java को अंधाधुंध कोसते हुए जो तस्वीर बनती है, वह मैं जब भी देखता हूँ तो मज़ेदार लगती है। उदाहरण देखते-देखते हर किसी के अपने अंधेरे अनुभव भी दिखने लगते हैं।
Java बहुत ही आलसी रहा है।
उसे गालियाँ पड़ना बनता है।
इन दिनों लगता है थोड़ा मेहनत कर रहा है, लेकिन मेरे हिसाब से अभी और सुनना चाहिए।
वैसे भी समय के साथ कोई दूसरी भाषा फिर मुख्यधारा बन जाएगी। स्टार्टअप्स में नए रुझानों को अपनाने के लिए निर्णय लेने की प्रक्रिया सरल होती है, और जिस भाषा का वे उपयोग करते हैं वही मुख्यधारा बननी चाहिए तभी वे स्टार्टअप की अवस्था से आगे निकलते हैं। दूसरी ओर, बड़े पैमाने की कंपनियों में निर्णय लेने की प्रक्रिया जटिल होती है और कई हित जुड़े होते हैं, इसलिए वे स्थिरता सुनिश्चित होने के बाद ही उसे अपनाते हैं—शायद फर्क यही है.
1959 में आई COBOL वित्तीय क्षेत्र में 21वीं सदी आने के बाद ही गायब हुई। वैसे, जिसे आप लोग खास अच्छा नहीं मानते, वह Java भी ओपन सोर्स के रूप में शुरू हुई थी, और एक समय SOHO में सबसे लोकप्रिय भाषाओं में से एक थी। और, Java की बड़ी कंपनियों वाली छवि Oracle द्वारा अधिग्रहण के बाद और कोरिया में सरकार-नेतृत्व वाले e-Government Framework के आने के साथ और मजबूत हुई।
यह जानने की उत्सुकता है कि 'Java सिर्फ कोरिया में ही लोकप्रिय है' वाला मिथक आखिर शुरू कहाँ से हुआ। क्या ऐसा इसलिए है कि घरेलू IT दिग्गज कहे जाने लायक कंपनियाँ बस Naver और Kakao जैसी दो ही हैं, और दोनों ही Java इस्तेमाल करती हैं?
बेशक, अमेरिका में engineering pool कहीं बड़ा है, इसलिए दूसरी भाषाओं में टीम बनाना अपेक्षाकृत आसान होता है। लेकिन FAANG समेत लगभग सभी अमेरिकी IT कंपनियों में भी Java बेहद आम tech stack है।
कंपनियाँ इतनी बड़ी हैं कि team-by-team फर्क बहुत ज्यादा होता है, लेकिन Amazon में तो इन-हाउस standard framework ही Java है (सुना है कि version 2 में Spring इस्तेमाल किया था, और अब उसे Guice में बदल दिया गया है)। मेरी जानकारी के अनुसार Google में लगभग आधा C++ और आधा Java है, और कुछ टीमें Python भी इस्तेमाल करती हैं। Apple में भी, जहाँ तक मैं जानता हूँ, ज़्यादातर web services Java पर चलती हैं।
Netflix की तो बात ही अलग है।
hystrix,zuul,eureka— ये सब Netflix ने ही बनाए हैं, इसलिए शायद वह दुनिया में Spring का सबसे अच्छा इस्तेमाल करने वाली कंपनी होगी।Facebook में भी ज़्यादातर C++ या Hack है, लेकिन मेरी जानकारी में कुछ टीमें Java भी इस्तेमाल करती हैं।
Twitter ने भी शुरुआत में Ruby इस्तेमाल किया था, फिर JVM भाषा Scala पर चला गया। इसके अलावा Atlassian, VMware, Red Hat जैसी बड़ी कंपनियों में तो उल्टा Java न इस्तेमाल करने वाली कंपनी ढूँढना ज्यादा मुश्किल होगा।
Kafka, Hadoop वगैरह सब JVM पर चलते हैं, इसलिए भले ही कोई कंपनी सीधे अपनी service में Java न इस्तेमाल करे, फिर भी सच में ऐसी कंपनी शायद ही होगी जिसे Java की बिल्कुल जरूरत न पड़ती हो।
इस बात से कोई इनकार नहीं कर रहा है कि पहले Java का बहुत इस्तेमाल होता था। यह इस लेख के मूल बिंदु से कुछ दूर लगता है।
आपकी पोस्ट खुद देश की परवाह किए बिना सामान्य बड़े उद्यमों की बात कर रही है, लेकिन टिप्पणियों में खास तौर पर "कोरिया में ऐसा है" "यह सिर्फ़ कोरिया तक सीमित है" जैसी बातें असामान्य रूप से बहुत ज़्यादा दिख रही हैं।
सिर्फ़ कोरिया में ही Java बहुत ज़्यादा इस्तेमाल नहीं होती, लेकिन यह सच लगता है कि कोरिया में Java का इस्तेमाल खास तौर पर बहुत अधिक है। उदाहरण के लिए, JetBrains के पिछले साल के सर्वे के नतीजों में कहा गया था कि “Java कोरिया, चीन और जर्मनी में सबसे ज़्यादा इस्तेमाल की जाने वाली भाषा है। कोरिया में Java की हिस्सेदारी 53%, चीन में 47% और जर्मनी में 33% है।”। मुझे लगता है कि इस स्थिति पर, जैसा कि कई लोगों ने टिप्पणियों में भी कहा, e-Government Framework की मौजूदगी और सरकारी फंडिंग से चलने वाली coding education के curriculum जैसी चीज़ों का निश्चित रूप से असर पड़ा होगा।
कुछ टिप्पणियाँ देखकर पहले पोस्ट हुआ C++ वाला लेख याद आ गया। लगता है कि कोरियाई डेवलपर कम्युनिटी में C++ और Java सचमुच लगभग पवित्र गायों की तरह बन चुके हैं, हाहा। जैसे ही कोई इन्हें बुरा कहता है, लगता है मानो असंख्य लोगों का ट्रिगर बटन दब जाता है..
बेशक, Java के भी ऐसे कारण थे जिनकी वजह से उसने घरेलू बाज़ार में धूम मचाई, लेकिन C++ को Java के साथ उसी श्रेणी में बांधना थोड़ा... हाहा
मुझे लगता है कि "ट्रिगर बटन" उतना अच्छा अभिव्यक्ति नहीं है। क्योंकि यह सामने वाले को बुरा दिखाता है.
मैं बस यह कहने की हिम्मत कर रहा/रही हूँ कि काश हम थोड़ा और एक-दूसरे का सम्मान करने वाला कम्युनिटी बनें। माफ़ कीजिए।
मैं सहमत हूँ। माफ़ी मांगने की ज़रूरत नहीं लगती।
मुझे यह ज़्यादा लगता है कि startup Java से बचते हैं ऐसा नहीं है, बल्कि दूसरी languages/frameworks के फायदे ज़्यादा बड़े हैं। लेकिन इस बात से मैं सहमत हूँ कि Java/Spring ecosystem उतना अच्छा नहीं है जितना लोग समझते हैं। सच कहूँ तो मैं Spring developer हूँ, लेकिन मुझे खुद Spring खास पसंद नहीं है। Java में वेब application development को छोड़कर किसी और environment में काम कर चुके developers बहुत कम हैं, इसलिए यह एहसास और भी तीखा लगता है.
Spring
Java
JVM ecosystem के फायदे साफ़ हैं, इसलिए नए project में Kotlin लगभग अनिवार्य है, और अगर Spring को साथ ले जाने की कोई स्पष्ट वजह नहीं है, तो मुझे लगता है कि
ktorजैसे lightweight framework से शुरू करना बेहतर है। जिन कमियों की मैंने ओर इशारा किया है, उन पर अक्सर लोग कहते हैं कि design गलत नहीं था, बल्कि Spring philosophy को ठीक से समझे बिना development किया गया। लेकिन OOP तो दूसरी languages में भी किया जा सकता है..कमेंट सेक्शन बहुत बिखरा हुआ और आक्रामक है, फिर भी यह एक ऐसा कमेंट है जिससे सहमति महसूस होती है।
मैं इस बात से सहमत हूँ कि नई भाषाओं और frameworks को थोड़ा अधिक सक्रिय रूप से अपनाया जाना चाहिए, लेकिन सच कहूँ तो हमारे यहाँ की हक़ीक़त यह है कि आज भी जब बिल्कुल नया प्रोजेक्ट शुरू किया जाता है, तब भी बिना किसी खास तार्किक वजह के लोग नवीनतम LTS version Java 17 की जगह जड़ता में Java 8 चुन लेते हैं। Tistory blog जैसी जगहों पर “Java 1.8 डाउनलोड करने का तरीका” जैसी पोस्टें 2022 की तारीख़ के साथ मिल जाना भी बहुत आसान है। यह सब देखकर लगता है कि यहाँ मौजूद कई दूसरे लोग Java के प्रति बेहद नकारात्मक रवैया क्यों रखते हैं, इसकी वजह शायद बेवजह नहीं है.
फिर भी, मुझे नहीं लगता कि ये समस्याएँ सिर्फ़ Java भाषा से ही पैदा होती हैं। इसके बजाय, खासकर हमारे यहाँ अधिक दिखाई देने वाली बदलाव-विरोधी संस्कृति और बिना किसी प्रगति के copy-paste code की बाढ़ शायद उससे भी बड़ी समस्या है। वास्तव में, मैं अभी C# में विकसित किए गए कई तरह के मिलते-जुलते प्रोग्रामों के maintenance का काम कर रहा हूँ। भाषा अपने आप में मुझे Java से बेहतर लगती है, लेकिन भाषा कितनी भी अच्छी हो, अगर पहले वाले डेवलपर ने पुराने प्रोजेक्ट का code बस जैसे-तैसे copy-paste करके भर दिया हो, तो उस code की भयावहता को रोकने का कोई तरीका नहीं होता। ऊपर से अब बाहरी environment में बदलाव की वजह से ऐसे बार-बार दोहराए गए code के बड़े हिस्से को साल के अंत तक हर हाल में बदलना पड़ेगा, इसलिए स्थिति और भी डरावनी है।
यह तो घरेलू संदर्भ में सचमुच ट्रिगर करने वाला मुद्दा है।
लगता है कि लंबे समय से इस्तेमाल हो रही Java को छोड़ना मुश्किल होगा, और लोगों की जरूरत लगातार बनी रहती है, इसलिए सरकारी फंड वाले ट्रेनिंग इंस्टीट्यूट भी वही curriculum लेकर Spring के कामचलाऊ लोग तैयार करते रहते हैं..
मुझे लगता है कि इस तरह का चक्र टूटना आसान नहीं होगा।
Kotlin + Spring इस्तेमाल करने की कोशिशों को मैं सकारात्मक नज़र से देख रहा हूँ.
Docker इस्तेमाल करते-करते...
Docker image का size भी बेवजह बड़ा हो जाता है।
चलने में भी ज़्यादा समय लगता है वगैरह...
आजकल सब Docker इस्तेमाल करते हैं, इसलिए शायद यह कम पसंद किया जाने लगा है..
Java का ecosystem कभी भी वास्तव में टूटा नहीं है.
इसमें अनगिनत open source projects भी हैं, और version upgrades के साथ यह मौजूदा development trends को दूसरी भाषाओं की तुलना में तेज़ी से अपनाता आया है.
gradle/maven में build tool सिर्फ़ एक विकल्प है, कोई अनिवार्यता नहीं.
और भी कई build tools हैं, इसलिए जो चाहें उसका उपयोग किया जा सकता है.
Node में npm क्यों इस्तेमाल होता है? क्योंकि वह सुविधाजनक है. gradle/maven भी सुविधाजनक हैं, इसलिए उनका व्यापक उपयोग होता है.
Java में कई frameworks होने के बावजूद spring के उपयोग की वजह यह है कि वह flexible scalability, project management की सुविधा और stable performance दिखाता है, इसलिए उसकी लोकप्रियता आज तक बनी हुई है.
अगर देखें कि startup में business scale बढ़ने पर Java पर migration क्यों किया जाता है, तो ज़्यादातर मामलों में यह stable project management की वजह से तय किया जाता है.
अब तक छोटे पैमाने पर Python या Node से development करते समय कोई समस्या नहीं होती, लेकिन अगर business सफल हो जाए और developers की संख्या 100 से 1000 तक पहुँचकर उसी project पर काम करे, तो Python या Node के फ़ायदे बनाए रखना मुश्किल हो जाता है, और उल्टा उनकी कमियाँ ज़्यादा सामने आने लगती हैं.
मेरा मानना है कि बड़े projects में quality management करते हुए stability भी सुनिश्चित करने के लिए Java पर migration किया जाता है.
शायद अगर Java से बेहतर कोई वैकल्पिक भाषा होती, तो लोग उससे भी तेज़ी से उसी वैकल्पिक भाषा का उपयोग नहीं करने लगते क्या??
अंत में, Java से बने services में शुरुआती entry barrier ऊँचा होता है और infrastructure cost भी अधिक होती है. इसलिए startup के शुरुआती चरण में ज़्यादा लागत और समय लगाकर setup करने के बजाय, ऐसी भाषाएँ ज़्यादा इस्तेमाल होती हैं जिन्हें आसानी और तेज़ी से लागू किया जा सके.
फ़िलहाल, कम-से-कम घरेलू बाज़ार में, Java डेवलपर ही जरूरत से ज़्यादा हैं। ज़्यादा सटीक कहें तो Java डेवलपर नहीं, सिर्फ़ Spring डेवलपर हैं। e-Government Framework, Spring पर आधारित है, इसलिए लगभग सभी साधारण डेवलपर सिर्फ़ Spring सीखकर निकलते हैं। ऐसे लोगों का अनुभव भी बहुत भर गया है, इसलिए ऐसा है। न विविधता है, और language ecosystem पहले ही बिगड़ चुका है। बहुत से लोग ऐसे भी हैं जो Spring के बिना एक साधारण bulletin board भी नहीं बना सकते, फिर भी खुद को Java डेवलपर कहते हैं।
इस सवाल का पॉइंट है "startup", और महत्वपूर्ण चीज़ "स्थिरता/स्केलेबिलिटी" से ज़्यादा "development speed" है।
startup के लिए समय ही पैसा है!
(बाद में जब समय और पैसा आ जाए, तब Java?)
और Java की लोकप्रियता शायद सिर्फ़ Korea की विशेषता नहीं है। अभी भी popular programming languages में top 3 में है.
इसी वजह से लगता है कि Java पर माइग्रेट करने की बात सिर्फ़ कोरिया में ही चलती है.
बड़ी कंपनियों में Java में बने सिस्टम बहुत ज़्यादा होते हैं, इसलिए सबसे बड़ा मकसद maintenance ही होता है.
Oracle का आना-जाना वास्तव में ज़्यादातर frontline कंपनियों के लिए खास मायने नहीं रखता... Naver, Kakao, Line, Coupang, Baemin जैसी कंपनियों के main systems भी पूरी तरह Java पर हैं। Nexon जैसी game कंपनियों के internal backend networks भी Java में लिखे जाते हैं.
Java ecosystem बर्बाद हो चुका है, या Gradle भयानक है — इस बात से मैं बिल्कुल सहमत नहीं हूँ
Java एक पुरानी भाषा है और Java developers बहुत हैं, इसलिए वे लोग नई चीज़ें सीखना नहीं चाहते या उनकी quality कम है — यह कैसी logic है, समझ नहीं आता।
NekarakuBae में सब जगह Java ही main है, और हाल में Kotlin बस थोड़ा-थोड़ा introduce हो रही है।
कहीं आप सच में यह तो नहीं कह रहे कि असली experts startups में होते हैं? haha
मुझे लगता है कि hotshit के लिए इससे बेहतर अनुवाद हो सकता है।
"2022 में यह कहना कि आपका नया startup Java इस्तेमाल कर रहा है, लगभग ऐसा है जैसे आप कहें कि वह Cobol इस्तेमाल कर रहा है."
कोरिया में "Java developers की hiring आसान है" वाली दलील को हराना मुश्किल है। लेकिन इस तरह hire किए गए developers की quality कैसी होती है, यह कहना मुश्किल है।
क्या Java ecosystem बर्बाद हो गया है? Spring क्यों काम का नहीं माना जा रहा? इसके समर्थन में दिए गए आधार बहुत कमज़ोर हैं।
अगर JVM एक cryptocurrency होता, तो Java Bitcoin होता।
हाहाहाहाहाहाहाहाहाहा
पुराने समय में यूँ ही
Java 2명 타요वाला मीम नहीं बना था.. ऊपर से government standard framework के नाम पर public sector SI में तो लगभग जबरन JAVA इस्तेमाल करवाया जाता है....यह समझना थोड़ा मुश्किल है कि Java की तरफ़ का toolchain अच्छा नहीं है।
Maven/Gradle का management तरीका, npm से जूझने की तुलना में, कहीं बेहतर था...
मैंने भी अपना करियर Java से शुरू किया था और लगभग 4 साल तक एक कंपनी में सिर्फ Java डेवलपर के रूप में काम किया। बाद में अलग-अलग कंपनियाँ बदलते हुए मुझे python, ruby, go जैसी कई भाषाओं का अनुभव हुआ, और हाल के दिनों में मैं Solidity डेवलपर के रूप में अपना करियर आगे बढ़ा रहा हूँ.
हाल के समय में, कई startup एक हद तक बढ़ने और स्थिरता के चरण में पहुँचने के बाद अपनी infrastructure को ज़्यादातर Java में बदलते दिख रहे हैं। यह ऐसा क्यों करते हैं, इस पर जब मैंने गौर से सोचा,
तो लगा कि शायद यह बस inertia की वजह से हो रहा है.
कई lead-स्तर के डेवलपर Java के आदी होते हैं, और दूसरी भाषाएँ सीखने से हिचकिचाते हैं, इसलिए वे बस वही Java इस्तेमाल करते हैं जिसमें वे सहज हैं। और जब ऐसे लोग startup में आने लगते हैं, तो लगता है कि पूरी infrastructure ही Java-based हो जाती है.
व्यक्तिगत रूप से, सिर्फ परिचित होने की वजह से infrastructure को पूरी तरह बदल देना मुझे समझ नहीं आता। लेकिन इंसान स्वभाव से नई चीज़ें सीखने से कतराता है, और दक्षिण कोरिया में Java ecosystem इतना मज़बूत है कि इसे बदलना बहुत मुश्किल लगता है.
Java और Spring बड़े पैमाने की services को स्थिर रूप से देने के लिए अच्छे हैं, लेकिन शुरुआती startup की service का scale छोटा होता है, इसलिए Java के फ़ायदे दिखाना आसान नहीं होता
शुरुआती startup में कम लोगों के साथ Front, Back दोनों करना पड़ सकता है, और इस स्थिति में Java की तुलना में Node.js या JS से एक ही बार में बनाना ज़्यादा आसान होता है
आखिरकार, startup जब series investment ले लेते हैं, तो सब Java, Spring पर switch कर लेते हैं
पहली बात मुझे कभी-कभी ठीक से समझ नहीं आती। लेकिन यह भी नहीं है कि दूसरी भाषाएँ अस्थिर हैं। वैसे भी बड़े पैमाने पर जाने पर Java को भी tuning करनी ही पड़ेगी।
देखने पर कभी-कभी ऐसा लगता है कि लोग बस जिस चीज़ के आदी हैं, उसी में performance tuning और troubleshooting करना उनके लिए आसान होता है, और उसे ही वे “स्थिर” कहते हैं।
जैसा कि आप सब जानते हैं, Java शुरुआती versions से ही ऐसी कई चीज़ें देता आया है जिन्हें आज हम बिल्कुल स्वाभाविक मानते हैं, जैसे memory management को अपने आप संभालना। और 1990 के दशक में, जब Java पहली बार आया था, तब C या C++ जैसी भाषाएँ आज की तुलना में कहीं ज़्यादा इस्तेमाल होती थीं, जिनमें developer की छोटी-सी गलती भी memory leak का कारण बनकर पूरे application की reliability पर बहुत बड़ा असर डाल सकती थी। ऐसे दौर में, भले ही अस्थायी execution pause (Stop-the-world) हो सकता था, लेकिन memory समस्या की वजह से service के पूरी तरह ठप हो जाने की संभावना को बहुत कम कर देने वाली भाषा का आना काफ़ी sensation माना गया। इसलिए मेरा मानना है कि Java ने शुरुआत से ही दूसरी भाषाओं की तुलना में कहीं ज़्यादा stable होने की छवि के साथ शुरुआत की, और वही छवि आज तक चली आ रही है.
इसके अलावा, इस समय Java के पास लंबे समय तक कई तरह की services में व्यापक उपयोग से बनी reliability और accumulated experience भी है। इसलिए, जैसा आपने कहा, performance tuning या troubleshooting करना आसान होता है, और commercial हो या open source, हर तरह के tools और solutions भी बहुत उपलब्ध हैं। किसी व्यापक रूप से इस्तेमाल होने वाले product का ecosystem अपने-आप में problem solving को आसान बना देता है, और outage होने पर समस्या को जल्दी सुलझाकर downtime कम किया जा सकता है — stability को महत्व देने वाले नज़रिए से यह बहुत बड़ा merit है।
और जहाँ तक Kotlin की बात है, जिसका दूसरे comments में काफ़ी ज़िक्र हुआ है, यहाँ GeekNews पर किसी और की comment के अनुसार, हैरानी की बात है कि अब भी compiler bug या compatibility से जुड़े issues काफ़ी हैं। वही JVM इस्तेमाल करने वाली, और public हुए अब लगभग 10 साल होने जा रही भाषा का भी यह हाल है, तो अगर निर्णय का सबसे बड़ा मानदंड stability हो, तो लंबे समय में पर्याप्त रूप से verify की गई चीज़ चुनना काफ़ी reasonable नहीं है क्या।
वैसे, आज के समय में यह बहुत अजीब लग सकता है, लेकिन जब Java पहली बार आया था, तो इम बैकजून की किताब Polyglot Programming (2014) के शब्द उधार लें, तो उसने “इतना नया, जवान कि लगभग sexy feel देता था” जैसा impression दिया था। इसी संदर्भ में, Java के पिता James Gosling द्वारा 1997 में लिखे गए एक लेख का अनुवाद प्रस्तुत है।
मेरा मानना है कि Spring की ओर जाने का कारण कोरियाई डेवलपर बाज़ार की विशेषताएँ हैं.
विदेशों में JVM आम तौर पर, इस लेख की तरह, Kotlin में शिफ्ट हो रहा है.
मेरे लिए भी spring के अंध-समर्थकों की वजह से Java की इमेज खराब हुई है.
खासकर कोरिया में, अगर कोई कहे कि वह Java करता है, तो मतलब लगभग सब कुछ बस spring boot ही होता है. इसलिए अक्सर Java = spring boot जैसी धारणा बन जाती है.
मैं Java न जानने वाला डेवलपर हूँ, तो अच्छा लग रहा है।
फिर भी, लगता है कि startup में लोगों की hiring करते समय यही सबसे तेज़ होगा..
लेकिन कोरिया में...
मैंने भी एक समय Java इस्तेमाल किया था, लेकिन अब संभव हो तो Java का इस्तेमाल नहीं करना चाहता।
यह इतना उदास होते हुए भी हँसी क्यों दिलाता है..? lol
(पहले के startup में Java इस्तेमाल करता था, लेकिन अब नहीं करता)