Introduction to Java
History of Java
Java एक general purpose object oriented programming लैंग्वेज है। Sun Microsystems ने java 1991 में U.S. में बनायीं थी। पहले java का नाम oak रखा गया था लेकिन बाद में इसे change करके java किया गया था। Java James Gosling ने develop की थी।
मुख्यतः java को consumer electronics जैसे की TV, VCR आदि software बनाने के लिए develop किया गया था।
Java का सबसे important और popular feature था की java platform independent थी। क्योंकि java किसी एक particular hardware या operating system के लिए नहीं बनायीं गयी थी। इसलिए java में बनाये हुए program किसी भी system पर execute किये जा सकते है। Java का ये feature java को आज भी सबसे popular लैंग्वेज बनाता है।
Features of Java
Java के बहुत सारे features है। एक अच्छा java programmer बनने के लिए आपको ये सभी features पता होने चाहिए। आइये java के कुछ popular features के बारे में जानने का प्रयास करते है।
Compiled and Interpreted
ज्यादातर programming languages या तो compiled होती है या interpreted होती है। लेकिन java इन दोनों approaches को combine करती है और एक two stage system बनाती है। पहले तो java आपके program को compiler करके byte code generate करती है।
Byte code machine instructions नहीं होते है। इसलिए java second stage में bytecode को interpret करके machine code generate करती है, जिसे directly execute किया जा सकता है।
Platform Independent
Java को bytecode platform independent बनाता है। जब आप किसी java program को compile करते है तो वो byte code में convert हो जाता है। ये byte code किसी भी मशीन या operating system पर नहीं चल सकता है। ये सिर्फ JVM (Java Virtual Machine) पर चलता है।
Java के program को run करने के लिए आपको अपने operating system पर JVM install करना पड़ता है। हर operating system के लिए अलग JVM होता है लेकिन काम सभी एक ही करते है।और वो काम होता है उस operating system के लिए bytecode को machine code में convert करना।
इसलिए किसी एक operating system के JVM द्वारा generate किया गया bytecode कोई भी दूसरी JVM पर run किया जा सकता है।और फिर JVM उस operating system के लिए machine code generate कर देती है। इसलिए अलग अलग machines के लिए अलग अलग machine code generate होता है लेकिन वो एक ही byte code से generate होता है क्योंकि आपका program पहले byte code में convert होता है।
Object Oriented
Java एक true object oriented programming language है। Java में almost सब कुछ object है। Java में सारी information objects के रूप में store होती है।
Robust and Secure
यदि user experience की बात की जाए तो java एक robust language है। Java में बनाया हुआ कोई भी program अलग अलग environments में अलग अलग technologies के साथ बिना crash हुए काम कर सकता है। इसके programs कभी crash नहीं होते है। ये बहुत ही reliable language है। Java में security JVM के द्वारा provide की जाती है। Machine code generate करने से पहले JVM पर कुछ tests रन करके invalid combinations को detect करती है।
Distributed
Java से आप distributed applications क्रिएट कर सकते है। Distributed applications वो applications होती है जो अलग अलग networks पर होती है। और एक साथ मिलकर task perform करती है। Java में RMI के through आप दूसरे network पर available applications से interact कर सकते है।
Simple and Familiar
Java एक simple language है। Java के बहुत से features c और c++ से लिए गए है। Java का syntax c और c++ के जैसा है। जैसे की variable declarations, control statements और method declarations आदि। ये सब java को easy तो understand बनाते है। क्योंकि java c और c++ को ध्यान में रख कर बनायीं गयी है इसलिए ज्यादातर programmers को familiar लगती है।
Multi-threaded and Interactive
By default java एक multithreaded language है। कोई भी java program एक साथ कई tasks complete कर सकता है। ये feature java को fast और interactive बनाता है।
High Performance
यदि performance की बात की जाए तो java की performance बहुत impressive है। Java की speed का main reason byte code है। Java का architecture इस तरह से design किया गया है की java में runtime पर overhead बहुत कम होता है।
Dynamic and Extensible
Java एक dynamic language है। Java run time के दौरान libraries, methods और classes से dynamic linking करने में सक्षम है। इसलिए java को नयी technologies के साथ आसानी से यूज़ किया जा सकता है।
Ease of Development
Java में programs develop करना बहुत easy है। Java आपको built इन libraries provide करती है जिसमे आपके यूज़ के लिए important classes होती है। इससे programmer का overhead कम हो जाता है। Programmer इन libraries को access करके आसानी से software develop कर सकता है।
Object Oriented Principles of Java
जैसा की मैने आपको बताया java एक object oriented language है। Java भी सभी object oriented programming languages की तरह object oriented principles को follow करती है। आइये इन principles के बारे में जानने का प्रयास करते है।
Encapsulation
Encapsulation को data hiding भी कहते है। Encapsulation में आप private variables declare करते है। और उन्हें public methods के through access करते है आपके variables को आपकी ही class के methods access कर सकते है।
दूसरी कोई भी class आपके variables को access नहीं कर सकती है। इस प्रकार आप data को hide भी करते है और यूज़ भी करते है। Encapsulation का एक और मतलब होता है data और code को एक unit में bind करना और बाहर से access को रोकना। ऐसे आपका ऐसे आपके variables और methods एक ही unit में bind हो जाते है।
Java 3 level की data hiding provide करती है।
- public – आपके public class members को दूसरी classes access कर सकती है।
- private – आपके private class members को दूसरी कोई भी class access नहीं कर सकती है।
- protected – केवल आपकी class को inherit करने वाली class ही आपके class members को access कर सकती है।
Inheritance
इस principle के through आप एक class के variables को दूसरी class में access कर सकते है। ऐसा करने से आपको एक जैसे methods को बार बार लिखने की जरुरत नहीं होती है। इससे computer की memory और programmer का time दोनों बचता है। Java में multiple inheritance allow नहीं है। एक class सिर्फ एक ही class को inherit कर सकती है। ये कमी जावा interfaces के through पूरी करती है।
Polymorphism
Polymorphism का मतलब होता है “एक नाम और कई काम”। Polymorphism के through आप एक interface से situation एक according अलग अलग actions ले सकते है। जैसे की method overloading में किया जाता है।
Abstraction
Abstraction java का बहुत important concept है। जब आप बाइक चलाते है तो आपको ये पता नहीं होता है की ये bike कैसे काम कर रही है। आप बस उसे चलाते है। उसकी internal working आपको पता नहीं रहती है। Abstraction का भी same concept है। आप अपने software की internal working यूज़र को शो नहीं करते है। बस यूज़र को वो interface provide करते है जिससे की वो interact करेगा।
Java Development Tools
Java में software कुछ built in development tools की मदद से बनाया जाता है। आइये इन development tools के बारे में जानने का प्रयास करते है।
JDK (Java Development Kit)
JDK एक environment होता है जिसमे आप कोई भी java program क्रिएट कर सकते है और उसको execute करवा सकते है। Basically JDK में JRE होता है जो किसी भी java program के execution के लिए responsible होता है।
JRE (Java Runtime Environment)
JRE java program के execution के लिए responsible होता है। Java में JRE कुछ classes और libraries का group होता है जो एक साथ मिलकर program को execute होने के लिए environment क्रिएट करते है।
मुख्यतः JRE के 2 काम होते है।
- Program में main मेथड को ढूंढना।
- Program का execution start करना।
JVM (Java Virtual Machine)
जैसा की आप जानते है की जब आप किसी java program को compile करते है तो वो पहले bytecode में convert होता है। इसके बाद वो bytecode machine code में convert किया जाता है। JVM एक environment या machine होती है जो bytecode को machine code में convert करती है। ये JRE के साथ मिलकर काम करती है।