Java Languageजावा भाषा से शुरुआत करना


टिप्पणियों

जावा प्रोग्रामिंग भाषा है ...

  • सामान्य-उद्देश्य : इसे विभिन्न प्रकार के एप्लिकेशन डोमेन में सॉफ़्टवेयर लिखने के लिए उपयोग करने के लिए डिज़ाइन किया गया है, और किसी विशिष्ट डोमेन के लिए विशेष सुविधाओं का अभाव है।

  • वर्ग-आधारित : इसकी वस्तु संरचना कक्षाओं में परिभाषित की गई है। कक्षा के उदाहरणों में हमेशा वे क्षेत्र और विधियाँ होती हैं जो उनकी कक्षा परिभाषाओं में निर्दिष्ट होती हैं ( वर्ग और वस्तुएँ देखें)। यह गैर-श्रेणी-आधारित भाषाओं जैसे जावास्क्रिप्ट के विपरीत है।

  • स्टैटिकली-टाइप्ड : कंपाइलर कंपाइल समय पर जाँचता है कि वेरिएबल टाइप्स का सम्मान किया गया है। उदाहरण के लिए, यदि कोई विधि String के प्रकार के तर्क की अपेक्षा करती है, तो उस तर्क को वास्तव में एक स्ट्रिंग होना चाहिए जब विधि को बुलाया जाता है।

  • ऑब्जेक्ट-ओरिएंटेड : एक जावा प्रोग्राम में अधिकांश चीजें क्लास इंस्टेंसेस हैं, यानी राज्य (फ़ील्ड्स) और व्यवहार के बंडल (ऐसे तरीके जो डेटा पर काम करते हैं और ऑब्जेक्ट की इंटरफ़ेस को बाहरी दुनिया में बनाते हैं)।

  • पोर्टेबल : इसे javac साथ किसी भी प्लेटफ़ॉर्म पर संकलित किया जा सकता है और परिणामी श्रेणी की फाइलें JVM वाले किसी भी प्लेटफ़ॉर्म पर चल सकती हैं।

जावा का उद्देश्य एप्लिकेशन डेवलपर्स को "एक बार लिखना, कहीं भी दौड़ना" (कार्य) देना है, जिसका अर्थ है कि संकलित जावा कोड उन सभी प्लेटफार्मों पर चल सकता है जो जावा को पुनर्संयोजन की आवश्यकता के बिना समर्थन करते हैं।

जावा कोड को बायटेकोड ( .class फाइलें) से संकलित किया गया है, जिसके बदले जावा वर्चुअल मशीन (JVM) द्वारा व्याख्या की जाती है। सिद्धांत रूप में, एक जावा कंपाइलर द्वारा बनाए गए बायटेकोड को किसी भी जेवीएम पर उसी तरह से चलना चाहिए, यहां तक कि एक अलग तरह के कंप्यूटर पर भी। JVM (और वास्तविक दुनिया के कार्यक्रमों में) मूल मशीन में संकलित करने का विकल्प चुन सकता है जो अक्सर निष्पादित किए जाने वाले बाइटकोड के हिस्सों को आदेशित करता है। इसे "जस्ट-इन-टाइम (JIT) संकलन" कहा जाता है।

जावा संस्करण और संस्करण

Sun / Oracle द्वारा परिभाषित जावा के तीन "संस्करण" हैं:

  • Java Standard Edition (SE) वह संस्करण है जिसे सामान्य उपयोग के लिए डिज़ाइन किया गया है।
  • जावा एंटरप्राइज एडिशन (ईई) जावा में "एंटरप्राइज ग्रेड" सेवाओं के निर्माण के लिए कई सुविधाओं को जोड़ता है। जावा ईई अलग से कवर किया गया है
  • जावा माइक्रो एडिशन (ME) जावा एसई के सबसेट पर आधारित है और इसका सीमित संसाधनों के साथ छोटे उपकरणों पर उपयोग करने का इरादा है।

जावा एसई / ईई / एमई संस्करणों पर एक अलग विषय है।

प्रत्येक संस्करण में कई संस्करण हैं। जावा एसई संस्करण नीचे सूचीबद्ध हैं।

जावा स्थापित कर रहा है

इंस्टॉलिंग जावा (मानक संस्करण) पर एक अलग विषय है।

जावा प्रोग्राम को संकलित करना और चलाना

अलग विषय हैं:

