Introduction to Java

बहुत से लोग ऐसे ट्यूटोरियल की तलाश में हैं जिनसे वो शरूआत से ही जावा सीख सकें। वो हमेशा पूछते रहते हैं कि आसानी से और जल्दी जावा कैसे सीख सकते हैं। वैसे तो बहुत से जावा ट्यूटोरियल उपलब्ध हैं। हमने ऐसी सामग्री तैयार की है जो आपको शुरूआत से जावा सीखने में मदद करेगी। अगर आपको C++ आती है तो आप जावा बहुत जल्दी सीख जायेंगे क्योंकि दोनों को कॉन्सेपट एक जैसा ही है। हमारे जावा ट्यूटोरियल जावा के रिफ्रेशरस को जावा के इंटरव्यू की सामग्री भी प्रदान करते हैं। चलिए हम जावा का परिचय इंटरव्यू में अक्सर पूछे जाने वाले सवाल से करते हैं, “जावा और में क्या अंतर है?"

जावा और C++ में अंतर

 

C++ जावा
यह पलेटफोर्म डिपेंडेंट होती है। यह पलेटफोर्म डिपेंडेंट नहीं होती है।
इसमें सिर्फ कंपाइलर का उपयोग होता है इसमें कंपाइलर और इंटरप्रेटर दोनों का प्रयोग होता है
इसमें स्ट्रकचर (structure), यूनियन (union) और टेंपलेट (templates) होती है इसमें स्ट्रकचर (structure), यूनियन (union) और टेंपलेट (templates) नहीं होते।
यह ऑपरेटर और मेथड ओवरलोडिंग दोनों का समर्थन करता है यह सिर्फ मेथड ऑवलोडिंग को स्पोर्ट करती है
इसमें पॉइंटर (pointers) का उपयोग होता है इसमें पोइंटर का सीधे समर्थन नहीं होता । इसमें पोइंटर का इस्तेमाल पहली क्लास की भाषा की अवधारणा (First Class Language Concept) की तरह नहीं होता बल्कि जावा का संदर्भ के विवरण को बढ़ाने के लिए होता है।
इसके पास थ्रेड के लिए कोई बुल्ट-इन समर्थन नहीं होता (मल्टीथ्रेडिंग) यह मल्टीथ्रेडींग को स्पोर्ट करती है
ये कई इनहेरिटेन्स को स्पोरट करती है, क्लासिक डायमंड जैसी दिक्कतों के लिए वर्चुअल क्लास कोन्स्पट (virtual classes concept) का इस्तेमाल करें। यह विभिन्न (multiple) इनहेरिटेन्स का समर्थन नहीं करती। यह (multiple) विभिन्न इनहेरिटेन्स के नियम को लागू करने के लिए इंटरफेस का प्रयोग करती है।
इसमें स्कोप रेजोल्यूशन ऑपरेटर [Scope Resolution Operator(::)] और डिस्ट्रकटर होता है। इसमें कोई भी स्कोप रेसोल्यूशन ऑपरेटर और डिस्ट्रकटर नहीं होता।.
इसमें स्पष्ट स्मृति प्रबंधन (Explicit Memory Management) की आवश्यकता होती है। इसमें कचरा स्वत: ही संग्रह हो जाता है।

जावा क्या है ?

 

जावा एक ऑबजेक्ट ऑरिएंटड और मंच से स्वतंत्र (प्लैटफोर्म इंडिपेडेंट) भाषा है जो कि जानकारी प्राप्त करने के लिए यूसर को वैब सरवर, डाटाबेस और सूचना प्रदाता से जोड़ती है।.

 

जावा का इतिहास

 

1991 में, पैट्रिक नोटेनन और जेम्स गोसलिंग ने मिलकर सन इंजीनियर्स का ग्रुप बनाया। वे अत्यधिक क्रियाशील और सशक्त प्रोग्रामिंग भाषा बनाना चाहते थे जो कि केबल TV, स्विच बोक्सों आदि के लिए भी इस्तेमाल की जा सके।

जेम्स ने इस भाषा का नाम - "Oak" रखा था। लेकिन बाद में सन इंजीनियरों को एहसास हुआ कि Oak नाम की कम्पूयटर भाषा पहले से मौजूद है, इसलिए उन्होंने इसका नाम जावा रख दिया। 1994 में, सन इंजीनियरों ने एक शानदार ब्राउज़र बनाने के बारे में सोचा। जावा की ताकत दिखाने वाले इस ब्राउज़र को होटजावा लिखा जाता है जिसको अब एप्लेट कहते हैं। यह तकनीक 23 मई 1995 को सनवर्ल्ड में दिखाई गई थी। 1996 की शुरूआत में इन सन इंजीनियरों ने जावा का पहला संस्करण लांच किया था।

 

