JDK, JRE এবং JVM তিনটি একে অপরের ওপর নির্ভরশীল এবং তাদের মধ্যে কোনো সাধারণ বিন্দু নেই, তাই সারণী রূপে পার্থক্য উপস্থাপন করা কার্যকর নয়। তবুও নিচে আলাদা আলাদা অনুচ্ছেদে এগুলো নিয়ে আলোচনা করা হলো।
JVM (Java Virtual Machine)
JVM হলো Java Virtual Machine-এর সংক্ষিপ্ত রূপ, যা মূলত একটি স্পেসিফিকেশন যা Java বাইটকোড এক্সিকিউট করার জন্য রানটাইম এনভায়রনমেন্ট প্রদান করে। এটি একটি বিমূর্ত কনসেপ্ট এবং এর ইমপ্লিমেন্টেশন অ্যালগরিদম নির্বাচনে স্বাধীন; Sun এবং অন্যান্য কোম্পানিগুলো এটি ইমপ্লিমেন্ট করেছে। JVM-ই বাইটকোডকে মেশিন-স্পেসিফিক কোডে রূপান্তর করার দায়িত্বে থাকে। এটি অন্যান্য ভাষায় লেখা প্রোগ্রামও রান করতে পারে যদি সেগুলো Java বাইটকোডে কম্পাইল করা থাকে। JVM নিম্নলিখিত কাজগুলো করে: কোড লোড করা, কোড ভেরিফাই করা, কোড এক্সিকিউট করা, রানটাইম এনভায়রনমেন্ট প্রদান করা।
JRE (Java Runtime Environment)
JRE হলো Java Runtime Environment, যা JVM-এর ইমপ্লিমেন্টেশন। JVM-এ নির্ধারিত স্পেসিফিকেশনগুলো ইমপ্লিমেন্ট করে কোড এক্সিকিউশনের জন্য পরিস্থিতি তৈরি করে। JRE মূলত Java বাইনারিগুলো এবং প্রোগ্রাম চালাতে প্রয়োজনীয় অন্যান্য ক্লাসগুলো নিয়ে গঠিত। JVM-এর মত এটি ফিজিক্যালি এক্সিস্ট করে। Java বাইনারির পাশাপাশি JRE-তে ডিপ্লয়মেন্ট টেকনোলজি, কোডের সাথে ইন্টারঅ্যাক্ট করার জন্য ইউজার ইন্টারফেস, বিভিন্ন ফাংশনালিটির জন্য বেস লাইব্রেরি এবং ল্যাঙ্গুয়েজ ও ইউটিলিটি-ভিত্তিক লাইব্রেরিগুলো থাকে।
JDK (Java Development Kit)
JDK হলো Java Development Kit-এর সংক্ষিপ্ত রূপ, যা Java প্রোগ্রাম কম্পাইল, ডিবাগ এবং এক্সিকিউট করার জন্য সমস্ত টুল, এক্সিকিউটেবল এবং বাইনারি ধারণ করে। JDK প্ল্যাটফর্ম-ডিপেন্ডেন্ট—Windows, Mac, Unix সিস্টেমের জন্য আলাদা ইনস্টলার থাকে। JDK-তে JVM এবং JRE দুটোই অন্তর্ভুক্ত থাকে এবং কোড এক্সিকিউশনের জন্য সম্পূর্ণ দায়িত্বে থাকে। JDK-এর ভার্সনেই Java-এর ভার্সন প্রকাশ পায়।
JDK, JRE এবং JVM-এর মধ্যে গুরুত্বপূর্ণ পার্থক্য
| ক্র. নং | কী | JDK | JRE | JVM |
|---|---|---|---|---|
| ১ | সংজ্ঞা | JDK (Java Development Kit) হলো Java-এ অ্যাপ্লিকেশন ডেভেলপ করার জন্য একটি সফটওয়্যার ডেভেলপমেন্ট কিট। JRE-এর পাশাপাশি এতে ডেভেলপমেন্ট টুলস (কম্পাইলার, JavaDoc, Java Debugger ইত্যাদি) থাকে। | JRE (Java Runtime Environment) হলো JVM-এর ইমপ্লিমেন্টেশন এবং এটি একটি সফটওয়্যার প্যাকেজ যা Java ক্লাস লাইব্রেরি, Java Virtual Machine (JVM) এবং অন্যান্য কম্পোনেন্ট প্রদান করে Java প্রোগ্রাম রান করার জন্য। | JVM (Java Virtual Machine) হলো একটি বিমূর্ত মেশিন যা প্ল্যাটফর্ম-ডিপেন্ডেন্ট এবং এর তিনটি ধারণা আছে: স্পেসিফিকেশন (JVM ইমপ্লিমেন্টেশনের প্রয়োজনীয়তা বর্ণনা করা ডকুমেন্ট), ইমপ্লিমেন্টেশন (JVM-এর প্রয়োজনীয়তা পূরণকারী কম্পিউটার প্রোগ্রাম), এবং ইনস্ট্যান্স (Java বাইটকোড এক্সিকিউট করার জন্য রানটাইম এনভায়রনমেন্ট প্রদানকারী ইমপ্লিমেন্টেশন)। |
| ২ | প্রধান কার্যকারিতা | JDK প্রধানত কোড এক্সিকিউশনের জন্য ব্যবহৃত হয় এবং এর প্রাইম ফাংশনালিটি হলো ডেভেলপমেন্ট। | JRE প্রধানভাবে কোড এক্সিকিউশনের জন্য এনভায়রনমেন্ট তৈরি করার দায়িত্বে থাকে। | JVM সকল ইমপ্লিমেন্টেশন স্পেসিফাই করে এবং সেগুলো JRE-তে প্রদান করে। |
| ৩ | প্ল্যাটফর্ম স্বাধীনতা | JDK প্ল্যাটফর্ম-ডিপেন্ডেন্ট; আলাদা প্ল্যাটফর্মের জন্য আলাদা JDK প্রয়োজন। | JDK-এর মত JRE-ও প্ল্যাটফর্ম-ডিপেন্ডেন্ট। | JVM প্ল্যাটফর্ম-ইন্ডিপেন্ডেন্ট। |
| ৪ | টুলস | JDK ডেভেলপমেন্টের জন্য দায়বদ্ধ, তাই এতে Java অ্যাপ্লিকেশন ডেভেলপ, ডিবাগ ও মনিটর করার টুলস থাকে। | JRE-তে কম্পাইলার বা ডিবাগার বা বা এমন টুলস নেই। বরং এতে ক্লাস লাইব্রেরি এবং JVM-এর প্রোগ্রাম রান করার জন্য প্রয়োজনীয় সাপোর্টিং ফাইলগুলো থাকে। | JVM-তে সফটওয়্যার ডেভেলপমেন্ট টুলস নেই। |
| ৫ | ইমপ্লিমেন্টেশন | JDK = JRE + ডেভেলপমেন্ট টুলস | JRE = JVM + অ্যাপ্লিকেশন রান করার জন্য লাইব্রেরি | JVM = শুধু Java বাইটকোড এক্সিকিউশনের জন্য রানটাইম এনভায়রনমেন্ট |