आगे क्या होगा?

जावा प्रोग्रामिंग भाषा सीखने और समझने के लिए विषयों के लिंक यहां दिए गए हैं। ये विषय आपको शुरू करने के लिए जावा प्रोग्रामिंग की मूल बातें हैं।

परिक्षण

जबकि जावा में मानक पुस्तकालय में परीक्षण के लिए कोई समर्थन नहीं है, फिर भी 3-पार्टी लाइब्रेरी हैं जो परीक्षण का समर्थन करने के लिए डिज़ाइन की गई हैं। दो सबसे लोकप्रिय इकाई परीक्षण पुस्तकालय हैं:

अन्य

  • जावा के लिए डिजाइन पैटर्न में कवर कर रहे हैं डिजाइन पैटर्न
  • एंड्रॉइड के लिए प्रोग्रामिंग एंड्रॉइड में कवर किया गया है
  • जावा एंटरप्राइज एडिशन टेक्नोलॉजीज जावा ईई में शामिल हैं।
  • ओरेकल JavaFX प्रौद्योगिकियों में शामिल किया गया है JavaFX

1. संस्करणों में एंड-ऑफ-लाइफ (फ्री) तारीख तब होती है जब ओरेकल अपने सार्वजनिक डाउनलोड साइटों पर जावा एसई के आगे के अपडेट पोस्ट करना बंद कर देगा। जिन ग्राहकों को महत्वपूर्ण बग फिक्स और सुरक्षा सुधारों के साथ-साथ जावा एसई के लिए सामान्य रखरखाव तक पहुंच की आवश्यकता होती है, उन्हें ओरेकल जावा एसई सपोर्ट के माध्यम से दीर्घकालिक समर्थन मिल सकता है।

संस्करण

जावा एसई संस्करण संकेत नाम जीवन का अंत (मुफ्त 1 ) रिलीज़ की तारीख
जावा एसई 9 (प्रारंभिक पहुंच) कोई नहीं भविष्य 2017/07/27
जावा एसई 8 मकड़ी भविष्य 2014-03-18
जावा एसई 7 डॉल्फिन 2015/04/14 2011-07-28
जावा एसई 6 अमेरिका देश का जंगली घोड़ा 2013-04-16 2006/12/23
जावा एसई 5 बाघ 2009-11-04 2004/10/04
जावा एसई १.४ एक प्रकार का बाज़ 2009-11-04 से पहले 2002/02/06
जावा एसई 1.3 एक प्रकार का छोटा बाज 2009-11-04 से पहले 2000/05/08
जावा एसई 1.2 खेल का मैदान 2009-11-04 से पहले 1998/12/08
जावा एसई 1.1 कोई नहीं 2009-11-04 से पहले 1997/02/19
जावा एसई 1.0 बलूत 2009-11-04 से पहले 1996/01/21

आपका पहला जावा प्रोग्राम बनाना

अपने पाठ संपादक या HelloWorld.java नाम के IDE में एक नई फ़ाइल बनाएँ। फिर इस कोड ब्लॉक को फाइल में पेस्ट करें और सहेजें:

public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello, World!");
    }
}
 

Ideone पर लाइव रन करें

नोट: जावा के लिए इसे public class रूप में पहचानने के लिए (और संकलन समय त्रुटि को फेंकना नहीं), फ़ाइल नाम एक .java एक्सटेंशन के साथ वर्ग नाम (इस उदाहरण में HelloWorld ) के समान होना चाहिए। इससे पहले भी एक public पहुंच संशोधक होना चाहिए।

नामकरण सम्मेलनों की सलाह है कि जावा कक्षाएं एक बड़े अक्षर से शुरू होती हैं, और ऊंट मामले के प्रारूप में होती हैं (जिसमें प्रत्येक शब्द का पहला अक्षर बड़ा होता है)। अधिवेशनों में अंडरस्कोर ( _ ) और डॉलर संकेत ( $ ) के खिलाफ सिफारिश की गई है।

संकलित करने के लिए, एक टर्मिनल विंडो खोलें और HelloWorld.java की निर्देशिका में नेविगेट करें:

cd /path/to/containing/folder/
 

नोट: सीडी निर्देशिका बदलने के लिए टर्मिनल कमांड है।

फ़ाइल नाम और एक्सटेंशन के बाद javac दर्ज करें:

$ javac HelloWorld.java
 

