Javassist
জাভাসিস্ট (জাভা প্রোগ্রামিং সহকারী) একটি জাভা লাইব্রেরি যা একটি অ্যাপ্লিকেশনের জাভা বাইটকোড পরিচালনা করার একটি উপায় প্রদান করে। এই অর্থে জাভাসিস্ট কাঠামোগত প্রতিফলনের জন্য সমর্থন প্রদান করে, অর্থাৎ। রান টাইমে একটি ক্লাসের বাস্তবায়ন পরিবর্তন করার ক্ষমতা। একটি প্রদত্ত ক্লাস লোডারের মাধ্যমে লোড-টাইমে বাইটকোড ম্যানিপুলেশন করা হয়। জাভাসিস্ট জাভা প্রোগ্রামগুলিকে রানটাইমে একটি নতুন ক্লাস সংজ্ঞায়িত করতে এবং জেভিএম লোড করার সময় একটি ক্লাস ফাইল সংশোধন করতে সক্ষম করে। অন্যান্য অনুরূপ বাইটকোড সম্পাদকদের বিপরীতে, জাভাসিস্ট এপিআই-এর দুটি স্তর প্রদান করেঃ উৎস স্তর এবং বাইটকোড স্তর। সোর্স-লেভেল এপিআই ব্যবহার করে, প্রোগ্রামাররা জাভা বাইটকোডের নির্দিষ্টকরণের জ্ঞান ছাড়াই একটি ক্লাস ফাইল সম্পাদনা করতে পারে; পুরো এপিআই শুধুমাত্র জাভা ভাষার শব্দভাণ্ডার দিয়ে ডিজাইন করা হয়েছে। প্রোগ্রামাররা জাভা সোর্স টেক্সট আকারে সন্নিবেশিত বাইটকোড নির্দিষ্ট করতে পারে; জাভাসিস্ট এটিকে উড়ন্ত অবস্থায় সংকলন করে। অন্যদিকে, বাইটকোড-স্তরের এপিআই ব্যবহারকারীদের অন্যান্য সম্পাদকদের মতো সরাসরি একটি ক্লাস ফাইল সম্পাদনা করার অনুমতি দেয়। ব্যবহার জাভাসিস্ট নিম্নলিখিতগুলির জন্য ব্যবহার করা যেতে পারেঃ সোর্স কোড ব্যবহার করে বাইটকোড নির্দিষ্ট করার জন্য-সোর্স টেক্সটের একটি অংশ অনলাইনে সংকলন করতে পারে (যেমন, শুধুমাত্র একটি বিবৃতি) এস্পেক্ট-ওরিয়েন্টেড প্রোগ্রামিং (এওপি)-এর জন্য-একটি ক্লাসে নতুন পদ্ধতি প্রবর্তন করতে পারে এবং কলার এবং ক্যালি উভয় দিকেই পরামর্শের আগে/পরে/চারপাশে সন্নিবেশ করতে পারে। রানটাইমে প্রতিফলনের জন্য-একটি মেটা অবজেক্ট ব্যবহার করতে পারে যা বেস-লেভেল অবজেক্টগুলিতে পদ্ধতি কলগুলি নিয়ন্ত্রণ করে। রিমোট পদ্ধতির আহ্বানের জন্য-একটি ওয়েব সার্ভারে চলমান দূরবর্তী বস্তুর উপর একটি পদ্ধতি কল করতে পারে, যা জাভা আরএমআই-এর বিকল্প, যার জন্য স্টাব কম্পাইলারের প্রয়োজন হয় না যেমন অবজেক্টওয়েব এএসএম বাইট কোড ইঞ্জিনিয়ারিং লাইব্রেরি রেফারেন্স বাহ্যিক লিঙ্ক জাভা (প্রোগ্রামিং ভাষা) দেখুন।