JVM .class ফাইল থেকে বাইটকোড লোড করার পর, Bytecode Verifier সেটি ভেরিফাই করে নিরাপত্তা এবং সঠিকতা নিশ্চিত করে।
- বাইটকোড স্ট্রাকচার যাচাই (সঠিক ম্যাজিক নাম্বর, ভার্সন)।
- স্ট্যাক অন্ডারফ্লো/ওভারফ্লো চেক।
- টাইপ সেফটি (অপারেন্ড টাইপ মেলে কিনা)।
- অ্যাক্সেস কন্ট্রোল (private, final মেম্বার অ্যাক্সেস)।
- অনরিচেয়েবল কোড, ইনফিনিট লুপ চেক।
ভেরিফিকেশন সফল হলে ইন্টারপ্রেটার/জিআইটি (JIT) কম্পাইলার কোড এক্সিকিউট করে। ভেরিফিকেশন ফেইল হলে VerifyError থ্রো হয়।
উদাহরণ
public class VerificationDemo {
private float value = 0;
float add(int val) {
int balance = val;
this.value += balance;
return this.value;
}
public static void main(String[] args) {
VerificationDemo obj = new VerificationDemo();
System.out.println("Instance created");
System.out.println(obj.add(3456)); // 3456.0
}
}
এখানে বাইটকোড ভেরিফায়ার নিশ্চিত করে int থেকে float কনভারশন সঠিক, স্ট্যাক অপারেশন বৈধ, এবং অ্যাক্সেস মডিফায়ার মেনে চলা হয়েছে।