আসুন শিখি পরিপূর্ণ জাভা [পর্ব-৫] :: jre, jdk এবং jvm কি? এবং jvm এর বিস্তারিত বর্ণনা

8
526

আস সালামু আলাইকুম, আশা করি সবাই ভাল আছেন। আলহামদুলিল্লাহ, আপনাদের দোয়ায় আমিও ভাল আছি। আজ আমি আপনাদের সাথে আসুন শিখি পরিপূর্ণ জাভা [পর্ব-৫] :: jre, jdk এবং jvm কি? এবং jvm এর বিস্তারিত আলোচনা করার চেষ্টা করবো।

তো চলুন আজ আর কথা না বাড়িয়ে jvm, jdk আর jre আসলে কি তা জেনে নিই।আর চেষ্টা করবো জেভিএম এর বিস্তারিত আলোচনা করতে। তো চলুন আজকের টপিক্সে মনোযোগ দেয়া যাক। ঘুমে চোখ বন্ধ হয়ে যাচ্ছে। কি যে করি? সারারাত ঘুমানোর পরও এত্ত ঘুম। কিন্তু লিখতে যখন বসেছি তাহলে তো কিছু লিখতেই হবে। তো চলুন জেনে নিই…

Jvm, jre এবং Jdk আসলে কি?

JVM জেভিএম এর পূর্ণরূপ হচ্ছে জাভা ভার্চুয়াল মেশিন এটা আমরা সবাই জানি। এটা একটা অবাস্তব মেশিন। মানে একটা একটা স্বপ্নের রাজা। জেভিএম কে শুধু একটা মেশিন হিসেবে কল্পনা করা হয়। এটার বৈশিষ্ট্য হচ্ছে এটা উপযুক্ত রান টাইম এনভায়রনমেন্ট প্রদান করে জাভার বাইটকোডকে এক্সিকিউট করে।

জেভিএম এর অনেক হার্ডওয়্যার আর সফটওয়্যার প্লাটফর্ম রয়েছে।একটা কথা মাথায় রাখবেন যে, জেভিএম,জেআরই এবং জেডিকে প্লাটফর্মের নির্ভরশীল কিন্তু জাভা প্লাটফর্মের উপর নির্ভরশীল নয়।

জেভিএম আসলে কি কি কাজ করে চলুন জেনে নিইঃ

• কোডকে লোড করে
• কোডকে ভেরিফাই করে।
• কোডকে এক্সিকিউট করে।
• রানটাইম এনভায়নমেন্ট প্রদান করে।

বিস্তারিত পরবর্তী অংশে আলোচনা করবো। আপাতত সংক্ষেপে জেডিকে আর জেআরই নিয়ে আলোচনা করবো এতে এদের মধ্যে যে পার্থক্য বা সম্পর্ক রয়েছে তা বুঝতে পারবেন।

জেআরই

জেআরই এর পূর্ণরূপ জাভা রানটাইম এনভায়রনমেন্ট। এটা জাভার রানটাইম এনভায়নমেন্ট তৈরি করে। জানি নাম দেখেই এটা বুঝতে পেরেছেন। কিন্তু অনেকেই কনফিউশনে থাকেন।তাই আর কি কনফার্ম করলাম। এখন অনেকেই বলতেছেন যে, জেভিএমও রান টাইম এনভায়রনমেন্ট প্রদান করে আবার এটাও একই কাজ করে।

আসলে জেভিএম এই জেআরই এর মাধ্যমেই রানটাইম এনভায়নমেন্ট প্রদান করে। আসলে জেআরই জেভিএমেরই একটি অংশ।আসলে জেআরই এক সেট লাইব্রেরি আর কিছু অন্যান্য ফাইলের সমন্বয়ে গঠিত যা জেভিএম রানটাইমে ব্যবহার করে থাকে। জেভিএম এর এসব ইমপ্লিমেন্টেশন বা অংশগুলো সান মাইক্রোসিস্টেম কোম্পানি ছাড়াও অন্যান্য কোম্পানিগুলোও রিলিজ করে থাকে।

জেডিকে

জেডিকে এর পূর্ণরূপ হচ্ছে, জাভা ডেভেলপমেন্ট কিট। এটা গঠনগতভাবেই বিদ্যমান।এটা জে আর ই আর ডেভেলপমেন্ট টুলস এর সমন্বয়ে গঠিত। নিচের চিত্র দেখলেই আশা করি ক্লিয়ার হয়ে যাবেন।

 

আসুন এবার জে ভি এম এর সম্পর্কে বিস্তারিত জেনে নিই। আগেও বলেছি জাভা ভার্চুয়াল মেশিন একটি কাল্পনিক মেশিন। আর এটি প্লাটফর্ম নির্ভর।

আসলে জেভিএম কি?

• একটি নির্দিষ্ট কাজের জন্য জেভিএম এর কাজও সুনির্দিষ্ট। কিন্তু এর ইমপ্লিমেন্টশন প্রভাইডার স্বাধীনভাবে যেকোনো এলগরিদম চয়েজ করতে পারে। আর এর ইমপ্লিমেন্টশন প্রোভাইড করে থাকে সাধারণত সান এবং অন্যান্য কিছু কোম্পানি।
• এর ইমপ্লিমেন্টেশন জে আর ই (জাভা রানটাইম এনভায়রনমেন্ট) নামে পরিচিত।
• রানটাইম ইন্সট্যান্স তৈরিঃ যখন কমান্ড প্রোমটে কোনো জাভা ক্লাসকে রান করার কমান্ড দেয়া হয় তখন জেভিএম ঐ ক্লাসের জন্য একটি ইন্সট্যান্স তৈরি করে।

