জাভা ভার্চুয়াল মেশিন

উইকিপিডিয়া, মুক্ত বিশ্বকোষ থেকে

জাভা ভার্চুয়াল মেশিন (JVM) সান মাইক্রোসিস্টেম-এর একটি সফটওয়্যার যা বাইটকোড রান করতে সক্ষম। এটি জাভা বাইটকোডের (অন্তর্বর্তী ভাষা) একটি প্রোগ্রামকে মেশিন ভাষায় পরিবর্তিত ও তা রান করে। এটি জাভা সফটওয়্যার প্লাটফর্মের কোড একজিকিউশনের সহায়ক একটি উপাদান। সান মাইক্রোসিস্টেমস বলেছে যে, JVM সক্রিয় ডিভাইস রয়েছে ৫.৫ বিলিয়নেরও উপর।

পরিচিতি[সম্পাদনা]

চিত্র:Java.zen.ah1.png
জাভা ভার্চুয়াল মেশিনের (JVM) কার্যক্রমের প্রবাহচিত্র

জাভা ভার্চুয়াল মেশিন বা JVM-কে বলা হয় একটি "ভার্চুয়াল" কম্পিউটার যা "বাস্তব" কম্পিউটারের সাথে অবস্থান করে একটি সফ্টওয়্যারের প্রক্রিয়া হিসাবে। এটি জাভা প্রোগ্রামকে দেয় প্ল্যাটফর্ম স্বাধীনতা এবং সব প্লাটফরম তথা সব অপারেটিং সিস্টেমে চলার স্বতঃস্ফূর্ততা।

জাভা কোড .জাভা ফাইলে লেখা হয়। এই কোডে জাভা ল্যাংগুয়েজ এর এক বা একাধিক বৈশিষ্ট্য যেমন ক্লাস,মেথড, ভ্যারিয়েবল,অবজেক্ট প্রভৃতি থাকে। জাভা কম্পাইলার এই কোড কম্পাইল করে .ক্লাস ফাইল তৈরি করে। এই .ক্লাস ফাইল বাইটকোড ধারণ করে। জাভা বাইটকোড জাভা ভার্চুয়াল মেশিনের এর একটি ইনপুট। JVM এই কোড পড়ে তারপর ইন্টারপ্রেট করে এবং সবশেষে প্রোগ্রাম রান করে।

উপাদানসমূহ[সম্পাদনা]

কোড একজিকিউশন করার জন্য জাভা ভার্চুয়াল মেশিন (JVM) বিভিন্ন উপাদান ব্যবহার করে। JVM স্ট্যাক, গারবেজ কালেক্টিং হিপ, রেজিস্টার এবং মেথড এরিয়ার মত বিভিন্ন উপাদান ভাগ করা হয়েছে. JVM এর ডায়াগ্রাম দেখানো হল:

চিত্র:Java.zen.ah2.png
জাভা ভার্চুয়াল মেশিন বা JVM এর উপাদানসমূহ।

স্ট্যাক[সম্পাদনা]

জাভা ভার্চুয়াল মেশিনে স্ট্যাক বিভিন্ন মেথডের আর্গুমেন্ট সংরক্ষণ রাখার পাশাপাশি যেকোন মেথডের লোকাল ভ্যারিয়েবলগুলোকে সংরক্ষণ করে। এছাড়াও স্ট্যাক প্রত্যেকটি মেথডের কাজ করার ধারা তত্ত্বাবধান করে। এটিকে বলা হয় স্ট্যাক ফ্রেম। তিনটা রেজিস্টার আছে যারা স্ট্যাক-এর পরিবর্তন সাধনে সাহায্য করে। এসব হল: ভার্স, ফ্রেম, অপটোপ। এসব রেজিস্টারসমূহ চলতি স্ট্যাক-এর বিভিন্ন অংশকে নির্দেশ করে।

লোকাল ভ্যারিয়েবল[সম্পাদনা]

যে সকল লোকাল ভ্যারিয়েবলসমূহ চলতি মেথডে ব্যবহৃত হচ্ছে, সবগুলো নিয়ে লোকাল ভ্যারিয়েবল এর বিভাগ গঠিত। এটি ভার্স রেজিস্টার দ্বারা নির্দেশ করা হয়।

একজিকিউশন এনভায়রমেন্ট[সম্পাদনা]

স্ট্যাক-এর নিজস্ব অপারেশনসমূহকে সঠিকভাবে নিয়ন্ত্রণ করার জন্য একজিকিউশন এনভায়রমেন্ট বিভাগ ব্যবহৃত হয়। এটি ফ্রেম রেজিস্টার দ্বারা নির্দেশ করা হয়।

অপার‍্যান্ড স্ট্যাক[সম্পাদনা]

বাইটকোড ইন্সট্রাকশনের কাজের ক্ষেত্র হিসেবে অপার‍্যান্ড স্ট্যাক ব্যবহৃত হয়। এখানেই বাইটকোড ইন্সট্রাকশনের প্যারামিটারগুলো স্থাপন করা হয় এবং বাইটকোড ইন্সট্রাকশনের ফলাফল পাওয়া যায়। অপার‍্যান্ড স্ট্যাক-এর সর্বোচ্চ মান অপটোপ রেজিস্টার দ্বারা নির্দেশ করা হয়।

মেথড এরিয়া[সম্পাদনা]

মেথড এরিয়ায় বাইটকোড অবস্থান করে। প্রোগ্রাম কাউন্টার এখানে কিছু বাইট নির্দেশ করে। কোন নির্দেশ মাত্রই একজিকিউট করল (ইন্টারপ্রেটার দিয়ে) তা সমন্ধে এটি অবগত থাকে। এটি একটি নির্দেশ একজিকিউশেনের পর পরবর্তী নির্দেশকে একজিকিউশনের জন্য প্রস্তুত করে।

গারবেজ কালেক্টিং হিপ[সম্পাদনা]

গারবেজ কালেক্টিং হিপে জাভা প্রোগ্রামের সকল অবজেক্ট অবস্থান করে। যখনই একজন প্রোগ্রামার কোন অবজেক্ট তৈরি করে গারবেজ কালেক্টিং হিপ তার জন্য মেমরি বরাদ্দ করে। সি++ এর মত জাভা প্রোগ্রামিং ল্যাংগুয়েজে মেমরি ফ্রী করার জন্য কোন অপারেটর নেই। জাভা গারবেজ কালেক্টিং পদ্ধতি দ্বারা এই কাজটি স্বয়ংক্রিয় ভাবে করে থাকে।[তথ্যসূত্র প্রয়োজন]

তথ্যসূত্র[সম্পাদনা]

বহিঃসংযোগ[সম্পাদনা]