জাভা একটি উচ্চ স্তরের প্রোগ্রামিং ভাষা। একটি উচ্চ স্তরের ভাষা লিখিত প্রোগ্রাম সরাসরি কোনো মেশিনে চালানো যাবে না। প্রথমত, এটি নির্দিষ্ট মেশিন ভাষাতে অনুবাদ করা প্রয়োজন। জাভাক কম্পাইলারটি এই জিনিসটি করে, এটি জাভা প্রোগ্রাম (.java ফাইলটি সোর্স কোড ধারণ করে) এবং এটি মেশিন কোডে রূপান্তরিত করে (বাইট কোড বা .class ফাইল হিসাবে উল্লেখ করা হয়)।
জাভা ভার্চুয়াল মেশিন (জেভিএম) একটি ভার্চুয়াল মেশিন যা বাস্তব মেশিনে থাকে (আপনার কম্পিউটার) এবং JVM এর জন্য মেশিন ভাষা বাইট কোড । এটি কম্পাইলারের জন্য এটি সহজ করে তোলে কারণ এটি প্রতিটি মেশিনের জন্য বিভিন্ন মেশিন কোডের পরিবর্তে JVM এর জন্য বাইট কোড তৈরি করেছে। JVM কম্পাইলার দ্বারা উত্পন্ন বাইট কোড চালায় এবং আউটপুট উত্পাদন করে। JVM হল এমন একটি যা জাভা প্ল্যাটফর্মকে স্বাধীন করে তোলে ।
সুতরাং, এখন আমরা বুঝতে পারি যে JVM এর প্রাথমিক ফাংশনটি কম্পাইলার দ্বারা উত্পাদিত বাইট কোড চালানো হয়।প্রতিটি অপারেটিং সিস্টেমের JVM ভিন্ন রয়েছে, তবে বিট কোড চালানোর পর যে সমস্ত আউটপুট তারা উৎপন্ন করে তা সমস্ত অপারেটিং সিস্টেমগুলির মধ্যে একই। যার মানে উইন্ডোতে তৈরি বাইট কোড ম্যাক ওএস এবং তার বিপরীত দিকে চলতে পারে। যেহেতু আমরা জাভাকে প্ল্যাটফর্ম হিসাবে স্বাধীন ভাষা হিসাবে ডাকা করেছি। একই জিনিস নীচের ডায়াগ্রামে দেখা যাবে:
তাই সবকিছু সংক্ষিপ্ত করা: জাভা ভার্চুয়াল মেশিন (JVM) ভার্চুয়াল মেশিন যা প্রকৃত মেশিন (আপনার কম্পিউটারে) চালায় এবং জাভা বাইট কোডটি চালায়। জেভিএম জাভা সোর্স কোড বুঝতে পারে না, এজন্যই আমাদের জাভা কম্পাইলার দরকার। * .java ফাইলে কম্পাইল করার জন্য * .class ফাইল যা জাভা দ্বারা বাইট কোড বোঝে। JVM জাভা পোর্টেবল তৈরি করে (একবার লিখুন, যেকোনো জায়গায় রান করুন) প্রতিটি অপারেটিং সিস্টেমের JVM ভিন্ন রয়েছে, তবে বিট কোড চালানোর পর যে সমস্ত আউটপুট তারা উৎপন্ন করে তা সমস্ত অপারেটিং সিস্টেমগুলির মধ্যে একই।
JVM আর্কিটেকচার
দেখুন কিভাবে JVM কাজ করে :
ক্লাস লোডার: ক্লাস লোডারটি .class ফাইলটি পড়ে এবং পদ্ধতি এলাকার বাইট কোডটি সংরক্ষণ করে।
পদ্ধতি এলাকা : একটি JVM যা শুধুমাত্র সমস্ত ক্লাস মধ্যে ভাগ করা হয় একটি পদ্ধতি এলাকা আছে। এটি প্রতিটি .class ফাইলের শ্রেণী স্তরের তথ্য ধারণ করে।
হিপ : হ্যাপ JVM মেমরির একটি অংশ যেখানে বস্তু বরাদ্দ করা হয়। JVM প্রতিটি .class ফাইলের জন্য একটি ক্লাস অবজেক্ট তৈরি করে।
স্ট্যাক : স্ট্যাক হল JVM মেমরির একটি অংশ কিন্তু হিপের মত নয়, এটি অস্থায়ী ভেরিয়েবল সংরক্ষণের জন্য ব্যবহৃত হয়।
পিসি নিবন্ধক : এটি কোন নির্দেশনাটি কার্যকর করা হয়েছে এবং কোনটি কার্যকর করা হবে তা ট্র্যাক রাখে। যেহেতু নির্দেশাবলী থ্রেড দ্বারা চালানো হয়, প্রতিটি থ্রেড একটি পৃথক পিসি নিবন্ধক আছে।
নেটিভ মেথড স্ট্যাক: একটি নেটিভ পদ্ধতি ভার্চুয়াল মেশিনের রানটাইম ডাটা এলাকায় অ্যাক্সেস করতে পারে।
নেটিভ পদ্ধতি ইন্টারফেস : এটি জাভা কোড কল করতে বা নেটিভ অ্যাপ্লিকেশন দ্বারা বলা যাবে। নেটিভ অ্যাপ্লিকেশনগুলি এমন প্রোগ্রাম হয় যা একটি সিস্টেমের হার্ডওয়্যার এবং অপারেটিং সিস্টেমের জন্য নির্দিষ্ট।
আবর্জনা সংগ্রহ : একটি ক্লাস উদাহরণ স্পষ্টভাবে জাভা কোড দ্বারা তৈরি করা হয় এবং এটি স্বয়ংক্রিয়ভাবে মেমরি ম্যানেজমেন্ট জন্য আবর্জনা সংগ্রহ দ্বারা ধ্বংস হয় ব্যবহারের পরে।
JVM Vs JRE Vs JDK
JRE: JRE হল এমন পরিবেশ যা জাভা ভার্চুয়াল মেশিন চালায়। JRE- র মধ্যে রয়েছে জাভা ভার্চুয়াল মেশিন (জেভিএম), ক্লাস লাইব্রেরি এবং অন্যান্য ফাইলগুলি যেমন কম্পাইলার এবং ডিবাগার হিসাবে ডেভেলপমেন্ট সরঞ্জাম ব্যতীত।
যার মানে আপনি JRE কোড চালাতে পারেন কিন্তু আপনি JRE মধ্যে কোড বিকাশ এবং কম্পাইল করতে পারবেন না।
যার মানে আপনি JRE কোড চালাতে পারেন কিন্তু আপনি JRE মধ্যে কোড বিকাশ এবং কম্পাইল করতে পারবেন না।
JVM: আমরা উপরে আলোচনা হিসাবে, JVM ক্লাস, লাইব্রেরি এবং JRE দ্বারা সরবরাহিত ফাইল ব্যবহার করে প্রোগ্রাম রান।
JDK: JDK JRE- এর একটি সুপারসেট, এটি JRE এর উন্নয়ন সরঞ্জাম যেমন কম্পাইলার, ডিবাগার ইত্যাদি সহ সবগুলি রয়েছে।
JDK: JDK JRE- এর একটি সুপারসেট, এটি JRE এর উন্নয়ন সরঞ্জাম যেমন কম্পাইলার, ডিবাগার ইত্যাদি সহ সবগুলি রয়েছে।
Comments
Post a Comment