জেভিএম এর কাজ কি?

জেভিএম এর তো আর আমাদের মত খাওয়া দাওয়ার দরকার নেই। তাই শুধু সারাদিন কাজই করে। আমরা ব্যস্ত থাকি অকাজে। আর জেভিএম ব্যস্ত থাকে প্রকৃত কাজে। আসুন জেনে নিই জেভিএম আসলে কি কি কাজ করে। সংক্ষেপে বলার চেষ্টা করবো… আশা করি বুঝে নিবেন। মনে রাখবেন,।“সব কথা বলে না হৃদয়, কিছু কথা বুঝে নিতে হয়। জানি অনেকেই হয়ত এর উত্তর জানেন এরপরও আলোচনা করতেছি আর কি।

তো চলুন দেখি জেভিএম আসলে কি কি কাজ করে।

• কোড লোড করা
• কোডকে ভেরিফাই করা
• কোডকে এক্সিকিউট করা
• রান টাইম এনভায়রনমেন্ট প্রদান করা
জেভিএম কিছু সীমা নির্দেশ করেঃএগুলো হল-
• মেমরির এরিয়া নির্দিষ্ট করে
• ক্লাস ফাইল ফরমেটের
• রেজিস্টার সেটের
• গার্বেজ কালেকশন হিপের
• ফ্যাটাল এ্যরর নির্দেশে ইত্যাদি।

জেভিএম সম্পর্কে এত কিছু জানলাম। এখন এর ভিতরের আর্কিটেকচার না জানলে কি হয়? তো চলুন জেনে নিই:

জেভিএম এর ইন্টারনাল আর্কিটেকচার

 

• ক্লাস লোডারঃ এটি জেভিএম এর একটি সাব সিস্টেম যা ক্লাস ফাইলকে লোড করে।
• ক্লাস (ম্যাথোড) এরিয়াঃ এটা প্রতিটি ক্লাসের স্ট্রাকচারকে সংরক্ষণ করে রানটাইম কনস্ট্যান্ট পুল, ফিল্ড এবং মেথোড ডাটা,মেথোড ডাটার কোড হিসেবে।
• হিপঃ এটা হচ্ছে রান টাইম ডাটা এরিয়া যেখানে অব্জেক্ট এর জন্য ম্যামরি এলোকেট করা হয়।
• স্ট্যাকঃ জাভার স্ট্যাক ফ্রেমকে সংরক্ষণ করে। এটা লোকাল ভেরিয়েবল ও সাময়িক রেজাল্টকে ধারণ করে ম্যাথোড কে কলং এবং রিটার্ন এর যত ডাটা আছে সবকিছু ধারণ করে।

প্রতিটি থ্রেডের আছে একটি প্রাইভেট জেভিএম স্ট্যাক। এটা তৈরি হয় থ্রেড তৈরি হওয়ার সাথে সাথেই। থ্রেড কি? যদি না বুঝেন তাহলে গুগলে সার্চ করেন। নাহলে পরে এক সময় বুঝাবো, বিশেষ করে মাল্টিথ্রেডিং যখন আলোচনা করবো তখন। যাইহোক, একটা নতুন ফ্রেম তখনই তৈরি হয় যখন একটা মেথডকে কল করা হয়। যখন মেথোডের কাজ শেষ হয়ে যায় তখন ফ্রেম নষ্ট হয়ে যায়।

• প্রোগ্রাম কাউন্টার(pc): এটা এক ধরণের রেজিস্টার। বর্তমানে যেসব ইন্সট্রাকশন জাভা ভার্চুয়াল মেশিনে এক্সিকিউট হচ্ছে তাদের এড্রেস ধারণ করাই এর কাজ।
• নেটিভ মেথোড স্ট্যাকঃ এটা একটি এপ্লিক্যাশনে যে সকল মেথড সাধারণত ব্যবহৃত হয় সেই সবগুলো মেথোড ধারণ করে।
• এক্সিকিউশন ইঞ্জিনঃ এক্সিকিউশন ইঞ্জিনে রয়েছে

  • একটি ভার্চুয়াল প্রসেসর
  •  ইন্টারপ্রিটারঃ এটি প্রথমে বাইটকোড স্ট্রিমকে রিড করে এরপর ঐ ইনস্ট্রাকশনকে এক্সিকিউট করে।
  •  জাস্ট-ইন-টাইম (jit) কম্পাইলারঃ এটা পারফর্মেন্স বৃদ্ধির জন্য ব্যবহার করা হয়েছে। জিট ঐ বাইটকোডের সেই সকল অংশকে কম্পাইল করে যারা একই সময়ে একই ফাংশনালিটির হয়ে থাকে এবং কম্পাইলেশনের টাইমকে অনেক কমিয়ে আনে।

যাইহোক, আজকের মত বিদায় দেখা হচ্ছে শিগ্রই অন্য কোনো টিউনে।

আল্লাহ হাফিজ।

ফেসবুকে আমি 

Series Navigation<< আসুন শিখি পরিপূর্ণ জাভা [পর্ব-৪] :: জেনে নিই জাভা প্রোগ্রাম কম্পাইল এবং রান করার সময় আসলে ভিতরে কি ঘটে আর সাথে প্যাথ সিলেকশনওআসুন শিখি পরিপূর্ণ জাভা [পর্ব-৬] :: চলুন জেনে নিই জাভার ভেরিয়েবল এবং ডাটা টাইপ যা না জানলেই নয় >>

8 COMMENTS

LEAVE A REPLY

Please enter your comment!
Please enter your name here