আমি মানুষ ! অতি সধারণ একজন মানুষ। সবসময় নিজের ইচ্ছাকে প্রাধান্য দেই, যখন যা ইচ্ছে হয় তাই নিয়েই ব্যস্ত রাখি নিজেকে। নিজেকে একজন ব্লগার হিসেবে দেখার ইচ্ছে, এখনো নিজেকে ব্লগার বলে দাবি করার মতো কিছুই করতে পারিনি। জাভা ভার্চুয়াল মেশিন (JVM) সান মাইক্রোসিস্টেম-এর একটি সফটওয়্যার যা বাইটকোড রান করতে সক্ষম। এটি জাভা বাইটকোডের (অন্তর্বর্তী ভাষা) একটি প্রোগ্রামকে মেশিন ভাষায় পরিবর্তিত ও তা রান করে।
এটি জাভা সফটওয়্যার প্লাটফর্মের কোড একজিকিউশনের সহায়ক একটি উপাদান। সান মাইক্রোসিস্টেমস বলেছে যে, JVM সক্রিয় ডিভাইস রয়েছে ৫.৫ বিলিয়নেরও উপর।
পরিচিতি:
জাভা ভার্চুয়াল মেশিন বা JVM-কে বলা হয় একটি "ভার্চুয়াল" কম্পিউটার যা "বাস্তব" কম্পিউটারের সাথে অবস্থান করে একটি সফ্টওয়্যারের প্রক্রিয়া হিসাবে। এটি জাভা প্রোগ্রামকে দেয় প্ল্যাটফর্ম স্বাধীনতা এবং সব প্লাটফরম তথা সব অপারেটিং সিস্টেমে চলার স্বতঃস্ফূর্ততা।
জাভা কোড .জাভা ফাইলে লেখা হয়।
এই কোডে জাভা ল্যাংগুয়েজ এর এক বা একাধিক বৈশিষ্ট্য যেমন ক্লাস,মেথড, ভ্যারিয়েবল,অবজেক্ট প্রভৃতি থাকে। জাভা কম্পাইলার এই কোড কম্পাইল করে .ক্লাস ফাইল তৈরি করে। এই .ক্লাস ফাইল বাইটকোড ধারণ করে। জাভা বাইটকোড জাভা ভার্চুয়াল মেশিনের এর একটি ইনপুট। JVM এই কোড পড়ে তারপর ইন্টারপ্রেট করে এবং সবশেষে প্রোগ্রাম রান করে।
উপাদানসমূহ:
কোড একজিকিউশন করার জন্য জাভা ভার্চুয়াল মেশিন (JVM) বিভিন্ন উপাদান ব্যবহার করে। JVM স্ট্যাক, গারবেজ কালেক্টিং হিপ, রেজিস্টার এবং মেথড এরিয়ার মত বিভিন্ন উপাদান ভাগ করা হয়েছে. JVM এর ডায়াগ্রাম দেখানো হল:
স্ট্যাক:
জাভা ভার্চুয়াল মেশিনে স্ট্যাক বিভিন্ন মেথডের আর্গুমেন্ট সংরক্ষণ রাখার পাশাপাশি যেকোন মেথডের লোকাল ভ্যারিয়েবলগুলোকে সংরক্ষণ করে। এছাড়াও স্ট্যাক প্রত্যেকটি মেথডের কাজ করার ধারা তত্ত্বাবধান করে। এটিকে বলা হয় স্ট্যাক ফ্রেম। তিনটা রেজিস্টার আছে যারা স্ট্যাক-এর পরিবর্তন সাধনে সাহায্য করে।
এসব হল: ভার্স, ফ্রেম, অপটোপ। এসব রেজিস্টারসমূহ চলতি স্ট্যাক-এর বিভিন্ন অংশকে নির্দেশ করে।
লোকাল ভ্যারিয়েবল:
যে সকল লোকাল ভ্যারিয়েবলসমূহ চলতি মেথডে ব্যবহৃত হচ্ছে, সবগুলো নিয়ে লোকাল ভ্যারিয়েবল এর বিভাগ গঠিত। এটি ভার্স রেজিস্টার দ্বারা নির্দেশ করা হয়।
একজিকিউশন এনভায়রমেন্ট:
স্ট্যাক-এর নিজস্ব অপারেশনসমূহকে সঠিকভাবে নিয়ন্ত্রণ করার জন্য একজিকিউশন এনভায়রমেন্ট বিভাগ ব্যবহৃত হয়।
এটি ফ্রেম রেজিস্টার দ্বারা নির্দেশ করা হয়।
অপার্যান্ড স্ট্যাক:
বাইটকোড ইন্সট্রাকশনের কাজের ক্ষেত্র হিসেবে অপার্যান্ড স্ট্যাক ব্যবহৃত হয়। এখানেই বাইটকোড ইন্সট্রাকশনের প্যারামিটারগুলো স্থাপন করা হয় এবং বাইটকোড ইন্সট্রাকশনের ফলাফল পাওয়া যায়। অপার্যান্ড স্ট্যাক-এর সর্বোচ্চ মান অপটোপ রেজিস্টার দ্বারা নির্দেশ করা হয়।
মেথড এরিয়া:
মেথড এরিয়ায় বাইটকোড অবস্থান করে।
প্রোগ্রাম কাউন্টার এখানে কিছু বাইট নির্দেশ করে। কোন নির্দেশ মাত্রই একজিকিউট করল (ইন্টারপ্রেটার দিয়ে) তা সমন্ধে এটি অবগত থাকে। এটি একটি নির্দেশ একজিকিউশেনের পর পরবর্তী নির্দেশকে একজিকিউশনের জন্য প্রস্তুত করে।
গারবেজ কালেক্টিং হিপ:
গারবেজ কালেক্টিং হিপে জাভা প্রোগ্রামের সকল অবজেক্ট অবস্থান করে। যখনই একজন প্রোগ্রামার কোন অবজেক্ট তৈরি করে গারবেজ কালেক্টিং হিপ তার জন্য মেমরি বরাদ্দ করে।
সি++ এর মত জাভা প্রোগ্রামিং ল্যাংগুয়েজে মেমরি ফ্রী করার জন্য কোন অপারেটর নেই। জাভা গারবেজ কালেক্টিং পদ্ধতি দ্বারা এই কাজটি স্বয়ংক্রিয় ভাবে করে থাকে। ।
অনলাইনে ছড়িয়ে ছিটিয়ে থাকা কথা গুলোকেই সহজে জানবার সুবিধার জন্য একত্রিত করে আমাদের কথা । এখানে সংগৃহিত কথা গুলোর সত্ব (copyright) সম্পূর্ণভাবে সোর্স সাইটের লেখকের এবং আমাদের কথাতে প্রতিটা কথাতেই সোর্স সাইটের রেফারেন্স লিংক উধৃত আছে ।