জাভা তে JVM কি? এটার কাজ টা'ই বা কি???
টিউন-৩ঃ
লেখার এ পর্বে আমরা আজকে জাভার JVM সম্পর্কে জানবো......
যারা নতুন জাভা শিখতে আসে বা শিখে তারা কয়েক বার একটা শব্দের সাথে পরিচিত হয় শব্দ টা হলো JVM । আবার অনেকে এমনও বলে থাকেন জাভা শিখলে নাকি JVM সম্পর্কে জেনে রাখা টা গুত্বপূর্ণ।
আমার মতে, মাথার ভিতর একটা বিষয় যদি বেশি ঘুরপাক খায় বা মনের ভিতর এক সাথে অনেক গুলো প্রশ্ন জাগে তবে সেই সময় যে যত ভালোই বুঝায় কেন আসলে তখন সবই মাথার ওপর দিয়ে যায় । তাই চলো মাথা থেকে প্রশ্নের চাপ কমাতে অন্য বিষয় একটু আলোচনা করা যাক.........
বাংলাদেশে এক সময় রাজা ছিল শেখ মুজিবর রহমান । সে অনেক কষ্টের বিনিময়ে বাংলাদেশকে স্বাধীন করে ছিল । স্বাধীন হওয়ার বেশ কয়েক টা দিন পর তার ডাক পড়ল জাতিসংঘের পার্লামেন্টে একটা মিটিং এ ।
শেখ মুজিবর রহমান সেই মিটিং এ সফল ভাবেই যোগদান করলেন । তিনি যখন জাতিসংঘে পৌছালেন তখন জানতে পারলেন যে মিটিং এ তাকে বকৃততা দিতে হবে ইংরেজীতে । কিন্তু শেখ মুজিবর রহমান ছিলেন প্রখর দেশপ্রেমী সে এটা মেনে নিতে পারল না সে বলল আমি আমার মাতৃভাষা বাংলাতেই বকৃততা দিবো । কিন্তু জাতিসংঘ পার্লামেন্টে(Computer) তো রয়েছে বিভিন্ন ভাষাভাষীর সদস্য(Windows,Mac,Linux) সেখানে সে বাংলা কথা বললে তো তার কথা পার্লামেন্টের সদস্যরা বুঝতে পারবে না আবার এদিকে শেখ মুজিবর রহমান ও এক কথার মানুষ সে বাংলা ছাড়া কথা বলবেনই না । এই পরিস্থিতে জাতিসংঘের পরিচালক(Jems Gosling) ভাবলেন পার্লামেন্টের অন্য সব সদস্যরা তো তাদের নিজেদের মতো করে সবাই ইংরেজী ভাষা বুঝতে পারেন তাহলে এই সমস্যা দূর করার জন্য এখন এমন একটি জাদুকারী সিস্টেম(JVM) প্রয়োজন যেটা শেখ মুজিবর রহমান এর বাংলা ভাষা টা নিজের ভিতর নিয়ে ইংরেজী ভাষায় জেনারেট করে পার্লামেন্টের সব সদস্যদের কাছে পৌঁছে দিবে। তারপর তৈরি করা হলো সেই জাদুকারী সিস্টেম(JVM) আর পার্লামেন্টের সব সদস্যরা সেই জাদুকারী সিস্টেমের(JVM) মাধ্যমে শেখ মুজিবর রহমানের বকৃততা খুব সুন্দর ভাবেই বুঝে নিলেন ।
আলোচনা তো অনেক হলো এবার তাহলে আসো জানা যাক JVM আসলে কি.........
JVM এর পূর্ণরূপ হলো Java Virtual Machine । এখানে ইংরেজী ৩টি word এর শেষের word টি দেখে সহজেই বুঝা যায় যে এটা একটা মেশিন যেটা সম্ভবত্ব জাভার জন্য ব্যবহার করা হয়। কিন্তু প্রশ্ন হলো এই মেশিন জাভার কোথায় এবং কেন ব্যবহার করা হয়? আমি বলব তুমি ঠিকেই আইডিয়া করেছো আর সুন্দর একটি প্রশ্নই তোমার মনে জেগেছে......।
তবে আমি বলি তোমার এই প্রশ্নের উত্তর জানার আগে জানা থাকতে হবে Virtual টা আসলে কি?
Virtual বলতে আমরা সাধারণত বুঝি যার কোন ফিজিকাল এক্সিস্টেন্স নাই কিন্তু ইফেক্ট আছে । যেমন ফেসবুক আমাদের জন্য একটা Virtual জিনিস। ফেসবুকে আমি আমার বন্ধু কুদ্দুস করিম রহিমের পিঠে ঠাস করে থাবড় বসায়া দিয়ে বলতে পারি না আরে দোস্ত কি খবর ? তোরে তো অনেকদিন দেখি না । কিন্তু আমি তাকে Poke করতে পারি । (ইদানিং কেউ পোক ও করে না) । অথবা তাকে নক করতে পারি । ইন এ নাটশেল , ভার্চুয়াল ইজ নট দা রিয়াল থিং , কিন্তু এইটা ইউস করে কাজ করা যায় ।
তাহলে এবার আমরা বলতে পারি যে Virtual Machine হলো এমন একটি মেশিন যার কোন ফিজিকাল এক্সিস্টেন্স নাই কিন্তু ইফেক্ট আছে । জাভাতে ভার্চুয়াল হিসাবে এটি ব্যবহার হয়ে থাকে।
কম্পিউটার তো একটা ইলেকট্রনিক্স যন্ত্র । আর কম্পিউটাকে মানুষের ব্যবহার উপযোগী করার জন্য তৈরি হয়েছে একাধিক Operating System বা Platform যেমন Windows, Mac, Linux ইত্যাদি।
আর কম্পিউটার প্রোগ্রামিং ভাষা গুলোর ভিতর জাভা বাদে অন্য যেসব প্রোগ্রামিং ভাষা যেমন C,C++,C# ইত্যাদি এই প্রোগ্রামিং ভাষায় কোড লিখার জন্য যে কম্পাইলার ব্যবহার করা হয় সে কম্পাইলার গুলো ছিল platform dependent মানে C দিয়ে windows লেখা কোড Linux অথবা Mac এ রান হতো না । এই সমস্যা দূর করার জন্য জাভার জনক জেমস গসলিং ভাবলেন তিনি জাভা তে এমন একটি জাদুকারী সিস্টেম(JVM) তৈরি করবেন যেটার মাধ্যমে জাভা তা লেখা কোড সব operating system বা Platform এ রান করবে । তার সেই যুগান্তরকারী ভাবনা থেকেই জাভার জন্য তৈরি করা হলো JVM । আর এই JVM এর জন্যই জাভাতে লেখা কোড সব Platform এ Run করে ।

জাভা প্লাটফর্ম ইন্ডিপেন্ডেন্ট হলেও , জাভা ভার্চুয়াল মেশিন কিন্তু প্লাটফরম ডিপেন্ডেন্ট । বিভিন্ন প্লাটফরম এর জন্য জাভা ভার্চুয়াল মেশিন আলাদা । কোন জাভা কোড লিখির পরে জাভা কম্পাইলার জাভা কোড কে জাভা বাইট কোড এ রুপান্তরিত করে । JVM এর মুল কাজ হল এই জাভা বাইট কোড এর জন্য একটা পরিবেশ এর যোগান করে দেয়া । জাতে জাভা বাইট কোড টা ঠিক মত এক্সিকিউট হতে পারে । প্রথমে JVM জাভা বাইট কোড টা লোড করে —> এর পরে চেক করে এতে কোন সমসসা আছে কিনা —> কোড রান হয়ার জন্য একটা উপজুক্ত পরিবেশের যোগান দেয় , সর্বপুরি জাভা কোড এক্সিকিউট করে ।