त्रुटि प्राप्त करना काफी सामान्य है 'javac' is not recognized as an internal or external command, operable program or batch file. यहां तक कि जब आपने JDK स्थापित किया है और IDE पूर्व से कार्यक्रम चलाने में सक्षम हैं। eclipse आदि चूंकि मार्ग डिफ़ॉल्ट रूप से पर्यावरण में नहीं जोड़ा जाता है।

यदि आप इसे विंडोज़ पर प्राप्त करते हैं, तो हल करने के लिए, पहले अपने javac.exe पथ पर ब्राउज़ करने का प्रयास करें, यह संभवतः आपके C:\Program Files\Java\jdk(version number)\bin । फिर नीचे के साथ इसे चलाने का प्रयास करें।

$ C:\Program Files\Java\jdk(version number)\bin\javac HelloWorld.java
 

पहले जब हम javac कह रहे थे तो यह कमांड के समान ही था। केवल उस स्थिति में आपका OS जानता था कि javac कहां रहता है। तो चलिए अब आपको बता देते हैं, इस तरह आपको हर बार पूरा रास्ता नहीं लिखना है। हमें इसे अपने PATH जोड़ना होगा

Windows XP / Vista / PATH में PATH पर्यावरण चर को संपादित करने के लिए:

  • कंट्रोल पैनल ⇒ सिस्टम ⇒ उन्नत सिस्टम सेटिंग्स
  • "उन्नत" टैब ⇒ पर्यावरण चर पर स्विच करें
  • "सिस्टम चर" में, "पथ" ⇒ संपादित करने के लिए नीचे स्क्रॉल करें

आप इसे पूर्ववत नहीं कर सकते हैं इसलिए सावधान रहें। सबसे पहले अपने मौजूदा पथ को नोटपैड में कॉपी करें। फिर अपने javac लिए सटीक पथ को उस फ़ोल्डर में मैन्युअल रूप से ब्राउज़ करें जहां javac रहता है और पता बार पर क्लिक करें और फिर इसे कॉपी करें। यह c:\Program Files\Java\jdk1.8.0_xx\bin तरह दिखना चाहिए

"परिवर्तनीय मूल्य" फ़ील्ड में, सभी मौजूदा निर्देशिकाओं के इस IN को एक अर्द्ध-उपनिवेश (;) के बाद चिपकाएँ। किसी भी मौजूदा प्रविष्टि को हटाएं नहीं

Variable name  : PATH
Variable value : c:\Program Files\Java\jdk1.8.0_xx\bin;[Existing Entries...]
 

अब यह हल होना चाहिए।

लिनक्स आधारित सिस्टम के लिए यहां प्रयास करें

नोट: javac कमांड जावा संकलक को आमंत्रित करता है।

कंपाइलर तब HelloWorld.class नामक एक बाईटकोड फ़ाइल उत्पन्न करेगा जिसे जावा वर्चुअल मशीन (JVP) में निष्पादित किया जा सकता है। जावा प्रोग्रामिंग लैंग्वेज कंपाइलर, javac , जावा प्रोग्रामिंग लैंग्वेज में लिखी सोर्स फाइल्स को पढ़ता है और उन्हें bytecode क्लास फाइल्स में bytecode करता है। वैकल्पिक रूप से, कंपाइलर Pluggable एनोटेशन प्रोसेसिंग एपीआई का उपयोग करके सोर्स और क्लास फाइल्स में पाए जाने वाले एनोटेशन को भी प्रोसेस कर सकता है। कंपाइलर एक कमांड लाइन उपकरण है, लेकिन इसे जावा कंपाइलर एपीआई का उपयोग करके भी लागू किया जा सकता है।

अपना कार्यक्रम चलाने के लिए, java का नाम दर्ज करें, जिसमें कक्षा का नाम शामिल है जिसमें main विधि (हमारे उदाहरण में HelloWorld ) है। ध्यान दें कि कैसे .class छोड़ा गया है:

$ java HelloWorld
 

नोट: java कमांड जावा एप्लिकेशन चलाता है।

यह आपके कंसोल पर आउटपुट करेगा:

नमस्ते दुनिया!

आपने अपने पहले जावा प्रोग्राम को सफलतापूर्वक कोडित और निर्मित कर लिया है!

नोट: जावा आदेश (के लिए आदेश में java , javac , आदि) में मान्यता प्राप्त करने के लिए, आप यह सुनिश्चित करने की आवश्यकता होगी:

