Loading AI tools
উইকিপিডিয়া থেকে, বিনামূল্যে একটি বিশ্বকোষ
জাভা ভার্চুয়াল মেশিন (JVM) সান মাইক্রোসিস্টেম-এর একটি সফটওয়্যার যা বাইটকোড রান করতে সক্ষম। এটি জাভা বাইটকোডের (অন্তর্বর্তী ভাষা) একটি প্রোগ্রামকে মেশিন ভাষায় পরিবর্তিত ও তা রান করে। এটি জাভা সফটওয়্যার প্লাটফর্মের কোড একজিকিউশনের সহায়ক একটি উপাদান। সান মাইক্রোসিস্টেমস বলেছে যে, JVM সক্রিয় ডিভাইস রয়েছে ৫.৫ বিলিয়নেরও উপর।
নকশাকার | সান মাইক্রোসিস্টেমস |
---|---|
বিট | ৩২-বিট |
প্রবর্তিত | ১৯৯৪ |
সংস্করণ | 187.666.5747 |
ধরন | Stack and register–register |
ডেটা ক্রম | Big |
রেজিস্টার | |
সাধারণ উদ্দেশ্য | পদ্ধতি-প্রতি অপারেন্ড স্ট্যাক (৬৫৫৩৫ অপারেন্ড পর্যন্ত) প্লাস পদ্ধতি-প্রতি স্থানীয় ভেরিয়েবল (৬৫৫৩৫ অবধি) |
জাভা ভার্চুয়াল মেশিন বা JVM-কে বলা হয় একটি "ভার্চুয়াল" কম্পিউটার যা "বাস্তব" কম্পিউটারের সাথে অবস্থান করে একটি সফ্টওয়্যারের প্রক্রিয়া হিসাবে। এটি জাভা প্রোগ্রামকে দেয় প্ল্যাটফর্ম স্বাধীনতা এবং সব প্লাটফরম তথা সব অপারেটিং সিস্টেমে চলার স্বতঃস্ফূর্ততা।
জাভা কোড .জাভা ফাইলে লেখা হয়। এই কোডে জাভা ল্যাংগুয়েজ এর এক বা একাধিক বৈশিষ্ট্য যেমন ক্লাস,মেথড, ভ্যারিয়েবল,অবজেক্ট প্রভৃতি থাকে। জাভা কম্পাইলার এই কোড কম্পাইল করে .ক্লাস ফাইল তৈরি করে। এই .ক্লাস ফাইল বাইটকোড ধারণ করে। জাভা বাইটকোড জাভা ভার্চুয়াল মেশিনের এর একটি ইনপুট। JVM এই কোড পড়ে তারপর ইন্টারপ্রেট করে এবং সবশেষে প্রোগ্রাম রান করে।
কোড একজিকিউশন করার জন্য জাভা ভার্চুয়াল মেশিন (JVM) বিভিন্ন উপাদান ব্যবহার করে। JVM স্ট্যাক, গারবেজ কালেক্টিং হিপ, রেজিস্টার এবং মেথড এরিয়ার মত বিভিন্ন উপাদান ভাগ করা হয়েছে. JVM এর ডায়াগ্রাম দেখানো হল:
জাভা ভার্চুয়াল মেশিনে স্ট্যাক বিভিন্ন মেথডের আর্গুমেন্ট সংরক্ষণ রাখার পাশাপাশি যেকোন মেথডের লোকাল ভ্যারিয়েবলগুলোকে সংরক্ষণ করে। এছাড়াও স্ট্যাক প্রত্যেকটি মেথডের কাজ করার ধারা তত্ত্বাবধান করে। এটিকে বলা হয় স্ট্যাক ফ্রেম। তিনটা রেজিস্টার আছে যারা স্ট্যাক-এর পরিবর্তন সাধনে সাহায্য করে। এসব হল: ভার্স, ফ্রেম, অপটোপ। এসব রেজিস্টারসমূহ চলতি স্ট্যাক-এর বিভিন্ন অংশকে নির্দেশ করে।
যে সকল লোকাল ভ্যারিয়েবলসমূহ চলতি মেথডে ব্যবহৃত হচ্ছে, সবগুলো নিয়ে লোকাল ভ্যারিয়েবল এর বিভাগ গঠিত। এটি ভার্স রেজিস্টার দ্বারা নির্দেশ করা হয়।
স্ট্যাক-এর নিজস্ব অপারেশনসমূহকে সঠিকভাবে নিয়ন্ত্রণ করার জন্য একজিকিউশন এনভায়রমেন্ট বিভাগ ব্যবহৃত হয়। এটি ফ্রেম রেজিস্টার দ্বারা নির্দেশ করা হয়।
বাইটকোড ইন্সট্রাকশনের কাজের ক্ষেত্র হিসেবে অপার্যান্ড স্ট্যাক ব্যবহৃত হয়। এখানেই বাইটকোড ইন্সট্রাকশনের প্যারামিটারগুলো স্থাপন করা হয় এবং বাইটকোড ইন্সট্রাকশনের ফলাফল পাওয়া যায়। অপার্যান্ড স্ট্যাক-এর সর্বোচ্চ মান অপটোপ রেজিস্টার দ্বারা নির্দেশ করা হয়।
মেথড এরিয়ায় বাইটকোড অবস্থান করে। প্রোগ্রাম কাউন্টার এখানে কিছু বাইট নির্দেশ করে। কোন নির্দেশ মাত্রই একজিকিউট করল (ইন্টারপ্রেটার দিয়ে) তা সমন্ধে এটি অবগত থাকে। এটি একটি নির্দেশ একজিকিউশেনের পর পরবর্তী নির্দেশকে একজিকিউশনের জন্য প্রস্তুত করে।
গারবেজ কালেক্টিং হিপে জাভা প্রোগ্রামের সকল অবজেক্ট অবস্থান করে। যখনই একজন প্রোগ্রামার কোন অবজেক্ট তৈরি করে গারবেজ কালেক্টিং হিপ তার জন্য মেমরি বরাদ্দ করে। সি++ এর মত জাভা প্রোগ্রামিং ল্যাংগুয়েজে মেমরি ফ্রী করার জন্য কোন অপারেটর নেই। জাভা গারবেজ কালেক্টিং পদ্ধতি দ্বারা এই কাজটি স্বয়ংক্রিয় ভাবে করে থাকে। [তথ্যসূত্র প্রয়োজন]
তৃতীয় পক্ষগুলি JVM লক্ষ্য করে এমন অনেক কম্পাইলার বা ইন্টারপ্রেটার তৈরি করেছে। এইগুলির মধ্যে কিছু বিদ্যমান ভাষাগুলির জন্য, অন্যরা জাভা ভাষার এক্সটেনশনগুলির জন্য অন্তর্ভুক্ত:
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.