Java 8 ছিল একটি মাইলফলক সংস্করণ, যা অনেক নতুন বৈশিষ্ট্য নিয়ে এসেছে। তবে, Java 8 এর পরে আসা বিভিন্ন Java সংস্করণ (যেমন Java 9, Java 10, Java 11, এবং পরবর্তী সংস্করণ) বিভিন্ন বৈশিষ্ট্য, অপ্টিমাইজেশন, এবং API আপডেট নিয়ে এসেছে। নিচে Java 8 এবং পরবর্তী কিছু সংস্করণের মধ্যে পার্থক্যগুলো বিস্তারিতভাবে আলোচনা করা হলো।
Java 8 (2014) - মাইলফলক সংস্করণ
Java 8 এর সবচেয়ে বড় বৈশিষ্ট্য ছিল ল্যাম্বডা এক্সপ্রেশন (Lambda Expressions) এবং Streams API, যা অ্যাসিঙ্ক্রোনাস প্রোগ্রামিং, ফাংশনাল প্রোগ্রামিং, এবং ডেটা প্রসেসিং-এর জন্য সহজ উপায় প্রদান করেছে।
Java 8 এর বৈশিষ্ট্যসমূহ:
Lambda Expressions:
- Java 8-এ Lambda expressions চালু হয়েছে, যা ফাংশনাল প্রোগ্রামিং সাপোর্ট প্রদান করে এবং কোডের ক্লিনলিনেস এবং পঠনযোগ্যতা উন্নত করে।
// Example of Lambda Expression List<String> list = Arrays.asList("a", "b", "c"); list.forEach(item -> System.out.println(item));Streams API:
- Streams API Java 8-এ চালু হয়েছে, যা বড় ডেটাসেটের উপর parallel বা sequential অপারেশন চালাতে সহায়তা করে।
List<String> list = Arrays.asList("a", "b", "c"); list.stream().filter(s -> s.startsWith("a")).forEach(System.out::println);Default Methods:
- ইন্টারফেসে ডিফল্ট মেথড সংযোজন করা হয়েছে, যা পূর্বে সম্ভব ছিল না। এটি রিভার্স কমপ্যাটিবিলিটি নিশ্চিত করতে সহায়তা করে।
interface MyInterface { default void defaultMethod() { System.out.println("Default Method"); } }New Date and Time API:
- New Date and Time API (java.time package) চালু হয়েছে, যা আগের
java.util.Dateএবংjava.util.Calendarএর তুলনায় অনেক উন্নত এবং টাইপ সেফ।
LocalDate date = LocalDate.now(); System.out.println(date);- New Date and Time API (java.time package) চালু হয়েছে, যা আগের
Optional Class:
- Optional ক্লাস, যা
nullচেকের ঝামেলা এড়াতে সাহায্য করে এবং কোডের স্থিতিশীলতা বৃদ্ধি করে।
Optional<String> name = Optional.ofNullable("John"); name.ifPresent(System.out::println); // Output: John- Optional ক্লাস, যা
Java 9 (2017) - মডুলার সিস্টেম এবং Jigsaw
Java 9 ছিল modular system বা Jigsaw project-এর জন্য পরিচিত। এটি Java অ্যাপ্লিকেশনকে ছোট ছোট মডিউলে ভাগ করার সুবিধা প্রদান করে, যা বড় অ্যাপ্লিকেশনগুলোর রক্ষণাবেক্ষণ ও পারফরম্যান্স উন্নত করতে সহায়তা করে।
Java 9 এর বৈশিষ্ট্যসমূহ:
Module System (Jigsaw):
- Jigsaw project চালু হওয়ায় Java 9 এ modules ব্যবহার করা সম্ভব হয়েছে। এটি কোডের বিভাজন এবং ব্যবস্থাপনা উন্নত করে।
module my.module { exports com.example; }JShell (Read-Eval-Print Loop):
- JShell একটি ইন্টারঅ্যাকটিভ শেল প্রদান করে, যা Java কোড পরীক্ষা করার জন্য উপযোগী।
jshell> int sum = 10 + 20; jshell> System.out.println(sum); // Output: 30Private Methods in Interfaces:
- Private methods in interfaces চালু হয়েছে, যা ডিফল্ট মেথডে সহায়তা করে এবং কোডের পুনঃব্যবহারযোগ্যতা বৃদ্ধি করে।
interface MyInterface { private void privateMethod() { System.out.println("Private method"); } }
Java 10 (2018) - Local-Variable Type Inference
Java 10 ছিল টাইপ ইনফারেন্সের উপর ফোকাস করা একটি সংস্করণ। এতে var কিওয়ার্ড চালু করা হয়েছে, যা কম্পাইলারকে টাইপ অনুমান করতে সাহায্য করে, ফলে কোডটি অনেক বেশি পরিষ্কার এবং ছোট হয়।
Java 10 এর বৈশিষ্ট্যসমূহ:
Local-Variable Type Inference (
var):varকিওয়ার্ড চালু হয়েছে, যা স্থানীয় ভেরিয়েবল ডিক্লেয়ারেশনে টাইপ নির্ধারণ করতে কম্পাইলারকে দায়িত্ব দেয়।
var list = new ArrayList<String>(); // Type inferred as ArrayList<String>- Garbage Collector Improvements:
- G1 Garbage Collector এর আরো উন্নতি করা হয়েছে এবং Application Class-Data Sharing (AppCDS) সমর্থিত হয়েছে, যা অ্যাপ্লিকেশনের পারফরম্যান্স উন্নত করতে সাহায্য করে।
Java 11 (2018) - Long-Term Support (LTS) Version
Java 11 একটি LTS (Long-Term Support) সংস্করণ, যা পরবর্তী 8 বছর ধরে সমর্থন পাবে। এটি Java 8 এর পর একটি গুরুত্বপূর্ণ সংস্করণ এবং এটি অনেক নতুন ফিচার ও অপ্টিমাইজেশন নিয়ে এসেছে।
Java 11 এর বৈশিষ্ট্যসমূহ:
New HTTP Client API:
- HTTP Client API যোগ করা হয়েছে যা HTTP/2 সমর্থন করে এবং ওয়েব সার্ভিসের সাথে ইন্টারঅ্যাকশন সহজ করে।
HttpClient client = HttpClient.newHttpClient();- Deprecation and Removal of Features:
- Java 11-এ অনেক পুরোনো এবং অপ্রয়োজনীয় API সরিয়ে ফেলা হয়েছে, যেমন Java EE modules এবং CORBA।
String Methods:
- নতুন স্ট্রিং মেথড যেমন
isBlank(),lines(),strip()এবংstripLeading(),stripTrailing()যোগ করা হয়েছে।
String str = " Hello Java "; System.out.println(str.strip()); // Output: Hello Java- নতুন স্ট্রিং মেথড যেমন
- Lambda Parameter Type Inference:
- Lambda parameter type inference এর মাধ্যমে, ল্যাম্বডা এক্সপ্রেশনগুলিতে টাইপ নির্ধারণের সুবিধা আরও সহজ হয়েছে।
Java 12 এবং পরবর্তী সংস্করণ (2019 - Present)
Java 12 এবং পরবর্তী সংস্করণে বিভিন্ন ছোটো ছোটো অপ্টিমাইজেশন এবং বৈশিষ্ট্য এসেছে, যা উন্নত পারফরম্যান্স এবং নতুন API প্রদান করেছে।
Java 12 এবং পরবর্তী সংস্করণগুলির বৈশিষ্ট্যসমূহ:
- JEP 189 (Shenandoah GC): Shenandoah Garbage Collector চালু হয়েছে, যা কম লেটেন্সি এবং দ্রুত গার্বেজ কালেকশন নিশ্চিত করে।
JEP 355 (Text Blocks): Text Blocks চালু হয়েছে যা মাল্টি-লাইন স্ট্রিং লেখার জন্য সহজ এবং পরিষ্কার সিনট্যাক্স প্রদান করে।
String textBlock = """ Hello, This is a multi-line text block. Java 13 allows this syntax! """;- JEP 376 (ZGC): Z Garbage Collector চালু হয়েছে, যা অনেক কম লেটেন্সি নিয়ে কাজ করে এবং বড় মেমরি ব্যবস্থাপনায় পারফরম্যান্স উন্নত করে।
সারসংক্ষেপ
- Java 8: ফাংশনাল প্রোগ্রামিং, Lambda expressions, Streams API, Default methods, নতুন Date/Time API এবং Optional class।
- Java 9: Module System (Jigsaw), JShell, Private methods in interfaces।
- Java 10: Local-variable type inference (
var), Improved garbage collection. - Java 11: Long-Term Support (LTS), HTTP Client API, Deprecation and removal of features.
- Java 12 এবং পরবর্তী সংস্করণ: JEP 189, Text Blocks, ZGC, এবং নতুন পারফরম্যান্স অপ্টিমাইজেশন।
Java 8 থেকে শুরু করে পরবর্তী সংস্করণগুলিতে নতুন ফিচার এবং অপ্টিমাইজেশনগুলো প্রোগ্রামিংয়ের স্টাইল, পারফরম্যান্স, এবং ডেভেলপমেন্টের ক্ষেত্রে একটি বড় পরিবর্তন নিয়ে এসেছে।
Read more