28 पॉइंट द्वारा GN⁺ 2025-05-18 | 13 टिप्पणियां | WhatsApp पर शेयर करें
  • James Gosling Java के निर्माता हैं और उन्हें 30 वर्षों तक आधुनिक computing को प्रभावित करने वाले व्यावहारिक जीनियस के रूप में देखा जाता है
  • गरीबी में पले-बढ़े Gosling ने कचरे के ढेर से मिले पुर्जों से कंप्यूटर जोड़ते हुए programming सीखी, और यह self-directed learning बाद में उनकी language design philosophy में भी दिखी
  • Sun Microsystems में मज़ाक और innovation के साथ-साथ चलने वाला दौर Gosling की रचनात्मकता और तकनीकी संस्कृति गढ़ने की नींव बना
  • हाल में उन्होंने generative AI tools और AI boom को लेकर गहरी शंका जताई और इस बात पर ज़ोर दिया कि programming education का महत्व और बढ़ गया है
  • Java के टिके रहने का राज चमक-दमक नहीं, बल्कि stability, backward compatibility, और developer productivity पर पूरी तरह केंद्रित व्यावहारिक design philosophy था

Java at 30: The Genius Behind the Code That Changed Tech

  • Java 23 मई को 30 साल पूरे करने वाली एक general-purpose high-level object-oriented language है, जो आज भी अलग-अलग आकार के systems को चलाने वाली मुख्य तकनीक बनी हुई है
  • Java के अस्तित्व की बुनियाद में James Gosling की व्यावहारिक तकनीकी समझ और रचनात्मक अंतर्दृष्टि है
  • Gosling एक कनाडाई, आत्मनिर्भर किशोर के रूप में शुरू हुए, जो कूड़े से पुर्जे बटोरकर कंप्यूटर बनाता था, और आगे चलकर विश्व-स्तरीय programmer बने
  • ‘Write once, run anywhere’ Java की पहचान है, और यही आगे चलकर software development के तरीके में बुनियादी बदलाव लाने वाली language philosophy बनी
  • पूरे करियर में Gosling ने तकनीकी उत्कृष्टता, शरारती स्वभाव और स्पष्ट नैतिक चेतना के संतुलन के साथ आधुनिक computing culture को लगातार प्रभावित करने वाले developer का रूप पेश किया

James Gosling: The Brilliant Mind Behind Java

  • James Gosling सिर्फ ‘Java के जनक’ नहीं, बल्कि जटिल concepts को सहज ढंग से समझाने वाले विनम्र जीनियस हैं
  • Java बनाए 30 साल बाद, उन्होंने अपनी तकनीकी यात्रा को पीछे मुड़कर देखा और language तथा development culture के विकासक्रम पर बात की

The Path To Programming: Resourceful Beginnings

  • बचपन में बेहद गरीब माहौल में Gosling ने कूड़ेदान से टेलीविजन उठाकर तकनीकी रचनात्मकता विकसित करने का अनुभव पाया
  • उनका पहला कंप्यूटर telephone exchange के फेंके गए relay rack से बना था, जो बहुत शुरुआती दौर से दिखने वाली उनकी mechanical understanding और assembling skill का प्रतीक था
  • University of Calgary के computer center की यात्रा के दौरान स्क्रीन, चमकती लाइट्स और tape devices ने उन्हें मोहित किया, और वहीं से programming को लेकर जीवनभर की जिज्ञासा शुरू हुई
  • उन्होंने punch cards खंगालकर password हासिल करने जैसे तरीकों से खुद सीखा, और हाई स्कूल के दौरान university physics department के लिए satellite data analysis program बनाकर पैसे कमाते हुए programming का आनंद लेने का अनुभव हासिल किया
  • उनकी शुरुआती programming यात्रा IBM mainframe के PL/1, Fortran, PDP-8 assembly language और CDC 6400 code तक फैली थी। उन्होंने अपने शांत अंदाज़ में बस इतना कहा कि “गर्मियों में COBOL compiler बनाने की नौकरी की थी”, जबकि यह ऐसा काम था जिसे कई अनुभवी programmers भी संभालना मुश्किल मानते हैं

Academia to Industry: Finding His Way

  • Gosling ने academia को “ऐसी research lab जो graduate students को सस्ते labor की तरह इस्तेमाल करती है” कहा, जिससे theory से अधिक practice को महत्व देने वाला उनका सीधा दृष्टिकोण सामने आता है
  • Carnegie Mellon में PhD के दौरान भी उन्होंने startup में काम किया, व्यावहारिक अनुभव लिया, और बाद में degree पूरी की — यह industry और academia को साथ लेकर चलने वाला लचीला career path था
  • उनकी पहली नौकरी IBM Research में थी, लेकिन उन्होंने इसे “अपना ही नुकसान करने के लिए प्रतिबद्ध company” कहा, जिससे corporate operations और technology strategy पर उनकी ठंडी, विश्लेषणात्मक नज़र दिखती है
  • इन शुरुआती अनुभवों ने आगे Sun Microsystems में उनके काम करने के तरीके को वास्तविकता-केंद्रित organizational culture की समझ दी