यह 4 कोर तकनीकों में बंटी हुई है

  • डेस्कटोप और कॉन्सोल पर आधारित एप्लीकेशनों को बनाने के लिए -जावा स्टैंडर्ड एडीशन (जावा एस ई) [Java Standard Edition (Java SE)]

  • सरवर साइड एप्लीकेशन, मल्टी टिअर्ड और वेब-आधारित एप्लीकेशनों को बनाने के लिए - जावा एंटरप्राइज़ एडीशन (जावा ई ई) [Java Enterprise Edition (Java EE)]

  • सैल-फोन, व्यक्तिगत डिजिटल सहायक जैसी माइक्रो-डिवाइसों को बनाने के लिए - जावा माइक्रो एडीशन (जावा एम ई) [Java Micro Edition (Java ME)]

  • जावा एफ एक्स [Java Fx]

 

Software आवश्यकतायें

 

  1. जावा डेवल्पमेंट किट (जे डी के) [JDK]

  2. जावा रनटाइम एनवायरमेंट (जे आर ई) [JRE]

  3. इंटरग्रेटेड डैवल्पमेंट एनवायरमेंट (आइ डी ई) [IDE]

    1. नेटबीन्स NetBeans

    2. एक्लीप्स Eclipse

    3. विज़ुअल ऐज़ Visual Age

    4. जे डैवल्पर JDeveloper

       

     

जावा रनटाइम एनवायरमेंट (जे आर ई) [JRE]

 

इसमें जावा डैवलमैंट किट (जे डी के), डैवल्पमेंट टूल और एप्लीकेशन प्रोग्रामिंग (ए पी आई) शामिल है।

एप्लीकेशन प्रोग्रामिंग इंटरफेस (ए पी आइ); क्लास, विधि और पैकेज की फोर्म में मिलने वाले इंटरफेस का समूह है।

=> APPLICATION PROGRAMMING PACKAGES एप्लीकेशन प्रोग्रामिंग पैकेज:

  • java.lang – इसमें जावा प्रोगाम को डिजाइन करने वाली जरूरी क्लासें शामिल होती हैं।
  • java.util – इसमें क्लेकशन क्लास, स्कैनर क्लास, तारीख और समय की क्लास जैसी उपयोगी क्लासें शामिल हैं।
  • java.io – इसमें सिस्टम के इनपुट और आउटपुट के लिए क्लासेस शामिल हैं।

=> एप्लेट और नेटवर्किंग प्रोग्रामिंग पैकेज

  • java.awt – इसमें यूज़र इंटरफेस और पेंटिंग ग्राफिक और तस्वीरें शामिल हैं।
  • java.applet – इसमें एप्लेट को बनाने के लिए जरूरी क्लासे शामिल हैं।
  • java.net – इसमें जावा की नेटवर्किंग को बढ़ाने वाली क्लासे शामिल हैं।

=> DATABASE CONNECTIVITY PACKAGES डाटाबेस क्नेक्टीविटी पैकेज

  • java.sql – इसमें क्लासें और डाटाबेस के साथ कनेक्शन बनाने वाले इंटरफेस और बनाने, बनाये रखने और संशोधित करने वाले डाटाबेस शामिल है।
  • javax.sql - JDBC ऑप्शनल पैकेज।

 

 

जावा डैवल्पमेंट किट (जे डी के) [JDK]

 

JDK, जावा प्रोग्राम को बनाने और चलाने का एक संग्रह है। JDK में आगे दिये गये डैवल्पमेंट टूल शामिल हैं :-

  • java => यह एक जावा का दुभाषिया है। यह बाइटेकोड (bytecode) फाइलों को पढ़ता और इंटरप्रेट करता है।
  • javac => यह एक जावा कंपाइलर है। यह सोर्स कोड को बाइटेकोड फाइलों में बदलता है।
  • javacdoc => यह जावा फाइलों के लिए HTML डोक्यूमेंटेशन बनाता है।
  • appletviewer => यह एप्लेट को चलाने के लिए प्रयोग किया जाता है।
  • javah => यह नैटिव हैडर को लिखने के लिए सी हैडर और स्टब जेनरेटर की तरह काम करता है।
  • jdb => यह जावा डिबगर है। यह जावा प्रोग्राम में गलतियों को ढूँढ़ता है।
  • javap =>यह जावा डिसैंबल है। यह बाइटेकोड फाइलों को जावा प्रोगराम में बदलता है।
  • jar => यह जावा आर्चीव है। यह पैकेज, सिंगल एक्जूक्यूटेबल जार फाइलों को पैकेज रिलेटेड क्लास लाइब्रेरी से संबंधित है और उन्हें संभालता है।

 

हम जानते हैं कि कंपाइलर, हाइ लैंग्वेज को मशीन लैंग्वेज में बदलता है।

