JVM আপনার লেখা কোড সরাসরি চালাতে পারে না। এটি কেবল বাইটকোডে লেখা প্রোগ্রামগুলি কীভাবে চালাতে হয় তা জানে। বাইটকোড হল একটি নিম্ন-স্তরের ভাষা যা মেশিন কোডের কাছাকাছি।

জাভার জন্য, সংকলন হল বাইটকোডে লেখা একই প্রোগ্রামে জাভাতে লেখা একটি (উচ্চ স্তরের) প্রোগ্রামের অনুবাদ।

আপনার কোড একটি .java ফাইলে কম্পাইলারের কাছে পাঠানো হয়েছে। যদি কম্পাইলার কোডে কোন ত্রুটি খুঁজে না পায়, তাহলে আপনি একটি নতুন বাইটকোড ফাইল ফিরে পাবেন। এই ফাইলটির নাম একই কিন্তু একটি ভিন্ন এক্সটেনশন থাকবে: .class । যদি কোডে ত্রুটি থাকে, তাহলে কম্পাইলার আপনাকে বলবে "প্রোগ্রাম কম্পাইল হয়নি"। তারপরে আপনাকে প্রতিটি ত্রুটি বার্তা পড়তে হবে এবং ত্রুটিগুলি ঠিক করতে হবে।

আপনি কম্পাইলারকে আহ্বান করতে javac কমান্ড ব্যবহার করেন, যা JDK (জাভা ডেভেলপমেন্ট কিট) এর অংশ। এর মানে হল যে আপনি যদি শুধুমাত্র JRE (জাভা রানটাইম এনভায়রনমেন্ট) ইনস্টল করেন, তাহলে আপনার কাছে কম্পাইলার থাকবে না! আপনার কাছে শুধুমাত্র JVM থাকবে, যা শুধুমাত্র বাইটকোড চালাতে পারে। তাই আমরা 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 হল জেডিকে অন্তর্ভুক্ত .jar ফাইল তৈরির কমান্ড

  • cvfe নিম্নলিখিত অর্থ সহ কমান্ড লাইন বিকল্প:

    • c - একটি নতুন জার ফাইল তৈরি করুন

    • v - ভার্বস তথ্য প্রদর্শন করুন

    • f - নির্দেশ করে যে আমরা টুলটির আউটপুট একটি ফাইলে রাখতে চাই ( myjar.jar )

    • e – এন্ট্রি পয়েন্ট নির্দেশ করে ( MySolution ), অর্থাৎ যে ক্লাসে প্রধান পদ্ধতি রয়েছে

  • MySolution.java Cat.class – জার ফাইলে প্যাক করা ফাইলগুলির স্থান-বিচ্ছিন্ন নাম ।

এখানে আমরা কিভাবে ফলাফল জার ফাইল চালাই:

D:\temp>java -jar myjar.jar
আরো বিস্তারিত তথ্যের জন্য:
javac এবং জার সরঞ্জাম অন্তর্নির্মিত সাহায্য আছে . এটি প্রদর্শন করতে, কমান্ড লাইনে নিম্নলিখিতটি চালান:
  • javac -- সাহায্য
  • জার -- সাহায্য