The Sun Days: Innovation and Pranks

  • Sun की सबसे मज़ेदार याद के रूप में Gosling ने हर साल होने वाले बड़े April Fools prank projects का ज़िक्र किया और ऐसी culture को याद किया जहाँ creativity और humor साथ रहते थे
  • एक मशहूर prank में तालाब के ऊपर बने platform पर Ferrari रखी गई थी, जो engineering problem-solving और teamwork से पैदा हुए humor का उदाहरण था
  • CEO के office में artificial grass, bunker और water hazard के साथ 1-hole golf course बनाना भी technology और खेल के मेल से बने अनोखे प्रयोग के रूप में सामने आया
  • Gosling को Sun एक “दुर्लभ जगह” लगती है जहाँ technical excellence और playful creativity दोनों की अनुमति थी; इसी ने उनकी समस्या-समाधान शैली और technology के प्रति रवैये को आकार दिया

Java: Creating a Legacy That Changed Everything

  • Java के 30 साल Gosling के लिए सबसे प्रतिनिधि उपलब्धि और तकनीकी जीवन का निर्णायक मोड़ हैं
  • जब सड़क पर लोग उन्हें कहते हैं कि “Java की वजह से मेरा career बना”, तब उन्हें developer ecosystem पर छोड़े गए अपने प्रभाव से गहरी संतुष्टि मिलती है
  • वह शुरुआत से lambda और generics जैसे features जोड़ना चाहते थे, लेकिन “उन्हें गलत तरीके से नहीं जोड़ूंगा” वाली design philosophy के कारण सही समय का इंतज़ार किया
  • Oracle के Java management पर उन्होंने कहा कि “उम्मीद से बेहतर काम किया”, लेकिन साथ ही community की लगातार भागीदारी और योगदान को असली ताकत बताया
  • Java cloud environment के लिए optimize होते हुए विकसित हुआ है, और multicore support, memory handling, तथा GC improvements में “वाकई शानदार स्तर” की तकनीकी परिपक्वता तक पहुँचा है

Beyond Java: Ventures After Sun

  • Sun के Oracle द्वारा अधिग्रहण के बाद Gosling ने कुछ समय का विराम लिया, फिर Google में शामिल हुए, लेकिन 6 महीने में नौकरी छोड़कर Liquid Robotics चले गए
  • वहाँ उन्होंने autonomous marine robots के control systems बनाए और Hawaii में snorkeling की ज़रूरत वाली working conditions जैसे technology और nature के अनोखे मेल का अनुभव किया
  • उन्होंने Arctic और Antarctic महासागरों के तापमान की निगरानी वाले project में काम किया, लेकिन environmental research में funding की कमी के कारण VC-backed startup structure के साथ टकराव हुआ
  • defense sector की ओर मुड़ने के दबाव के बाद उन्होंने नैतिक कारणों से नौकरी छोड़ी, और AWS में Greengrass project तथा developer tools पर काम करते हुए तकनीकी रुचि और नैतिक मानकों दोनों को साथ लेकर career decisions किए

On Open Source and Industry Trends: Cutting Through the Hype

  • open source को सिर्फ collaboration tool नहीं, बल्कि developer relations, marketing strategy, और bottom-up adoption model के रूप में काम करने वाला जटिल ecosystem बताया गया
  • low-code और no-code trend पर उन्होंने कहा कि ऐसे दावे COBOL के दौर से दोहराए जाते रहे हैं, और इसे जटिल domains में सीमाओं वाला specialized approach मानते हुए संदेह जताया
  • AI और machine learning में उनके अनुसार समस्या technology नहीं, बल्कि नाम है; उन्होंने ‘advanced statistical techniques’ को ज्यादा सटीक शब्द बताया
  • उनका मानना है कि AI सिर्फ एक tool है, उसे किसी autonomous entity की तरह नहीं समझना चाहिए, और इसे मानव श्रम की जगह लेने के बजाय उसे support करने वाले high-level tool की तरह देखना चाहिए

Developer Tools and Preferences: Embracing Progress

  • Gosling अपने मुख्य development tool के रूप में NetBeans IDE का उपयोग करते हैं और Apache license आधारित open source तथा सक्रिय community के समर्थन में दिखते हैं
  • जो developers अब भी Vi या 70-80 के दशक के tools से चिपके रहते हैं, उनके लिए उन्होंने तकनीकी प्रगति को न अपनाने पर निराशा जताई
  • Vi को वे कभी-कभी इसलिए इस्तेमाल करते हैं क्योंकि वह हर जगह चल जाता है, लेकिन गंभीर development environment में modern IDEs के पक्ष में मज़बूती से खड़े हैं

