Jigsaw প্রজেক্ট-এর প্রাথমিক উদ্দেশ্য হলো মডুলারিটি কনসেপ্ট প্রবর্তন করা জাভা ৯-এ মডিউল তৈরি করার জন্য এবং তারপর একটাই JDK-তে প্রয়োগ করা।
মডুলারিটি (Jigsaw)-এর সুবিধাগুলো
- স্ট্রং এনক্যাপসুলেশন (Strong Encapsulation): মডিউলগুলো শুধু সেসব পার্ট অ্যাক্সেস করতে পারে যা ব্যবহার করার জন্য উপলব্ধ। যদি প্যাকেজ এক্সপ্লিসিটলি module-info.java ফাইলে এক্সপোর্ট না করা থাকে, প্যাকেজের পাবলিক ক্লাসগুলো পাবলিক হতে পারবে না।
- ক্লিয়ার ডিপেন্ডেন্সি (Clear Dependencies): একটি মডিউল অবশ্যই ডিক্লেয়ার করবে অন্য মডিউলগুলো সম্পর্কে যেগুলো ব্যবহৃত হয় requires ক্লজ দিয়ে। মডিউলগুলো কম্বাইন করা হয় একটি ছোট রানটাইম তৈরি করতে যা তুলনামূলকভাবে ছোট কম্পিউটিং ডিভাইসেও সহজে স্কেল করা যায়।
- রিলায়েবল (Reliable): রান-টাইম এরর এলিমিনেশন পর অ্যাপ্লিকেশন আরও রিলায়েবল হয়। উদাহরণস্বরূপ, আমরা লক্ষ্য করি আমাদের অ্যাপ্লিকেশন রানটাইমে ফেইল করে মিসিং ক্লাসের কারণে যা ফলাফল দেয় ClassNotFoundException।
Jigsaw প্রজেক্টের অংশবিশেষVarious JEPs (JDK Enhancement Proposal)
JEP 200 – Modular JDK: Java Platform Module System (JPMS) ব্যবহার করে JDK কে মডিউলের সেটে মডুলারাইজ করে যা বিল্ড-টাইম, কম্পাইল-টাইম বা রানটাইমে কম্বাইন হয়।
JEP 201 – Modular Source Code: JDK-এর সোর্স কোড মডিউলে মডুলারাইজ করে এবং বিল্ড টুলস আপগ্রেড করে মডিউল কম্পাইল করার জন্য।
JEP 220 – Modular Runtime Images: JRE এবং JDK রানটাইম ইমেজ রিস্ট্রাকচার করে মডিউল অকমোডেট করার জন্য সিকিউরিটি, পারফরম্যান্স, এবং মেইনটেইনেবিলিটি ইমপ্রুভ করার জন্য।
JEP 260 – Encapsulate Most Internal APIs: অধিকাংশ ইন্টারনাল API সরাসরি অ্যাক্সেস বা রিফ্লেকশন থ্রু অ্যাক্সেস করতে পারমিট করে। ইন্টারনাল API অ্যাক্সেস করা যা চেঞ্জ হতে বাউন্ড, সেটা রিস্কি। এটি প্রיברেন্ট করার জন্য, মডিউলে কম্প্রেস করা হয়েছে এবং শুধু সেসব ইন্টারনাল API ব্যবহার করতে পারবে।
JEP 261 – Module System: JVM, জাভা প্রোগ্রামিং ল্যাঙ্গুয়েজ, এবং অন্যান্য স্ট্যান্ডার্ড API চেঞ্জ করে মডিউল সিস্টেম জাভা স্পেসিফিকেশন ইমপ্লিমেন্ট করার জন্য দায়িত্ববাহী।
JEP 282 - Jlink, the Java Linker: মডিউল এবং তাদের ডিপেন্ডেন্সি ছোট রানটাইমে প্যাক করার অনুমতি দেয়।