আস সালামু আলাইকুম, আশা করি সবাই ভাল আছেন। আলহামদুলিল্লাহ, আপনাদের দোয়ায় আমিও ভাল আছি। সবার ঈদই মনে হয় অনেক ভাল কেটেছে তাই না? আমারও খারাপ কাটে নি। তবে আগের থেকে অনেক অলস হয়ে গেছি মনে হয়। ঘুমটা অনেক বেড়ে গিয়েছে। যাইহোক, প্রোগ্রামিং যখন আমরা শুরু করেছি তাহলে শেষ তো অবশ্যই করতে হবে তাইয়া না?
তো চলুন আজ আর কথা না বাড়িয়ে jvm, jdk আর jre আসলে কি তা জেনে নিই।আর চেষ্টা করবো জেভিএম এর বিস্তারিত আলোচনা করতে। তো চলুন আজকের টপিক্সে মনোযোগ দেয়া যাক। ঘুমে চোখ বন্ধ হয়ে যাচ্ছে। কি যে করি? সারারাত ঘুমানোর পরও এত্ত ঘুম। কিন্তু লিখতে যখন বসেছি তাহলে তো কিছু লিখতেই হবে। তো চলুন জেনে নিই...
JVM জেভিএম এর পূর্ণরূপ হচ্ছে জাভা ভার্চুয়াল মেশিন এটা আমরা সবাই জানি। এটা একটা অবাস্তব মেশিন। মানে একটা একটা স্বপ্নের রাজা। জেভিএম কে শুধু একটা মেশিন হিসেবে কল্পনা করা হয়। এটার বৈশিষ্ট্য হচ্ছে এটা উপযুক্ত রান টাইম এনভায়রনমেন্ট প্রদান করে জাভার বাইটকোডকে এক্সিকিউট করে।
জেভিএম এর অনেক হার্ডওয়্যার আর সফটওয়্যার প্লাটফর্ম রয়েছে।একটা কথা মাথায় রাখবেন যে, জেভিএম,জেআরই এবং জেডিকে প্লাটফর্মের নির্ভরশীল কিন্তু জাভা প্লাটফর্মের উপর নির্ভরশীল নয়।
• কোডকে লোড করে
• কোডকে ভেরিফাই করে।
• কোডকে এক্সিকিউট করে।
• রানটাইম এনভায়নমেন্ট প্রদান করে।
বিস্তারিত পরবর্তী অংশে আলোচনা করবো। আপাতত সংক্ষেপে জেডিকে আর জেআরই নিয়ে আলোচনা করবো এতে এদের মধ্যে যে পার্থক্য বা সম্পর্ক রয়েছে তা বুঝতে পারবেন।
জেআরই এর পূর্ণরূপ জাভা রানটাইম এনভায়রনমেন্ট। এটা জাভার রানটাইম এনভায়নমেন্ট তৈরি করে। জানি নাম দেখেই এটা বুঝতে পেরেছেন। কিন্তু অনেকেই কনফিউশনে থাকেন।তাই আর কি কনফার্ম করলাম। এখন অনেকেই বলতেছেন যে, জেভিএমও রান টাইম এনভায়রনমেন্ট প্রদান করে আবার এটাও একই কাজ করে।
আসলে জেভিএম এই জেআরই এর মাধ্যমেই রানটাইম এনভায়নমেন্ট প্রদান করে। আসলে জেআরই জেভিএমেরই একটি অংশ।আসলে জেআরই এক সেট লাইব্রেরি আর কিছু অন্যান্য ফাইলের সমন্বয়ে গঠিত যা জেভিএম রানটাইমে ব্যবহার করে থাকে। জেভিএম এর এসব ইমপ্লিমেন্টেশন বা অংশগুলো সান মাইক্রোসিস্টেম কোম্পানি ছাড়াও অন্যান্য কোম্পানিগুলোও রিলিজ করে থাকে।
জেডিকে এর পূর্ণরূপ হচ্ছে, জাভা ডেভেলপমেন্ট কিট। এটা গঠনগতভাবেই বিদ্যমান।এটা জে আর ই আর ডেভেলপমেন্ট টুলস এর সমন্বয়ে গঠিত। নিচের চিত্র দেখলেই আশা করি ক্লিয়ার হয়ে যাবেন।
আসুন এবার জে ভি এম এর সম্পর্কে বিস্তারিত জেনে নিই। আগেও বলেছি জাভা ভার্চুয়াল মেশিন একটি কাল্পনিক মেশিন। আর এটি প্লাটফর্ম নির্ভর।
• একটি নির্দিষ্ট কাজের জন্য জেভিএম এর কাজও সুনির্দিষ্ট। কিন্তু এর ইমপ্লিমেন্টশন প্রভাইডার স্বাধীনভাবে যেকোনো এলগরিদম চয়েজ করতে পারে। আর এর ইমপ্লিমেন্টশন প্রোভাইড করে থাকে সাধারণত সান এবং অন্যান্য কিছু কোম্পানি।
• এর ইমপ্লিমেন্টেশন জে আর ই (জাভা রানটাইম এনভায়রনমেন্ট) নামে পরিচিত।
• রানটাইম ইন্সট্যান্স তৈরিঃ যখন কমান্ড প্রোমটে কোনো জাভা ক্লাসকে রান করার কমান্ড দেয়া হয় তখন জেভিএম ঐ ক্লাসের জন্য একটি ইন্সট্যান্স তৈরি করে।
জেভিএম এর তো আর আমাদের মত খাওয়া দাওয়ার দরকার নেই। তাই শুধু সারাদিন কাজই করে। আমরা ব্যস্ত থাকি অকাজে। আর জেভিএম ব্যস্ত থাকে প্রকৃত কাজে। আসুন জেনে নিই জেভিএম আসলে কি কি কাজ করে। সংক্ষেপে বলার চেষ্টা করবো... আশা করি বুঝে নিবেন। মনে রাখবেন,।“সব কথা বলে না হৃদয়, কিছু কথা বুঝে নিতে হয়। জানি অনেকেই হয়ত এর উত্তর জানেন এরপরও আলোচনা করতেছি আর কি।
• কোড লোড করা
• কোডকে ভেরিফাই করা
• কোডকে এক্সিকিউট করা
• রান টাইম এনভায়রনমেন্ট প্রদান করা
জেভিএম কিছু সীমা নির্দেশ করেঃএগুলো হল-
• মেমরির এরিয়া নির্দিষ্ট করে
• ক্লাস ফাইল ফরমেটের
• রেজিস্টার সেটের
• গার্বেজ কালেকশন হিপের
• ফ্যাটাল এ্যরর নির্দেশে ইত্যাদি।
জেভিএম সম্পর্কে এত কিছু জানলাম। এখন এর ভিতরের আর্কিটেকচার না হানলে কি হয়? তো চলুন জেনে নিই:
• ক্লাস লোডারঃ এটি জেভিএম এর একটি সাব সিস্টেম যা ক্লাস ফাইলকে লোড করে।
• ক্লাস (ম্যাথোড) এরিয়াঃ এটা প্রতিটি ক্লাসের স্ট্রাকচারকে সংরক্ষণ করে রানটাইম কনস্ট্যান্ট পুল, ফিল্ড এবং মেথোড ডাটা,মেথোড ডাটার কোড হিসেবে।
• হিপঃ এটা হচ্ছে রান টাইম ডাটা এরিয়া যেখানে অব্জেক্ট এর জন্য ম্যামরি এলোকেট করা হয়।
• স্ট্যাকঃ জাভার স্ট্যাক ফ্রেমকে সংরক্ষণ করে। এটা লোকাল ভেরিয়েবল ও সাময়িক রেজাল্টকে ধারণ করে ম্যাথোড কে কলং এবং রিটার্ন এর যত ডাটা আছে সবকিছু ধারণ করে।
প্রতিটি থ্রেডের আছে একটি প্রাইভেট জেভিএম স্ট্যাক। এটা তৈরি হয় থ্রেড তৈরি হওয়ার সাথে সাথেই। থ্রেড কি? যদি না বুঝেন তাহলে গুগলে সার্চ করেন। নাহলে পরে এক সময় বুঝাবো, বিশেষ করে মাল্টিথ্রেডিং যখন আলোচনা করবো তখন। যাইহোক, একটা নতুন ফ্রেম তখনই তৈরি হয় যখন একটা মেথডকে কল করা হয়। যখন মেথোডের কাজ শেষ হয়ে যায় তখন ফ্রেম নষ্ট হয়ে যায়।
• প্রোগ্রাম কাউন্টার(pc): এটা এক ধরণের রেজিস্টার। বর্তমানে যেসব ইন্সট্রাকশন জাভা ভার্চুয়াল মেশিনে এক্সিকিউট হচ্ছে তাদের এড্রেস ধারণ করাই এর কাজ।
• নেটিভ মেথোড স্ট্যাকঃ এটা একটি এপ্লিক্যাশনে যে সকল মেথড সাধারণত ব্যবহৃত হয় সেই সবগুলো মেথোড ধারণ করে।
• এক্সিকিউশন ইঞ্জিনঃ এক্সিকিউশন ইঞ্জিনে রয়েছে
আমি মোঃ আশিকুর রহমান সরল। বিশ্বের সর্ববৃহৎ বিজ্ঞান ও প্রযুক্তির সৌশল নেটওয়ার্ক - টেকটিউনস এ আমি 8 বছর 10 মাস যাবৎ যুক্ত আছি। টেকটিউনস আমি এ পর্যন্ত 83 টি টিউন ও 102 টি টিউমেন্ট করেছি। টেকটিউনসে আমার 12 ফলোয়ার আছে এবং আমি টেকটিউনসে 0 টিউনারকে ফলো করি।
আমি একজন প্রযুক্তি প্রেমী।কম্পিউটার ইঞ্জিনিয়ারিং এ লেখাপড়া করছি।পৃথিবীকে নতুন কিছু করে দেখাতে চাই। My Website