The JVM Vision: From Academic Concept to Global Standard

  • Java Virtual Machine (JVM) की शुरुआती अवधारणा Gosling के graduate school के दिनों के architecture-neutral distribution format experiments और instruction translation research से निकली
  • यही आगे चलकर सिर्फ Java नहीं, बल्कि कई languages को अलग-अलग hardware पर चलाने वाले general-purpose execution platform technology में बदल गई
  • ‘Write once, run anywhere’ को शुरू में उनके doctoral thesis topic के रूप में यह कहकर खारिज किया गया कि इसमें पर्याप्त mathematical foundation नहीं है, लेकिन बाद में यह दुनिया के software development environment को बदल देने वाली practical technology बन गई

More Recent Work: Bridging IoT Gaps at AWS

  • AWS में Gosling ने IoT application framework Greengrass के development में हिस्सा लिया और जटिल समस्याओं को सुंदर ढंग से सरल बनाने वाला तकनीकी approach लागू किया
  • OTA updates, remote control, telemetry, network reliability, security, और credential management जैसी deployment और operations के बीच बार-बार आने वाली boilerplate tasks को abstract किया गया
  • device-side code को open source किया गया ताकि RISC-V जैसे Amazon की प्राथमिकता से बाहर platforms के लिए community-driven porting contributions को बढ़ावा मिले
  • बाद में जिस दूसरे developer tools project में उन्होंने काम किया, वह AI boom की लहर में रुक गया, जिससे तकनीकी प्रामाणिकता के बजाय trend-driven अव्यवस्था की समस्या सामने आई

AI Skepticism

  • हालिया इंटरव्यू में Gosling ने AI revolution को “mostly fraud” कहा और AI को एक विषैला marketing term मानने वाला संदेहपूर्ण दृष्टिकोण सामने रखा
  • वह मानते हैं कि यह गणितीय रूप से प्रभावशाली technology है, लेकिन AI नाम असल तकनीकी वास्तविकता यानी advanced statistical techniques की प्रकृति को धुंधला कर देता है
  • VC-driven AI wave को उन्होंने “fraudsters और hype merchants का जमावड़ा” कहा और वास्तव में उपयोगी technology के बजाय exit-focused short-term profit mindset की तीखी आलोचना की
  • उन्होंने चेतावनी दी कि AI में लगाया गया अधिकांश पैसा आखिरकार “black hole में खिंच जाएगा”, यानी बिना sustainability वाले trend-based capital flow पर सवाल उठाया

Is It a Vibe? AI Coding Tools: Impressive Demos, Limited Utility

  • generative AI coding tools पहली नज़र में प्रभावशाली लगते हैं, लेकिन जैसे ही चीज़ें थोड़ी जटिल होती हैं, उनकी सीमित संरचना सामने आ जाती है
  • ये tools सिर्फ मौजूदा code samples को scrape करके दोहरा सकते हैं, जबकि वास्तव में दिलचस्प समस्याएँ हमेशा नई होती हैं, इसलिए copy-based tools उनसे मेल नहीं खाते
  • expert development environments में patterned code अक्सर libraries में सिमट जाता है, इसलिए AI-based code generation वास्तविक development needs से संरचनात्मक टकराव में पड़ती है
  • Gosling के अनुसार AI की असली उपयोगिता एक ऐसे search tool की है जो वह documentation work संभाले जिसे कोई करना नहीं चाहता; उन्होंने खास तौर पर API usage समझाने वाले सहायक tool के रूप में इसकी अहमियत बताई

Java’s Evolution: Language Features and Runtime Improvements

  • हाल के Java language changes में type inference और array declaration style के सुधारों को developer convenience बढ़ाने वाले उपयोगी feature expansions माना गया
  • लेकिन Gosling ने ज़ोर देकर कहा कि Java की सबसे प्रभावशाली प्रगति JVM runtime environment और standard library की quality improvements में रही है
  • आधुनिक JVM code quality, thread performance और garbage collection के मामले में “अद्भुत स्तर” की execution performance दिखाती है
  • memory management और performance predictability में यह malloc-आधारित C language से अधिक प्रभावी है, और GC pause time को कुछ milliseconds तक घटाने वाली tuning capability का भी ज़िक्र हुआ
  • आज का JVM बेहद बड़े memory spaces को भी स्थिरता से संभालने वाला high-performance runtime environment माना जाता है

