जेवीएम आपके द्वारा लिखे गए कोड को सीधे नहीं चला सकता है। यह केवल बाइटकोड में लिखे प्रोग्राम को निष्पादित करना जानता है। बाइटकोड एक निम्न-स्तरीय भाषा है जो मशीन कोड के करीब है।

जावा के लिए, संकलन जावा में लिखे गए (उच्च स्तरीय) प्रोग्राम का उसी प्रोग्राम में अनुवाद है जो बायटेकोड में लिखा गया है।

आपका कोड एक .java फ़ाइल में कंपाइलर को पास किया गया है। यदि कंपाइलर को कोड में कोई त्रुटि नहीं मिलती है, तो आप एक नई बायटेकोड फ़ाइल वापस प्राप्त करते हैं। इस फ़ाइल का नाम वही होगा लेकिन एक्सटेंशन अलग होगा: .class । यदि कोड में त्रुटियां हैं, तो कंपाइलर आपको "प्रोग्राम कंपाइल नहीं किया" बताएगा। फिर आपको प्रत्येक त्रुटि संदेश को पढ़ने और त्रुटियों को ठीक करने की आवश्यकता है।

आप कंपाइलर को इनवॉइस करने के लिए javac कमांड का उपयोग करते हैं, जो JDK (Java Development Kit) का हिस्सा है। इसका मतलब है कि यदि आप केवल JRE (जावा रनटाइम एनवायरनमेंट) इंस्टॉल करते हैं, तो आपके पास कंपाइलर नहीं होगा! आपके पास केवल जेवीएम होगा, जो केवल बायटेकोड चला सकता है। इसलिए हम JDK इंस्टॉल करते हैं और अपनी .java फाइल को कंपाइलर को पास करते हैं।

उदाहरण के लिए, आइए कुछ कंसोल आउटपुट के साथ एक साधारण प्रोग्राम लें:


class MySolution {
   public static void main(String[] args) {
      System.out.println("Hi, command line!");
   }
}

आइए इस कोड को फ़ाइल D:/temp/MySolution.java में सहेजें ।

आइए कमांड का उपयोग करके अपना कोड संकलित करें


D:\temp>javac MySolution.java

यदि कोड में कोई संकलन त्रुटियां नहीं हैं, तो MySolution.class फ़ाइल अस्थायी फ़ोल्डर में दिखाई देगी । और तो और, आपके कोड वाली MySolution.java फ़ाइल कहीं नहीं जाती है। यह जहां था वहीं रहता है। लेकिन अब MySolution.class में बायटेकोड है और सीधे JVM द्वारा चलाने के लिए तैयार है।

हमारा उदाहरण जितना संभव हो उतना सरल है, लेकिन यहां तक ​​कि सबसे बड़ी और सबसे जटिल परियोजनाएं भी javac कमांड का उपयोग करती हैं। तो यह जानना आपके लिए बहुत उपयोगी होगा कि यह कैसे काम करता है।

आप एक समय में एक से अधिक वर्ग संकलित कर सकते हैं। उदाहरण के लिए, मान लीजिए कि अस्थायी फ़ोल्डर में एक और फ़ाइल Cat.java है :


D:\temp>javac MySolution.java Cat.java

या यह:


D:\temp>javac *.java

एक बार संकलित हो जाने पर, .class फ़ाइलों को एक जार फ़ाइल में पैक किया जा सकता है, जिसे आसानी से विभिन्न कंप्यूटरों में ले जाया जा सकता है और फिर उन पर चलाया जा सकता है। यहाँ कैसे एक जार फ़ाइल बनाने का एक उदाहरण है :


D:\temp>jar cvfe myjar.jar MySolution MySolution.class Cat.class

कहाँ:

  • jar JDK में शामिल .jar फाइलें बनाने का कमांड है

  • cvfe निम्नलिखित अर्थों के साथ कमांड लाइन विकल्प हैं:

    • c - एक नई जार फ़ाइल बनाएँ

    • वी - वर्बोज़ जानकारी प्रदर्शित करें

    • f - इंगित करता है कि हम चाहते हैं कि टूल का आउटपुट फ़ाइल में डाला जाए ( myjar.jar )

    • - प्रवेश बिंदु ( MySolution ) को इंगित करता है, अर्थात वह वर्ग जिसमें मुख्य विधि होती है

  • MySolution.java Cat.class - फ़ाइलों के स्पेस से अलग किए गए नाम जिन्हें जार फ़ाइल में पैक किया जाएगा।

यहां बताया गया है कि हम परिणामी जार फ़ाइल कैसे चलाते हैं:


D:\temp>java -jar myjar.jar
अधिक विस्तृत जानकारी के लिए:
जावैक और जार टूल्स में अंतर्निहित सहायता है। इसे प्रदर्शित करने के लिए, कमांड लाइन पर निम्नलिखित चलाएँ:
  • जावैक --help
  • जार --मदद