জাভা ৯ থেকে ভার্সনিং সেম্যান্টিক ভার্সনিং-এর সাথে কনসিস্টেন্ট হতে পারে। ভার্সন নম্বর হতে পারে একটি নন-এম্পটি সিকোয়েন্স অফ স্ট্রিংস যেগুলো ডটস দিয়ে সেপারেটেড। এতে তিনটি মেজর পার্ট রয়েছে: মেজর ভার্সন নম্বর, মাইনর ভার্সন নম্বর, এবং সিকিউরিটি। নতুন ভার্সনিং স্কিম ডকুমেন্টেড আছে Runtime.Version ক্লাসে এবং ভার্সন ইনফরমেশন সেটি থেকে অ্যাক্সেস করা যায়।
ভার্সন নম্বর ফরম্যাট
$MAJOR.$MINOR.$SECURITY(.$otherpart)?
- $MAJOR হলো মেজর ভার্সন নম্বর এবং যখন একটি মেজর রিলিজ হয়ে যায় যা সাধারণত প্ল্যাটফর্ম স্পেসিফিকেশন পরিবর্তন করে তখন ইনক্রিমেন্ট হয়। JDK 9-এর জন্য এই ভ্যালু ৯।
- $MINOR হলো মাইনর ভার্সন নম্বর এবং বাগ ফিক্স ও স্ট্যান্ডার্ড API-এ এনহ্যান্সমেন্ট ধারণকারী রিলিজের জন্য ইনক্রিমেন্ট হয়।
- $SECURITY হলো সিকিউরিটি লেভেল এবং ক্রিটিক্যাল সিকিউরিটি ফিক্স ধারণকারী রিলিজের জন্য ইনক্রিমেন্ট হয়। এই ভার্সন রিসেট হয় না শূন্যে যখন মাইনর ভার্সন নম্বর ইনক্রিমেন্ট হয়।
- $otherpart এক বা একাধিক ভার্সন ধারণ করে যা JVM প্রোভাইডাররা ব্যবহার করে ছোট সংখ্যক নন-সিকিউরিটি ফিক্সসহ প্যাচ ইন্ডিকেট করতে।
ভার্সন স্ট্রিং হতে পারে ভার্সন নম্বর কিছু অতিরিক্ত ইনফরমেশনসহ যেমন অর্লি-অ্যাক্সেস রিলিজ আইডেন্টিফায়ার বা বিল্ড নম্বর:
$VNUM(-$PRE)?+$BUILD(-$OPT)? $VNUM-$PRE(-$OPT)? $VNUM(+-$OPT)?
- $PRE হলো প্রি-রিলিজ আইডেন্টিফায়ার।
- $BUILD হলো বিল্ড নম্বর।
- $OPT হলো অপশনাল ইনফরমেশন যেমন টাইমস্ট্যাম্প।
উদাহরণ
public class VersionSchemeTest {
public static void main(String args[]) {
System.out.println(Runtime.version().toString()); // String representation of the version
System.out.println(Runtime.version().major()); // major version number
System.out.println(Runtime.version().minor()); // minor version number
System.out.println(Runtime.version().security()); // security version number
}
}
আউটপুট
9.0.4+11 9 0 4