लेकिन जावा, कंपाइलर सोर्स कोड को इंटरमीडिएट कोड में बदलता है जिसे बाइटेकोड कहते हैं। हम कह सकते हैं बाइटेकोड, जावा वर्चुअल मशीन के लिए एक मशीन लैंग्वेज है। बाइटेकोड कोई विशिष्ट मशीन (अलग ऑपरेटिंग सिस्टम) नहीं है।.

जावा का इंटरप्रेटर को मशीन स्पेसिफिक कोड बनाने के लिए इस्तेमाल करते हैं।

JAVA VIRTUAL MACHINE { जावा वर्चुअल मशीन }(JVM)

JVM एक एबस्ट्रैक्ट कंप्यूटिंग मशीन है जोकि असल में जावा प्रोग्रामों को एक्जिक्यूट करती है।

क्लासलोडर JRE का हिस्सा है जोकि JVM में क्लासों को डालता है।

 

नोटः JRE, JDK और JVM प्लेटफोर्म डिपेंडेन्ट हैं क्योंकि हर ओपरेटिंग सिस्टम का कन्फरीग्यूशन अलग होता है लेकिन जावा प्लेटफोर्म डिपेडेंट नहीं है क्योंकि सोर्स कोड बाइटेकोड फाइल में बदला जाता है जिसकी जानकारी के साथ कंप्यूटर आर्कीटेक्चर कुछ नहीं कर सकता।

 

 

 

Writing first Java Program, पहला जावा प्रोग्राम लिखें

 

  • एक जावा प्रोग्राम की एक्सटेन्शन .java होनी चाहिए

  • हर जावा प्रोग्राम में क्लास कीवर्ड सेट होना चाहिए

 

class <ClassName>

{

//members

}

  • To execute a class it must have an entry point main() (क्लास को एग्जिक्यूट करने के लिए प्रवेश बिंदु जरूर होना चाहिए)

    • public static void main(String args[])

    • public static void main(String… args)

Syntactical Rules of Java (जावा के वाक्य नियम)

 

  • सभी कीवर्डों और पैकेजों का नाम अंग्रेजी के छोटे अक्षरों में होना चाहिए

  • सभी क्लास और इंटरफेस का नाम अंग्रेजी के बड़े अक्षरों में होना चाहिए

    उदाहरणतः

    • Math

    • String

    • BufferedReader

    • InputStreamReader

  • सभी फील्ड और मेथड अंग्रेजी के छोटे अक्षरों में लिखना चाहिए

    For e.g.

    • length()

    • readLine()

    • substring()

    • println()

 

जावा में इनपुट/आउटपुट

 

जावा, सिस्टम क्लास (class) के अंदर बने बनाये स्टैटिक ऑबजेक्ट (static object ) प्रदान करती है

  • in

  • out

  • err

 

in स्टैंडर्ड इनपुट (कीबोर्ड) से को दर्शाता है

out सामान्य संदेशों के लिए स्टैंडर्ड आउटपुट (मॉनीटर) को दर्शाता है

err गलती होने पर संदेश देने के लिए स्टैंडर्ड एरर (मॉनीटर) को दर्शाता है

 

in पैकेज से InputStream क्लास का स्टैटिक ऑबजेक्ट है

out and err की क्लास PrintStream के स्टैटिक ऑबजेक्ट हैं

 

Methods of PrintStream class

 

  • print()

  • println()

  • printf()

 

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
//First.java

class Test {
public static void main(String... args){
// Entry point of every java program

int a=5,b=6;

System.out.printf("Product of %d and %d is %d",a,b,a*b);
// Remember printf in C ?
   }
}

 Note: The ellipses in 'String... args' denote optional parameter  

प्रोग्राम को कंपाइल करना

 

JAVAC <programname.java>

 

उदाहरण

JAVAC First.java Test.class

क्लास को रन करना

 

JAVA Test

 

 

पाथ क्या है?

 

एग्जिक्यूटेबल फाइलों (.exe, .com and .bat) के फोल्डरों की लिस्ट को संभालने के लिए परिवेशी वेरिएबल.

 

कमांड प्रोम्पट मसलों से अस्थाई रूप से फोल्डर बनाने के लिए नीचे दी गई कंमाड का प्रयोग करें

 

PATH=%PATH%;C:\Program Files\Java\jdk1.8.0\bin

 

स्थाई PATH बनाने के लिए ये सैटिंग उपयोग करो

 

My Computer -> Properties -> Advanced -> Environmental Variables -> System Variables ->Path -> Edit

 

सेमिकोलन (;) के बाद अपने बिन के पाथ को पेस्ट करें

आप IDE को इस्तेमाल करते हुए पाथ सैट कर सकते हैं उदाहरणतः IDE में STS (स्प्रिंग टूल सूट) पाथ सैट किया जा सकता है