आपको अपने जेवीएम द्वारा प्रदान किए गए एक कंपाइलर ( javac ) और एक निष्पादक ( java ) का उपयोग करने की आवश्यकता होगी। यह जानने के लिए कि आपने कौन से संस्करण स्थापित किए हैं, कमांड लाइन पर java -version और javac -version दर्ज करें। आपके प्रोग्राम का वर्जन नंबर टर्मिनल में प्रिंट किया जाएगा (जैसे 1.8.0_73 )।


हैलो वर्ल्ड कार्यक्रम पर एक करीब से नज़र डालें

"हैलो वर्ल्ड" कार्यक्रम में एक एकल फ़ाइल शामिल है, जिसमें एक HelloWorld वर्ग परिभाषा, एक main विधि और main विधि के अंदर एक बयान शामिल है।

public class HelloWorld {
 

class कीवर्ड HelloWorld नामक एक वर्ग के लिए वर्ग परिभाषा शुरू करता है। हर जावा एप्लिकेशन में कम से कम एक वर्ग परिभाषा ( वर्गों के बारे में अधिक जानकारी ) होती है।

    public static void main(String[] args)  {
 

यह एक प्रवेश बिंदु विधि है (इसके नाम और public static void main(String[]) हस्ताक्षर से परिभाषित) जिससे JVM आपके प्रोग्राम को चला सकता है। हर जावा प्रोग्राम में एक होना चाहिए। यह है:

  • public : जिसका अर्थ है कि विधि को कार्यक्रम के बाहर से भी कहीं से भी बुलाया जा सकता है। इस पर अधिक जानकारी के लिए दृश्यता देखें।
  • static : इसका अर्थ है कि यह मौजूद है और इसे स्वयं (कक्षा स्तर पर बिना वस्तु बनाए) चलाया जा सकता है।
  • void : जिसका अर्थ है कि इसका कोई मूल्य नहीं है। नोट: यह C और C ++ के विपरीत है जहां int जैसे एक वापसी कोड की उम्मीद है (Java का तरीका System.exit() ) है।

यह मुख्य विधि स्वीकार करती है:

जावा प्रविष्टि बिंदु विधि के लिए यह लगभग सभी आवश्यक है।

गैर-आवश्यक भाग:

  • नाम args एक चर नाम है, इसलिए इसे कुछ भी आप चाहते हैं कहा जा सकता है, हालांकि इसे आम तौर पर args कहा जाता है।
  • चाहे इसका पैरामीटर प्रकार एक सरणी है ( String[] args ) या Varargs ( String... args ) कोई फर्क नहीं पड़ता क्योंकि सरणियों को varargs में पारित किया जा सकता है।

नोट: एक एकल अनुप्रयोग में एक प्रविष्टि बिंदु ( main ) विधि वाली कई कक्षाएं हो सकती हैं। आवेदन का प्रवेश बिंदु java कमांड के तर्क के रूप में पारित वर्ग नाम से निर्धारित होता है।

मुख्य विधि के अंदर, हम निम्नलिखित कथन देखते हैं:

        System.out.println("Hello, World!");
 

आइए इस कथन को तत्व-दर-तत्व तोड़ते हैं:

तत्त्व उद्देश्य
System यह दर्शाता है कि बाद की अभिव्यक्ति java.lang पैकेज से System क्लास पर कॉल करेगी।
. यह एक "डॉट ऑपरेटर" है। डॉट ऑपरेटर आपको एक कक्षा सदस्यों 1 तक पहुंच प्रदान करते हैं; अर्थात इसके क्षेत्र (चर) और इसकी विधियाँ। इस स्थिति में, यह डॉट ऑपरेटर आपको System क्लास के भीतर out स्थिर क्षेत्र को संदर्भित करने की अनुमति देता है।
out यह मानक उत्पादन कार्यक्षमता वाले System वर्ग के भीतर PrintStream प्रकार के स्थिर क्षेत्र का नाम है।
. यह एक और डॉट ऑपरेटर है। यह डॉट ऑपरेटर out वैरिएबल के भीतर println विधि तक पहुंच प्रदान करता है।
println यह PrintStream वर्ग के भीतर एक विधि का नाम है। यह विधि विशेष रूप से मापदंडों की सामग्री को कंसोल में प्रिंट करती है और इसके बाद एक नई पंक्ति सम्मिलित करती है।
( यह कोष्ठक इंगित करता है कि एक विधि (और एक क्षेत्र नहीं) तक पहुँचा जा रहा है और println विधि में पारित होने वाले मापदंडों को शुरू करता है।
"Hello, World!" यह स्ट्रिंग शाब्दिक है जो एक पैरामीटर के रूप में, println विधि में पारित किया जाता है। प्रत्येक छोर पर दोहरे उद्धरण चिह्न एक स्ट्रिंग के रूप में पाठ को चित्रित करते हैं।
) यह कोष्ठक println विधि में पारित किए जा रहे मापदंडों को बंद करने का संकेत देता है।
; यह अर्धविराम बयान के अंत को चिह्नित करता है।

नोट: जावा में प्रत्येक स्टेटमेंट अर्धविराम ( ; ) के साथ समाप्त होना चाहिए।

विधि बॉडी और क्लास बॉडी तब बंद होती हैं।

    }  // end of main function scope
}      // end of class HelloWorld scope 
 