Programming Languages for Critical Infrastructure

  • FAA air traffic control system को किस language में rewrite किया जाना चाहिए, इस सवाल पर Gosling ने “यह ऐसा है जैसे घर बनाते समय पहले हथौड़ा चुनना” कहकर सवाल की बुनियाद ही अस्वीकार कर दी
  • उन्होंने ज़ोर दिया कि पहले communication systems, international regulations, flight paths और collision avoidance जैसे problem domain की विशेषताओं को साफ़-साफ़ समझना चाहिए, उसके बाद technology चुननी चाहिए
  • हालांकि उन्होंने यह भी जोड़ा कि reliability-critical large-scale systems के लिए Java एक मज़बूत candidate हो सकता है

The Future of Programming in an AI World

  • AI के आगे बढ़ने के बावजूद programming एक अनिवार्य skill बनी रहेगी, और Gosling ने कहा कि अगर उनके बच्चे होते तो वह उन्हें हर हाल में coding सिखाते
  • big tech executives का यह दावा कि AI मानव developers की जगह ले लेगा, उनके अनुसार काम का दबाव बढ़ाने के लिए दी जाने वाली self-serving धमकी भर है
  • systems को सही तरह समझने के लिए programming capability ज़रूरी है, और भले मशीनें मदद करें, इंसानी तकनीकी समझ की बुनियाद बनी रहनी चाहिए

Java’s Longevity Secret

  • Gosling के अनुसार Java के 30 साल से अधिक टिके रहने के कारण हैं वास्तविक समस्या-समाधान क्षमता, users के प्रति सम्मान, backward compatibility, productivity improvement, और reliability-केंद्रित philosophy
  • इसने language fashion के बजाय लगातार practicality पर ज़ोर दिया, और style से अधिक results पर केंद्रित design philosophy enterprise environments में खास तौर पर असरदार रही
  • software को “हमेशा सही ढंग से काम करना चाहिए” इस दृष्टिकोण से Java आज भी ईमानदार और व्यावहारिक engineering tool बना हुआ है

Oracle’s Stewardship: Better Than Expected

  • Sun Microsystems के अधिग्रहण के बाद Oracle के Java संचालन पर Gosling ने कहा कि उन्होंने “सोचे से कहीं बेहतर काम किया”, और अपेक्षा से अधिक अच्छे नतीजों पर आश्चर्य जताया
  • शुरुआत में उनके पिछले रिकॉर्ड के कारण उन्हें ‘loot and plunder’ जैसा डर था, लेकिन वास्तव में Java team को बाधित करने के बजाय उसकी रक्षा की गई; इस आधार पर उन्होंने independence और technology-centered operations की सकारात्मक सराहना की
  • उन्होंने यह ज़रूर कहा कि financial support कम था, लेकिन corporate interference के बिना technical team की autonomy बनी रही, जिसे उन्होंने बहुत महत्व दिया

Crab Lovers Unite!

  • Gosling लंबे समय से कहते रहे हैं कि वह उन्हीं लोगों के साथ काम करना चाहते हैं जिनके साथ वह भोजन करना भी पसंद करें; इससे people-centered collaboration standards पर उनका ज़ोर दिखता है
  • पत्रकार ने San Francisco के crab restaurant Thanh Long में संयोग से Gosling को देखा, और तकनीकी दुनिया के दिग्गज को रोज़मर्रा की साधारण ज़िंदगी में मिलने के उस पल को दर्ज किया
  • बाद में दोनों ने साथ में crab खाया और बातचीत की, और अगली मुलाकात भी वहीं करने के वादे के साथ technology से परे मानवीय गर्मजोशी भरे संबंध का एहसास कराया

13 टिप्पणियां

 
cosine20 2025-05-21

मुझे भी लगता है कि static typed languages में सबसे सहज और आसान भाषा Java है।

