উন্নয়নের ছয় মাস পরে, ওরাকল এর মুক্তি প্রকাশ করেছে এর নতুন সংস্করণ জাভা এসই 18 (স্ট্যান্ডার্ড সংস্করণ), যা একটি রেফারেন্স বাস্তবায়ন হিসাবে OpenJDK ওপেন সোর্স প্রকল্প ব্যবহার করে।
Java SE 18 এর এই নতুন সংস্করণে ব্যতিক্রমটি এসেছে কিছু অবহেলিত বৈশিষ্ট্য অপসারণ, সামঞ্জস্য বজায় রাখে জাভা প্ল্যাটফর্মের পুরানো সংস্করণগুলির সাথে, এবং পূর্বে লেখা বেশিরভাগ জাভা প্রকল্পগুলি নতুন সংস্করণের সাথে চালানো হলে অপরিবর্তিতভাবে কাজ করতে থাকবে।
জাভা এসই 18 এর প্রধান নতুন বৈশিষ্ট্য
Java SE 18-এর এই নতুন রিলিজে ডিফল্ট এনকোডিং হল UTF-8। জাভা API যা অক্ষর-এনকোড করা পাঠ্য ডেটা প্রক্রিয়া করে এখন সমস্ত প্ল্যাটফর্মে ডিফল্টরূপে UTF-8 ব্যবহার করবে, সিস্টেম সেটিংস এবং আঞ্চলিক সেটিংস নির্বিশেষে। পুরানো আচরণ ফিরিয়ে দিতে, যেখানে সিস্টেমের লোকেল বিবেচনা করে এনকোডিং বেছে নেওয়া হয়েছে, আপনি প্যারামিটারটি ব্যবহার করতে পারেন “-Dfile.encoding=COMPAT”।
আরেকটি পরিবর্তন যা দাঁড়িয়েছে তিনি হলেন তিনি java.lang.reflect API বাস্তবায়ন পুনরায় ডিজাইন করা হয়েছে (কোর রিফ্লেকশন), পদ্ধতি, ক্ষেত্র এবং ক্লাসের কনস্ট্রাক্টর এবং সেইসাথে ক্লাসের অভ্যন্তরীণ কাঠামোর অ্যাক্সেস সম্পর্কে তথ্য পাওয়ার জন্য ডিজাইন করা হয়েছে। এপিআই java.lang.reflect নিজেই পরিবর্তিত হয়নি, কিন্তু এখন শনাক্তকারী ব্যবহার করে প্রয়োগ করা হয়েছে মডিউল দ্বারা প্রদত্ত পদ্ধতি java.lang.invoke, বাইটকোড জেনারেটর ব্যবহার করার পরিবর্তে. পরিবর্তন একীকরণ এবং বাস্তবায়নের রক্ষণাবেক্ষণ সহজতর করার অনুমতি দেয় java.lang.reflect এবং java.lang.invoke।
এর পাশাপাশি এ কথাও উল্লেখ করা হয় ভেক্টর API-এর তৃতীয় প্রাথমিক বাস্তবায়নের প্রস্তাব করা হয়েছে, যা x86_64 এবং AArch64 প্রসেসরের ভেক্টর নির্দেশাবলী ব্যবহার করে সঞ্চালিত ভেক্টর গণনার জন্য ফাংশন প্রদান করে এবং আপনাকে একাধিক মান (SIMD) তে একই সাথে ক্রিয়াকলাপ প্রয়োগ করার অনুমতি দেয়। স্কেলার অপারেশনের স্বয়ংক্রিয় ভেক্টরাইজেশনের জন্য HotSpot JIT কম্পাইলারে প্রদত্ত ক্ষমতার বিপরীতে, নতুন API সমান্তরাল ডেটা প্রক্রিয়াকরণের জন্য আপনাকে স্পষ্টভাবে ভেক্টরাইজেশন নিয়ন্ত্রণ করতে দেয়।
এটিও হাইলাইট করা হয় একটি SPI ইন্টারফেস যোগ করা হয়েছে (পরিষেবা প্রদানকারী ইন্টারফেস) হোস্টের নাম এবং আইপি ঠিকানাগুলি সমাধান করতে, যা আপনাকে java.net.InetAddress-এ বিকল্প সমাধানকারী ব্যবহার করতে দেয় যা অপারেটিং সিস্টেম দ্বারা প্রদত্ত ড্রাইভারের সাথে আবদ্ধ নয়।
অন্যদিকে, প্রস্তাব করা হয়েছে বিদেশী ফাংশন এবং মেমরি API এর দ্বিতীয় প্রাথমিক বাস্তবায়ন, যার সাথে অ্যাপ্লিকেশনগুলি জাভা রানটাইমের বাইরে কোড এবং ডেটার সাথে ইন্টারঅ্যাক্ট করতে পারে। নতুন API নন-JVM ফাংশনগুলির দক্ষ কল করার অনুমতি দেয় y অ্যাক্সেস মেমরি যা JVM দ্বারা পরিচালিত হয় না। উদাহরণস্বরূপ, আপনি বহিরাগত ভাগ করা লাইব্রেরি থেকে ফাংশন কল করতে পারেন এবং JNI ব্যবহার না করেই প্রক্রিয়া ডেটা অ্যাক্সেস করতে পারেন।
যুক্ত হয়েছে ক প্যাটার্ন ম্যাচিং এর দ্বিতীয় পরীক্ষামূলক বাস্তবায়ন অভিব্যক্তিতে সুইচ, যা আপনাকে "কেস" ট্যাগের সঠিক মানের পরিবর্তে নমনীয় টেমপ্লেট ব্যবহার করতে দেয়, একযোগে বেশ কয়েকটি মান কভার করে, যার জন্য আগে "if...else" এক্সপ্রেশনের কষ্টকর স্ট্রিং প্রয়োজন ছিল।
প্যাকেজ অন্তর্ভুক্ত com.sun.net.httpserver, যার মধ্যে jwebserver ইউটিলিটি এবং API রয়েছে বাস্তবায়ন সহ লাইব্রেরির একটি সাধারণ http সার্ভার থেকে স্ট্যাটিক কন্টেন্ট পরিবেশন করতে (CGI এবং servlet-এর মত কন্ট্রোলার সমর্থিত নয়)। অন্তর্নির্মিত HTTP সার্ভারটি কাজের চাপের জন্য অপ্টিমাইজ করা হয় না এবং অ্যাক্সেস নিয়ন্ত্রণ বা প্রমাণীকরণকে সমর্থন করে না, কারণ এটি প্রাথমিকভাবে প্রোটোটাইপিং, ডিবাগিং এবং পরীক্ষামূলক প্রকল্পগুলির উন্নয়ন প্রক্রিয়ায় ব্যবহারের জন্য ডিজাইন করা হয়েছে।
অন্যান্য পরিবর্তন যে দাঁড়ানো:
- JavaDoc ট্যাগ সমর্থন করে "@স্নিপেট» API ডকুমেন্টেশনে কাজের উদাহরণ এবং কোড স্নিপেটগুলি এম্বেড করতে, যা বৈধকরণ সরঞ্জাম, সিনট্যাক্স হাইলাইটিং এবং IDE ইন্টিগ্রেশনের মাধ্যমে অ্যাক্সেস করা যেতে পারে।
- অপ্রচলিত এবং ভবিষ্যতে রিলিজ, সমাপ্তির প্রক্রিয়া, সেইসাথে সম্পর্কিত পদ্ধতি যেমন Object.finalize(), Enum.finalize(), Runtime.runFinalization(), এবং System.runFinalization()।
- আবর্জনা সংগ্রহকারীরা ZGC (Z Garbage Collector), SerialGC এবং ParallelGC তারা স্ট্রিং ডিডপ্লিকেশন সমর্থন করে।
জাভা এসই 18 একটি নিয়মিত সমর্থন রিলিজ হিসাবে শ্রেণীবদ্ধ করা হয়, পরবর্তী সংস্করণের আগে প্রকাশিত আপডেট সহ। দীর্ঘমেয়াদী সহায়তা (LTS) শাখাটি Java SE 17 হওয়া উচিত, যা 2029 সাল পর্যন্ত আপডেট পাবে।
এটা মনে রাখা গুরুত্বপূর্ণ যে Java 10 রিলিজ দিয়ে শুরু করে, প্রকল্পটি একটি নতুন উন্নয়ন প্রক্রিয়ায় চলে গেছে, যার অর্থ নতুন রিলিজ গঠনের জন্য একটি ছোট চক্র। নতুন কার্যকারিতা এখন একটি ক্রমাগত আপডেট করা মাস্টার শাখায় তৈরি করা হচ্ছে, যার মধ্যে ইতিমধ্যেই সম্পন্ন হওয়া পরিবর্তনগুলি অন্তর্ভুক্ত রয়েছে এবং যেগুলি থেকে নতুন রিলিজগুলিকে স্থিতিশীল করার জন্য প্রতি ছয় মাস অন্তর শাখাগুলি শাখা থেকে বেরিয়ে আসে৷
Java SE 18 পান
যারা এই নতুন রিলিজটি পরীক্ষা করতে আগ্রহী তাদের জন্য, অনুগ্রহ করে জেনে রাখুন যে বিল্ডগুলি Linux (x86_64, AArch64), Windows (x86_64), এবং macOS (x86_64, AArch64) এর জন্য প্রস্তুত এবং প্রাপ্ত করা যেতে পারে। নীচের লিঙ্ক থেকে।