यहाँ एक और उदाहरण OO प्रतिमान को प्रदर्शित करता है। आइए एक (हाँ, एक!) सदस्य के साथ एक फुटबॉल टीम का मॉडल बनाएं। और भी हो सकते हैं, लेकिन हम चर्चा करेंगे कि जब हम सरणियाँ प्राप्त करते हैं।

सबसे पहले, हमारी Team श्रेणी को परिभाषित करें:

public class Team {
    Member member;
    public Team(Member member) {  // who is in this Team?
        this.member = member;  //  one 'member' is in this Team!
    }
}
 

अब, हमारे Member वर्ग को परिभाषित करते हैं:

class Member {
    private String name;
    private String type;
    private int level; // note the data type here
    private int rank; // note the data type here as well

    public Member(String name, String type, int level, int rank) {
        this.name = name; 
        this.type = type;
        this.level = level;
        this.rank = rank;
    }
}
 

हम यहाँ private का उपयोग क्यों करते हैं? खैर, अगर कोई आपका नाम जानना चाहता है, तो उन्हें आपकी जेब में पहुंचने और अपने सामाजिक सुरक्षा कार्ड को खींचने के बजाय सीधे आपसे पूछना चाहिए। यह private कुछ ऐसा करता है: यह बाहरी संस्थाओं को आपके चर तक पहुंचने से रोकता है। आप केवल गेट्स फ़ंक्शंस (नीचे दिखाए गए) के माध्यम से private सदस्यों को वापस कर सकते हैं।

यह सब एक साथ रखने के बाद, और गेटर्स और मुख्य विधि को जोड़ने के रूप में पहले चर्चा की, हमारे पास है:

public class Team {
    Member member;
    public Team(Member member) {  
        this.member = member;  
    }

    // here's our main method
    public static void main(String[] args) {
       Member myMember = new Member("Aurieel", "light", 10, 1); 
       Team myTeam = new Team(myMember); 
       System.out.println(myTeam.member.getName());
       System.out.println(myTeam.member.getType());
       System.out.println(myTeam.member.getLevel());
       System.out.println(myTeam.member.getRank());
    }
}

class Member {
    private String name;
    private String type;
    private int level;
    private int rank;

    public Member(String name, String type, int level, int rank) {
        this.name = name; 
        this.type = type;
        this.level = level;
        this.rank = rank;
    }
    
    /* let's define our getter functions here */
    public String getName() { // what is your name?
        return this.name; // my name is ...
    }
   
    public String getType() { // what is your type?
        return this.type; // my type is ...
    }
    
    public int getLevel() { // what is your level?
        return this.level; // my level is ...
    }
    
    public int getRank() { // what is your rank?
        return this.rank; // my rank is
    }
}
 

आउटपुट:

Aurieel
light
10
1
 

विचारधारा पर चलें

एक बार फिर, Test क्लास के अंदर main विधि हमारे कार्यक्रम का प्रवेश बिंदु है। main विधि के बिना, हम जावा वर्चुअल मशीन (जेवीएम) को नहीं बता सकते हैं कि कार्यक्रम का निष्पादन कहां से शुरू किया जाए।


1 - क्योंकि HelloWorld क्लास का System क्लास से बहुत कम संबंध है, यह केवल public डेटा तक पहुंच सकता है।