लेकिन general-purpose और practical development के नज़रिए से GUI वाले end-user oriented apps को Java में लिखना बहुत अच्छा विकल्प नहीं था। (उस दृष्टि से C# + .NET का संयोजन सबसे best है)
Java के फ़ायदों को देखते हुए, मुझे लगता है कि practical नज़रिए से backend या middleware में इसका इस्तेमाल सबसे अच्छा use case है।

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

 
mhj5730 2025-05-19

कूड़े के ढेर से TV खोलकर प्रोग्रामिंग की थी—यह किस्सा तो सचमुच किसी लेजेंड की शुरुआत जैसा लगता है।

 
ndrgrd 2025-05-18

यह सच है कि Java के बाद भाषाओं ने productivity पर ध्यान देना शुरू किया।

उससे पहले अक्सर इस्तेमाल होने वाला C++ आज भी पढ़ना तक भयावह लगता है। खासकर तब, जब आपको लंबे समय से चल रहे प्रोजेक्ट्स को छूना पड़े।

 
3ae3ae 2025-05-18

यह मानना मुश्किल है कि Java ने developer productivity को महत्व दिया है।
क्या Java जितनी गहराई से IDE पर निर्भर होकर विकसित हुई कोई और language है?

 
3ae3ae 2025-05-19

मैंने लापरवाही में एक टिप्पणी कर दी।

 
sunrabbit 2025-05-19

IDE पर गहरी निर्भरता कोई design-level समस्या नहीं है, बल्कि असामान्य रूप से विकसित हुए Java ecosystem की समस्या है.

सीधे शब्दों में कहें तो आज Java development करते समय जरूरी नहीं कि JetBrains के products ही इस्तेमाल किए जाएँ,
लेकिन जैसे सब लोग वही इस्तेमाल करते हैं.

और जब Java आया था, उस समय की programming languages की सूची देखें तो उनमें platform-dependent, यानी OS पर निर्भर implementations वाली भाषाएँ बहुत थीं.
Java ने ही Node, Python, C# जैसी भाषाओं की उस दिशा को दिखाया कि एक ही code अलग-अलग OS पर चल सके.

आज के समय में एक ही code का अलग-अलग OS पर चलने वाली compatibility एक स्वाभाविक "सामान्य समझ" बन चुकी है.

 
roxie 2025-05-26

> साफ़ कहें तो आज Java development करते समय ज़रूरी नहीं कि JetBrains के products ही इस्तेमाल किए जाएँ, लेकिन

इस हिस्से से... थोड़ी सहमति जताना मुश्किल है, हाय...

 
kwj9211 2025-05-19

अब यह थोड़ा स्वाभाविक लगने लगा है,
लेकिन जब Java आया था, तब बिना किसी नए build के stable तरीके से multi-platform support देना भर भी productivity के लिए काफ़ी बड़ी मदद नहीं रहा होगा क्या?

 
angrycoder 2025-05-18

Java से पहले की भाषाओं की तुलना में यह ज़्यादा प्रोडक्टिव लगती है।

 
ahwjdekf 2025-05-18

c++ > c# >= java

 
cosine20 2025-05-21

C# >= Java > C++

 
GN⁺ 2025-05-18
Hacker News की राय
  • Java का performance सबसे top स्तर का नहीं है, लेकिन C/C++ के बाद तीसरे स्थान के आसपास होने की धारणा बुरी नहीं लगती; यह Go से भी तेज़ है और Python या Ruby से 10 गुना से अधिक आगे है, इस बात से संतोष है। Java का syntax परफेक्ट नहीं है, लेकिन उसका consistent और predictable होना एक फ़ायदा है। Idea या Eclipse जैसे tools इस्तेमाल करें तो productivity की चिंता नहीं रहती। Memory management का तरीका Unix दर्शन से अलग है, लेकिन समझने पर यह एक ठीक-ठाक समझौता लगता है। इन trade-offs के बदले speed और memory safety मिलती है, साथ ही dynamic dispatch और hotswap जैसे फ़ायदे भी, इसलिए इसकी practical उपयोगिता पसंद आती है।
    • IntelliJ for Java जैसे tools दूसरी भाषाओं की तुलना में वाकई बेजोड़ लगते हैं। यह जानने की जिज्ञासा है कि Go community concurrent data structure containers बनाने को लेकर उतनी उत्साही क्यों नहीं है। Java में concurrency coding के लिए बेहतरीन containers को प्रोत्साहित करने वाली संस्कृति ईर्ष्या योग्य लगती है, और कभी-कभी java.util.concurrent या JCTools की याद आती है।
    • कॉलेज से अभी-अभी निकलने के शुरुआती दौर में लगता था कि Java सर्वगुणसंपन्न है, लेकिन बाद में समझ आया कि JVM और Java App Server tooling ही अपने समय से आगे थे। भाषा खुद 2006~2007 में productivity सुधरने से पहले निराशाजनक लगी थी। आजकल JVM पर चलने वाली JRuby, Clojure, Scala, Groovy, Kotlin जैसी दूसरी भाषाओं में रुचि है। उनमें JRuby दिलचस्प लगती है क्योंकि वह दो mature ecosystems का लाभ दे सकती है। Project Loom की वजह से JVM पर Ruby के Fiber इस्तेमाल करना संभव होना दोनों पक्षों के लिए फ़ायदेमंद है। Charles Nutter के योगदान को कम आंका गया है।
    • कहा जाता है कि Java, Go से तेज़ है, लेकिन व्यवहार में कई बार Go ज़्यादा तेज़ होता है या 2~10 गुना कम memory इस्तेमाल करता है, इसलिए दोनों लगभग समान स्तर पर लगते हैं। Go के value type optimization आसान बनाते हैं। Go का विशेष रूप से उल्लेख किया जाना दिलचस्प है, और C# के Java से तेज़ होने के आधार पर लगता है कि Java तीसरे नहीं बल्कि पाँचवें स्थान के आसपास है।
    • हाल में Java में आए sealed class, switch expression, Project Loom, records जैसी चीज़ें मौजूदा syntax में बहुत स्वाभाविक रूप से घुली-मिली लगती हैं, यह बात काफ़ी सराहनीय है। Heap dump analyzer और GC analyzer जैसे Java के diagnostic tools भी सर्वोत्तम स्तर के लगते हैं।
    • language performance ranking इस बात पर निर्भर करती है कि उसमें क्या शामिल किया गया है और तुलना कैसे की गई है; दिए गए benchmark link को देखने की सलाह दी गई।
  • Java(JVM) को कुछ समय के लिए “बेहतर” बताई जाने वाली दूसरी भाषाएँ/ecosystems इस्तेमाल करने के बाद उल्टा और ज़्यादा सराहने का अनुभव हुआ। अक्सर लगा कि यह बस “दूसरे की थाली ज़्यादा बड़ी लगती है” वाली धारणा है। Rust ही एक ऐसी भाषा लगी जिसमें सचमुच बहुत प्रगति हुई है और जिसे इस्तेमाल करने में आनंद था। अफ़सोस है कि आजकल startup जगत में Java को “cool” भाषा नहीं माना जाता, जबकि productivity का फ़र्क भी लगभग मिट चुका है।
    • Rust को दो महीने full-time इस्तेमाल किया, लेकिन कम-से-कम server development में Java की तुलना में उसमें “आनंद” होने वाली बात समझ नहीं आती। Rust में lifetime issues के कारण productivity पर अचानक चोट करने वाले पल बहुत आते हैं। Type safety का एहसास मज़बूत है, लेकिन कुल मिलाकर इसे सचमुच सुखद अनुभव कहना कठिन है।
    • C# कई मायनों में Java से काफ़ी आगे है, और meaningful तरीकों से अलग दिखता है, जैसे बहुत बेहतर generics, बहुत पहले से मौजूद value types, और सुविधाजनक FFI। Unity के अलावा लोग इस पर बहुत ध्यान नहीं देते, और लगता है कि Microsoft पहले व्यापक जन-मान्यता बनाने में विफल रहा।
    • यह एहसास शायद project scale के फ़र्क की वजह से है। आम तौर पर 10 साल पुराने बड़े Java legacy project से निकलकर किसी “नए” hello-world स्तर के project पर जाएँ तो वह स्वाभाविक रूप से बेहतर लगेगा। बड़े पैमाने का rewrite security review के लिए अच्छा हो सकता है, लेकिन आम कंपनियों के पास इसके लिए गुंजाइश नहीं होती; Google जैसी कुछ अपवाद ही हैं।
    • बिल्कुल वही अनुभव; Go निराशाजनक रहा। उसने सब कुछ वादा किया, लेकिन अंत में Java जैसा ही या उससे भी पीछे महसूस हुआ, जैसे stack trace के बिना errors।
    • लगभग 30 साल के करियर के बीच के दौर में JVM के बाहर की भाषा में project करने के लिए बिताए गए 2 साल पूरे करियर का सबसे बुरा समय थे।
  • James Gosling के योगदान के लिए आभार। Java World Tour की बदौलत “Java consultant” खोजने पर शीर्ष परिणाम में आकर remote work से गाँव में स्थिर जीवनयापन कर पाने का अनुभव रहा। Java की वजह से जीवन पर सकारात्मक असर पाने वाले अनगिनत लोग हैं। Clojure टीम ने JVM आधारित शानदार ecosystem बनाया, यह भी प्रशंसनीय है।
    • James Gosling के प्रति स्वयं भी आभार। 1995 में Taligent में C++ पर काम करते हुए पहली बार Java इस्तेमाल किया और उसकी नवीनता से प्रभावित हुआ। बाद में Taligent के विघटन के बाद लंबे समय तक Java और उससे जुड़े software के साथ काम किया।
    • James Gosling(Java) और Rich Hickey(Clojure) को अपने-अपने समय में programming जगत में ताज़गी भरने वाले सर्जक माना गया।
  • पिछले कुछ वर्षों से .NET/C# में काम किया, लेकिन कुल मिलाकर JVM/Java अब तक आज़माए गए ecosystems में सबसे बेहतर लगता है। Java ने बहुत-सी समस्याओं को बेहतर ढंग से हल किया है। उदाहरण के लिए Java ने fork/join pool से work partitioning हल किया, जबकि .NET ने बस global thread pool में work-stealing जोड़ दिया, जिससे sync-over-async code पूरे deadlock को आसानी से जन्म दे सकता है। बड़े codebase में sync code को पूरी तरह async में बदलना व्यावहारिक रूप से असंभव है। Java पक्ष में library/framework स्तर की गलतियों से भी जल्दी उबर लिया जाता है, जबकि .NET में अगर समस्या standard library, language या runtime में हो तो उसे ठीक करना कठिन होता है। कई मामलों में Java ने सही baseline तय की है।
    • .NET का thread pool starvation बहुत झुंझलाहट भरा है, हालाँकि सुना है कि हाल में इसका असर कुछ कम हुआ है। Thread pool के दुरुपयोग से पूरी तरह immune implementation संभव नहीं लगती। जो किया जा सकता है वह है threads बढ़ाना या काम के क्रम को अधिक समझदारी से समायोजित करना। लिखने वाला खुद को thread pool expert नहीं मानता।
    • लगता था कि .NET ने Java ecosystem के सफल तरीकों की नकल की होगी, लेकिन वास्तव में दोनों में कई अंतर हैं, यह बात ध्यान खींचती है।
    • .NET code बिल्कुल न लिखते हुए deadlock की समस्या उठाना निष्पक्ष नहीं है, और 13 साल पुराने blog को आधार बनाना भी बहुत प्रभावी तर्क नहीं है।
  • Java को एक महान success story माना गया, लेकिन James Gosling केवल शुरुआती बिंदु थे, वास्तविक leader नहीं। Java 1.1~1.2 के समय से Mark Reinhold ने JIT integration, HotSpot development, 1.2 में classes की बड़ी वृद्धि, Oracle अधिग्रहण के बाद dynamic language support, open sourcing, तेज़ release cycle, आधुनिक language features की नींव जैसी अनेक innovations का नेतृत्व किया। Java की ताकतें Mark Reinhold के leadership की देन मानी गईं।
    • पूरी मुख्य development team प्रभावशाली है। Gosling एक practical language चाहते थे, और उसके बाद Mark Reinhold, Brian Goetz जैसे लोगों ने भाषा को developers के अनुकूल आगे बढ़ाया। Oracle पसंद न होने पर भी इस उत्कृष्ट समूह को आगे बढ़ाने के लिए आभार है।
    • यह इंगित किया गया कि Kotlin, Java की तरह एक statically typed language है, dynamic language नहीं।
    • जैसे Linus ने git को सिर्फ़ 2 हफ़्ते hack करके शुरुआत की spark दी, और फिर community ने उसे आगे बढ़ाया; उसी तरह केवल शुरुआती बिंदु के आधार पर मूल्यांकन अधूरा है।
  • 40+ उम्र के software engineer के रूप में व्यावहारिक रूप से “काम ठीक से कर देने वाले tools” चुनना समझदारी है। आज के समय में Java या C# यह भूमिका अच्छी तरह निभाते हैं। व्यक्तिगत रूप से C# का ecosystem ज़्यादा एकीकृत लगता है। किसी भी use case के लिए C# में 1 मिनट में app बनाया जा सकता है, language evolution तेज़ है और talent supply भी स्थिर है। .NET भी cross-platform support देता है। भाषा की अपनी elegance और efficiency काम को आसान बनाती है।
  • कॉलेज में OS code को Java में simulate करने का अनुभव रहा। यह समझ आता है कि abstract algorithms पढ़ने में Java complexity कम कर सकती है, लेकिन व्यक्तिगत रूप से Python अधिक उपयुक्त होती। Industry के प्रभाव से विश्वविद्यालयों में शुरुआती शिक्षा के लिए हर हाल में Java पर अड़े रहना सहमत होने लायक नहीं लगता। स्कूल में BASIC और C पहले ही पढ़ चुके थे, इसलिए Java में OS low-level code simulate करना एक कदम पीछे जैसा लगा।
    • कॉलेज में C से microcontroller, Java से data structures/OOP, और C व MIPS assembly से systems/OS/concurrency concepts सीखे। Data structures/algorithms में Java, Python की तुलना में abstract types और structures को अधिक स्पष्ट रूप से अलग करती है, इसलिए सटीक concepts बनाने में बेहतर लगती है। लेकिन OS concepts को Java में पढ़ाना थोड़ा ज़्यादा लगता है।
    • Joel द्वारा बताए गए Java शिक्षा के नुकसान Python जैसी दूसरी high-level भाषाओं पर भी लागू होते हैं; विडंबना यह कि MapReduce (जिसे Google ने Java में बनाया) Microsoft से आगे निकला, इस बात पर ज़ोर दिया गया।
  • Java की सफलता स्वीकार है, लेकिन कई कारणों से उसके प्रति गहरी अरुचि बनी हुई है। ज़्यादातर बड़ी कंपनियों के verbose code, जटिल frameworks और निम्न-गुणवत्ता वाले code की विरासत इसके पीछे है। ऐसा लगा कि code “कोयले की तरह” उगल दिया जाता है और काम में जुनून या व्यक्तित्व नहीं बचता। JVM भीतर से black box जैसा लगता था, इसलिए strace, gdb जैसे tools से debugging कठिन थी, और memory over-allocation के कारण kernel के लिए workload समझना मुश्किल होता था। JVM इस्तेमाल करते समय expert मदद के बिना गंभीर समस्याओं का जोखिम भी ज़्यादा महसूस हुआ। फिर Oracle, licensing, JDK version management, 2025 में इसकी “cool” image न होना, और legacy code का बोझ — ये सब भी खटकते हैं। व्यक्तिगत रूप से Java को यथासंभव टालते हुए भी करियर बनाया। आजकल operational complexity कम रखने वाली static compilation, छोटे executable, और high-performance भाषाएँ ज़्यादा हैं, इसलिए JVM, Python VM जैसी solutions की भूमिका भी धीरे-धीरे कम होती लगती है।
    • JVM दुनिया के सर्वोत्तम debugging tools में से एक देता है: reframe restart, variable modification, exception breakpoints जैसी जबरदस्त dynamic debugging capabilities। Idea/Eclipse जैसे IDE integration की तुलना दूसरी भाषाओं से करना कठिन है। JMX/JConsole, Java Flight Recorder, jstack, HPROF जैसे diagnostics tools भी बहुत विविध हैं। Licensing open source है और उपयोग पर कोई रोक नहीं; Oracle JVM खरीदना केवल एक वैकल्पिक चुनाव है। Legacy code समस्या से उनका क्या मतलब है, यह भी पूछा गया।
    • JAVA में “coolness” नहीं है, यह तर्क प्रभावी नहीं लगता; strace/gdb के बजाय JDK tools और IDE कहीं अधिक शक्तिशाली हैं।
    • tools शुरुआत में देखने में कठिन लग सकते हैं, लेकिन उनकी आदत जल्दी हो जाती है। JVM का GC tuning भी एक हफ़्ते में विशेषज्ञ स्तर तक सीखा जा सकता है। GC, kernel की तुलना में application context को बेहतर समझकर manage करता है, इसलिए वास्तविक लाभ अधिक हैं; हालाँकि provisioning complexity कुछ बढ़ती है, यह माना गया।
    • 20 साल से अधिक Java इस्तेमाल करने पर भी कभी strace/gdb की ज़रूरत नहीं पड़ी; debugging/IDE support बहुत शक्तिशाली है। Performance के मामले में Python और JVM को एक ही स्तर पर रखना उचित नहीं है।
    • लगता है कि यह राय ऐसे व्यक्ति की है जिसने वास्तव में Java का बहुत कम इस्तेमाल किया है; Java के debugging/diagnostic tools के श्रेष्ठ होने की फिर पुष्टि की गई।
  • यह तथ्य सामने आया कि Sun में रहते हुए Gosling ने NeWS window system के co-design में भाग लिया था। NeWS, Postscript आधारित था और उसकी संरचना ऐसी थी कि clients server को program भेजते थे। Gosling द्वारा Java डिज़ाइन करते समय शायद वेब पेज को programmable रूप में देखने का प्रभाव NeWS से आया था। वास्तव में लेखक के हस्ताक्षर वाली The Java Programming Language पुस्तक पर जब पूछा गया, “क्या Java, NeWS का बदला है?”, तो Gosling ने मुस्कुराकर जवाब दिया।
    • जैसे X के बाद Wayland आया, वैसे NeWS के बाद browser+JavaScript(PWA, Electron) जैसे उत्तराधिकारी आए। अंततः लगता है कि NeWS वाला विचार Microsoft वातावरण में भी जीत गया; इस पर Gosling क्या सोचते होंगे, यह जिज्ञासा है।
    • इसी तरह Display PostScript भी था। SPARCStation+SPARCprinter संयोजन में print logic पूरी तरह server पर चलता था; server या printer में से कोई एक भी खराब हो जाए तो पूरा system ठप पड़ जाता। Print server-printer integration एक दुःस्वप्न बन गया था और अंत में printers पर अविश्वास ही बढ़ा। SunOS और SPARC ecosystem की याद आती है, लेकिन Display PostScript को विदा होते देख कोई अफ़सोस नहीं।
  • करियर का बड़ा हिस्सा JVM पर coding में बीता। हाल के समय में Java के बजाय Scala, Clojure(पसंदीदा), Kotlin आदि इस्तेमाल किए। हाल ही में बेरोज़गारी के बाद Python की नौकरी का प्रस्ताव मिला और स्वीकार कर लिया। JVM अनुभव की माँग घटती दिख रही है। फिर भी तनख्वाह मिलती रहे तो कोई भी भाषा स्वीकार्य है। इस समय personal project Scala में चल रहा है।
 
roxie 2025-05-26

बीच में C# गैंग छिपा हुआ है।