Last Updated on July 9, 2022 by RAJENDRAPRASAD
Java in Hindi – Hello दोस्तों rajhindime.in में आपका स्वागत है |
दोस्तों, पिछले पोस्ट Object oriented programming in Hindi – में आपने Object Oriented Programming Languages तथा उसके Concepts के बारे में जानकारी प्राप्त की | आज के इस पोस्ट Java in Hindi में – आप Java के बारे में विस्तार में जानेंगे |
Java क्या है | What is java in Hindi
Java यह एक अत्यधिक उपयोग की जानेवाली Programming Language है, जिसे internet के distributed environment में उपयोग करने की किए design किया गया है | यहाँ distributed का अर्थ है, कोई भी चीज़ जिसे अनेकों (multiple) system में share किया जा सके, ये system अलग-अलग जगह (location) पर भी हो सकते हैं |
Java का उपयोग करके बनाए गए applications, जरुरत के अनुसार एक ही system में run किए जा सकते है अथवा उन्हें network में उपस्थित client और server के बीच distribute भी किया जा सकता है |
Android smartphone के लिए यह बहुत ही प्रसिद्ध programming language है, Android Application, जो Android Smart phone में उपयोग होता है यह Google द्वारा Java को Linux के साथ जोड़कर बनाया गया है |
Java का इतिहास | History of Java
Java यह एक High level programming language है, जिसे James Gosling और उनके साथियो ने Sun Microsystems नाम की company के अंतर्गत 1995 में develop किया | James Gosling को Java का प्रमुख Developer माना जाता है | इस language को develop करने के पीछे उनका एक ही मकसद था, “WRITE ONCE, RUN ANYWHERE ” जिसका मतलब यह है कि इसे एक बार ही लिखा जायेगा और इसका उपयोग हर जगह किया जायेगा |
सर्व प्रथम इसका नाम Oak रखा गया था, परन्तु बाद में में इसे Java नाम दे दिया गया, क्योंकि Oak Technologies Company पहले से ही एक registered नाम था |
प्राथमिक तौर पर, इसे consumer electronic devices जैसे set-top box, television, VCR software आदि के लिए develop किया गया था, परन्तु आगे चलकर यह web application बनाने के लिए एक प्रसिद्ध विकल्प (popular option) बन गया |
2010 में Sun Microsystems को Oracle द्वारा खरीद लिया गया |
Java के विभिन्न Versions
Version | Release Date | |
Jdk Beta | 1995 | |
Jdk 1.0 | 23 January 1996 | |
Jdk 1.1 | 19 February 1997 | |
J2SE 1.2 | 8 December 1998 | |
J2SE 1.3 | 8 May 2000 | |
J2SE 1.4 | 6 February 2002 | |
J2SE 5.0 | 30 September 2004 | |
Java SE 6 | 11 December 2006 | |
Java SE 7 | 7 July 2011 | |
Java SE 8 | 18 March 2014 | |
Java SE 9 | 9 August 2017 | |
Java SE 10 | 20 March 2018 | |
Java SE 11 | 25 September 2018 | |
Java SE 12 | 19 March 2019 | |
Java SE 13 | 17 September 2019 | |
Java SE 14 | 17 March 2020 | |
Java SE 15 | Expected in September 2020 |
Java के Features
Simple Language:
Java बहुत ही सरल और आसान programming language है | इसे सिखने के लिए किसी भी prerequisites की जरुरत नहीं है, अर्थात यदि आपको किसी भी programming language का ज्ञान न हो, फिर भी आप directly, Java सीखना शुरू कर सकते हैं | Java को सरल बनाने के लिए अन्य programming language (C, C++) के बहुत से जटिल (complex) और भ्रमित (confusing) features जैसे Pointer, Multiple Inheritance को Java से हटा (remove) दिया गया है |
Platform independent:
Java में लिखे गए programs को, किसी भी platform पर run किया जा सकता है, क्योंकि Java, “Write Once, Run Anywhere” के सिद्धांत (principle) पर कार्य करता है|
इसका अर्थ यह है कि, यदि आप ने कोई भी Java program लिखा है, तो आप उसे किसी भी Plateform जैसे Mocrosoft Windows, Linux, MacOS, Unix आदि पर run कर सकते हैं |
Architecture-Neutral:
Java Program कभी भी, किसी भी platform से direct communicate नहीं करता | Execution के दौरान सबसे पहले Java में लिखे Source Codes, Compiler द्वारा Bytecode में बदले जातें हैं, जो machine independent होते हैं, उसके बाद यही Bytecode, JVM अर्थात Java Virtual Machine की सहायता से machine code में बदल दिए जाते हैं |इसलिए Operating System, processors और system resources में किया गया कोई भी बदलाव (changes or upgrades), Java programs में किसी भी प्रकार का परिवर्तन (changes) नहीं करता |
Portable:
यह बिल्कुल Mobile Number Portability (MNP) की तरह कार्य करता है, जैसे MNP (Idea से Airtel) करने पर Mobile number वही रहता है, केवल service provider बदल जाता है, अर्थात आप आपने mobile number को किसी भी service provider से जोड़ (link) कर सकते हैं, जो आपके किए सुविधाजनक हो |
ठीक उसी तरह, आप अपने Java bytecode को भी, किसी भी platform पर carry करके run कर सकते हैं, code में बिना कोई बदलाव (changes) किए | इसे आप Java program portability भी कह सकते हैं |
Secure:
जैसा कि आप जानते हैं कि, Java Program कभी भी किसी भी machine से direct communicate नहीं करता | सबसे पहले source code, bytecode में बदला जाता है और फिर JVM द्वारा उसे machine code में बदल दिया जाता है |
Execution के पहले JVM हमेशा यह सुनिश्चित करता है कि, दिया गया bytecode valid compiler द्वारा ही generate किया गया हो तथा bytecode का format ठीक हो | यदि bytecode के अंदर कोई भी problem हो अथवा code ठीक से formatted न हो, उस स्थिति में JVM bytecode को run नहीं होने देता और VerifyError raised कर देता है |
इस तरह Java program, system के लिए कोई समस्या पैदा नहीं करता और पूरी तरह secure होता है | Bytecode को verify करने की पूरी जिम्मेदारी, JVM के अंदर उपस्थित Bytecode verifier पर होती है |
Object Oriented:
Java यह Object oriented programming language है | Java में अधिकांश समय, सभी चीजों को objects के रूप में handle किया जाता है | Java OOPs के सभी concepts Abstractions, Encapsulation, Inheritance तथा Polymorphism को support करता है |
Multi-threaded:
एक ही program के विभिन्न (several) parts, जो एक-दूसरे पर निर्भर न हों, अर्थात independent हों, उन्हें एक साथ execute करने की क्रिया ही Multithreading कहलाती है | Multithreading के बारे में हम आने वाले post में विस्तार से जानेंगे | अभी के लिए आप को कम शब्दों में बताना चाहूँगा |
मान लो, कोई एक program जो 1000 lines के code से बना हुआ है, अगर JVM उसे एक-एक line execute करता है तो उसमे उसे बहुत समय लगेगा | परन्तु अगर आप जानते हैं कि उन 1000 lines के code में 500 lines के code दूसरे 500 lines के code से बिल्कुल अलग हैं, तो आप उन्हें इस तरह execute कर सकते हैं कि दोनों 500-500 lines के code एक साथ run हो, इससे पूरा 1000 lines को code पहले कि तुलना में कम समय में execute हो जाएगा |
आइए इसे, एक real life example द्वारा समझें |
आप सभी Cinema Hall जरूर गए होंगे, वहाँ पर gate के अंदर घुसने से पहले एक आदमी आपका ticket जमा करता है और अंदर जाने पर एक दूसरा आदमी seat ढूढ़ने में आपकी मदद करता है | चूँकि, यहाँ दो आदमी दो अलग-अलग कार्य एक साथ कर रहें हैं, कार्य जल्दी पूरा हो जाता है | अगर यही दोनों कार्य, एक ही आदमी करे तो पहले कि तुलना में बहुत अधिक समय लगेगा | यहाँ इस उदाहरण में दो आदमी अर्थात दो threads दिए गए कार्य (progarm) को पूरा अर्थात execute कर रहे हैं, जिससे दिया गया कार्य (program) कम समय में execute हो गया |
Multithreading के प्रयोग द्वारा application का performance बेहतर (improve) होता है | Multithreading का सबसे बड़ा advantage यह है कि यह हर एक thread अलग-अलग Memory Area occupy नहीं करता | एक ही process में उपस्थित सभी threads उसी process की memory area को ही occupy करते हैं अर्थात वे सभी common memory area occupy करते हैं |
Thread यह Multi-media, Web Applications इत्यादि के लिए बहुत ही important है | Java में Multithreading को support करने के लिए बहुत सारे inbuilt API हैं जैसे Thread Class, Runnable interface इत्यादि |
Robust:
Robust का अर्थ है बहुत ही मजबूत | Java programs के fail होने कि संभावना (possibility) बहुत ही कम अर्थात न के बराबर होती है | आइए जानें ऐसा क्यों है ?
Java एक strongly Typed Language है | Type compatibility के लिए compiler, program code में लिखे गए प्रत्येक declarations और assignments को compile time के दौरान ही check कर लेता है | अगर type से संबंधित कोई भी problem मिले, उसे यह compile time के दौरान ही पहचान (identify) लेता है, जिससे आगे चलकर run time में program के execution में कोई problem न हो |
Automatic memory management के लिए Java, Garbage Collector का उपयोग करता है | Garbage Collector का कार्य है, ऐसे objects जो अब उपयोग में नहीं हैं, उन्हें नष्ट (destroy) करना और उनके द्वारा घेरे गए अर्थात occupied memory location को खाली (release) करना | इससे Java programs में memory से संबंधित कोई problem नहीं होती | इस तरह Java बहुत ही मजबूत अर्थात robust language है |
Java, exception handling के concept को use करता है जो run time के दौरान programs के abnormal termination को रोकता है | इस concept को हम आगे आने post में विस्तार से जानेंगे |
Platform independent होने के कारण Java programs को किसी भी platform पर run किया जा सकता है |
इन सभी सुविधाओं के कारण Java programs के fail होने कि संभावना (possibility) बहुत ही कम अर्थात न के बराबर होती है | इस तरह Java बहुत ही मजबूत अर्थात robust language है |
Distributed:
यदि किसी application की functionality बहुत सारे machine अर्थात JVM में बटीं (distributed) हो, इस प्रकार के application को distributed कहते हैं, इसके दो फायदे (advantage) हैं पहला, इससे application के load को balance किया जाता है | दूसरा इससे failover situation को handle किया जाता है |
आइए जाने, यह application load क्या है | आपने अक्सर देखा होगा, जब आप किसी सरकारी (Govt.) exam की online application form भरने लगते है तो वह अचानक hang हो जाता है, ऐसा इसलिए होता है कि बहुत सारे लोग एक साथ, एक ही website से online application form भरने लगते है जिससे website पर load बढ़ने लगता है और अंत में hang हो जाता है | अगर यही application form भरने कि सुविधा एक से अधिक websites पर उपलब्ध हो अर्थात distributed हो तो hang होने कि संभावना बहुत ही कम हो जाती है |
अब जानतें हैं application failover क्या है, ऊपर के उदाहरण में अगर application form भरने कि सुविधा एक से अधिक websites पर उपलब्ध हो तो, आगे चलकर किसी कारणवश यदि कोई एक website काम करना बंद कर दे तब भी user को कोई ज्यादा problem नहीं होगा, वह अन्य उपलब्ध website को उपयोग करके form भर लेगा |
Java distributed programming को support करने के लिए विभिन्न technology जैसे Remote Method Invocation (RMI), Enterprise Java Beans (EJV), Common Object Request Broker Architecture (CORBA) का उपयोग करता है |
Compiled and Interpreted:
Java, यह compiled और interpreted programming language दोनों ही है |
सबसे पहले, Java Compiler लिखे गए Source Codes को compile करके उसे Byte Code में बदल देता है जो machine independent होते हैं | उसके बाद Runtime के दौरान JVM उसी Byte Code को interpret करके उसे Machine Code में बदल देता है और उस Machine Code को execute भी कर देता है |
High Performance:
अन्य interpreted language की तुलना में Java का execution बहुत ही fast है क्योंकि Byte Code, Machine Code के बहुत ही करीब है | Java एक high performance language है इसका सबसे बड़ा कारण है JIT अर्थात Just In Time compiler
आइए जानें JIT अर्थात Just In Time compiler क्या है ?
मान लो कोई program, जिसके अंदर एक function है, जिसकी code 1000 lines की है, और आप उस function को बार-बार program में call कर रहे हैं | जब आप function को पहली बार (first time) call करते है तो एक normal interpreter, हर एक लाइन को एक-एक करके read-interpret-execute करेगा | दूसरी बार जब आप उसी function को call करेंगे तब भी interpreter हर एक लाइन को फिर से एक-एक करके read-interpret-execute करेगा, यह process बार-बार चलता रहेगा, जब-जब आप उस function को call करेंगे, चाहे आप उसे 100 बार call करें | इससे program का execution slow हो जाएगा |
अब समझतें है इस case में JIT अर्थात Just In Time compiler किस प्रकार कार्य करेगा | जब आप उस fuction को 2 अथवा 3 बार से अधिक call करतें हैं, तो JIT उस function को identify कर लेता है, कि यह बार-बार call होगा | तब JIT उस function के हर एक lines को एक साथ Machine code में बदल कर रख लेता है और फिर जब आप उस function को call करेंगे तो JIT उसे directly execute कर देगा, चाहे आप उसे 100 बार call करें |
इस तरह JIT अर्थात Just In Time compiler द्वारा program का execution पहले की तुलना में बहुत fast हो जाता है |
Dynamic:
Java program में उपस्थित सभी .class files एक साथ load नहीं किए जाते | runtime के दौरान जब JVM को किसी class की जरुरत होती है, उसके बाद ही उस class से संबंधित .class file load होती है | इस तरह java में .class files, on-demand load होते है | इसका advantage यह है कि program हमेशा latest .class files को execute करता है इससे memory utilization बेहतर (improved) होता है |
Types of Java Application
1. Standalone Application
आप अपने desktop में बहुत सारे applications का use करते हो जैसे, Goggle Chrome, VLV Player, Microsoft Office, Notepad++, Anti-Virus software इत्यादि | यह सभी Standalone Application ही हैं | इन्हे Desktop Application अथवा Window-based Application भी कहते हैं |
Java में Standalone Application बनाने के किए Abstract Window Toolkit (AWT) और Swing का उपयोग किया जाता है |
2. Web Application
Web Application ऐसे applications होते हैं जो Server पर run होते हैं और Client इन्हें अपने system पर उपयोग करता है | उदाहरण के लिए email sites जैसे Gmail, Rediffmail , online retail sales site जैसे Flipkart , Amazon , जानकारी देनेवाली website जैसे Wikipedia, rajhindime.in इत्यादि सभी Web Application ही हैं |
Java में Web Application बनाने के किए JSP, Servlet, Spring, Hibernate आदि का उपयोग किया जाता है |
3. Enterprise Application
यह विशाल Software Applications होते हैं जिन्हें corporate environment जैसे Business या Goverment में operate अर्थात कार्य करने के लिए design किया जाता है |
Organization की सभी या अधिकतर (major) जरूरतों को पूरा करना, उनके problem को solve करना इनका मुख्य उद्देश्य होता है | मुख्य रूप से इन्हें Banking business system में कार्य करने के लिए design किया जाता है | School Management system भी Enterprise Application का एक अच्छा उदाहरण है |
Enterprise Application बहुत ही complex, distributed, component based होते हैं, यह Database का भी use करते हैं | यह Load balancing तथा highly level security प्रदान करते हैं |
Java में Enterprise Application बनाने के किए Enterprise Java Bean (EJB) का उपयोग किया जाता है |
4. Mobile Application
ऐसे Applications जिन्हे Mobile phone और Tablets में run करने के किए develop जाता है, उन्हें Mobile Application कहते हैं | Google Play Store में उपस्थित सभी Applications जैसे Whatsapp, Facebook, SHAREit, ColorNote, MX Player आदि Mobile Application हैं |
Java में Mobile Application बनाने के किए Android और Java ME (Java Micro Edition) का उपयोग किया जाता है |
Java Editions
1. Java SE (Java Standard Edition)
इसका उपयोग Desktop तथा Server Application बनाने के लिए किया जाता है |
Java SE में विभिन्न प्रकार के general purpose API जैसे java.io, java.lang, java.math, java.util इत्यादि उपलब्ध (available) हैं, जिन्हें programmer application develop करने के दौरान, आवश्यकतानुसार use करता है |
यह high-level Classes प्रदान करता है जो networking, security, database access, GUI development तथा XML parsing में use होते हैं |
इसमें core topics जैसे OOPs ,String, Inner Classes, Multi-threading, Exception Handling, I/O Stream आदि का समावेश है, जिन्हे हम आगे आने posts में विस्तार से जानेंगे |
2. Java EE (Java Enterprise Edition)
इसका उपयोग Web Applications तथा large-scale enterprise applications develop करने के लिए किया जाता है |
Java EE applications, application server जैसे IBM के WebSphere , Oracle के GlassFish अथवा Red Hat के WildFly server पर host किए जाते हैं, यह सभी server या तो Cloud, या फिर corporate data center पर run होते हैं |
एक तरफ जहाँ Java EE applications, server-side host होते हैं वहीं Java EE applications client-side में internet of things(IoT) device, smartphone, RESTful web services, standard web-base applications, WebSocket अथवा microservices जो कि Docker container पर run होते हैं |
3. Java ME (Java Micro Edition)
Java ME platform, Java programming language से बने applications को small device जैसे Mobile phone अथवा Tablets पर run करने के लिए , एक API तथा small-foot virtual machine प्रदान करता है |
Java ME applications अक्सर Java EE platform services के लिए Clients का कार्य करते हैं |
4. JavaFX
यह एक java library है, जिसका उपयोग desktop applications develop करने के साथ ही साथ Rich Internet Applications (RIA) को develop करने के लिए किया जाता है | JavaFX द्वारा बने applications बहुत सारे platform जैसे web, mobile, desktop पर run हो सकते हैं |
Conclusion – आज आपने क्या सीखा
इस post में आपने Java, Java के इतिहास, उसके Features, Applications तथा Editions के बारे में विस्तृत जानकारी प्राप्त की | आशा है कि, आपको मेरा यह Blog Java in Hindi जरूर पसंद आया होगा |
अगर आप इस post से related कोई सवाल पूँछना चाहते हैं अथवा कोई सुझाव देना चाहते हैं तो comment करके जरूर बताएं, मैं उसका reply जरूर दूँगा |
इस post को अपना कीमती समय देने के लिए बहुत बहुत धन्यवाद् | फिर मिलेंगें |
Nice article..keep it up
Thank you!