Java 8 একটি বৃহৎ সংস্করণ যা অনেক নতুন ফিচার এবং উন্নতি নিয়ে এসেছে। এটি Java প্ল্যাটফর্মকে আরও আধুনিক এবং শক্তিশালী করে তোলে। এখানে Java 8 এর সবচেয়ে গুরুত্বপূর্ণ নতুন ফিচারসমূহ আলোচনা করা হলো:
১. ল্যাম্বডা এক্সপ্রেশন (Lambda Expressions)
ল্যাম্বডা এক্সপ্রেশন Java 8 এ ফাংশনাল প্রোগ্রামিং ধারণাকে সমর্থন করে এবং কোড লেখার প্রক্রিয়া সহজ করে তোলে। এটি এক লাইনে ফাংশন বা কোড ব্লক লিখতে সাহায্য করে।
উদাহরণ:
List<String> names = Arrays.asList("John", "Jane", "Mike");
names.forEach(name -> System.out.println(name));এটি কোডের সঙ্কলন কমিয়ে এবং আরও পরিষ্কার করে।
২. স্ট্রিম API (Stream API)
স্ট্রিম API ডেটা প্রক্রিয়াকরণে একটি নতুন দৃষ্টিকোণ প্রদান করে। এটি ডেটা সংগ্রহের (যেমন List, Set) উপর ফাংশনাল অপারেশন সঞ্চালন করার সুবিধা দেয়, যেমন ফিল্টার, ম্যাপ, রিডুস ইত্যাদি।
উদাহরণ:
List<String> names = Arrays.asList("John", "Jane", "Mike", "Mia");
names.stream().filter(name -> name.startsWith("J")).forEach(System.out::println);এটি ডেটার ওপর কার্যকরী অপারেশন পরিচালনা করতে সাহায্য করে এবং কোডের পরিষ্কারতা বাড়ায়।
৩. নতুন Date and Time API (java.time package)
Java 8 এ নতুন java.time প্যাকেজ যোগ করা হয়েছে যা আগের java.util.Date এবং java.util.Calendar এর তুলনায় অনেক উন্নত এবং পরিষ্কার পদ্ধতি প্রদান করে। এটি সময় এবং তারিখের সাথে কাজ করতে আরও শক্তিশালী সমাধান প্রদান করে।
উদাহরণ:
LocalDateTime now = LocalDateTime.now();
System.out.println(now);এটি সময় ও তারিখের সাথে আরও সহজ এবং নির্ভরযোগ্য কাজ করতে সহায়ক।
৪. Optional ক্লাস (Optional Class)
Java 8 এ Optional ক্লাস যোগ করা হয়েছে, যা null চেকের সমস্যা সমাধান করে এবং NullPointerException (NPE) থেকে রক্ষা করে। এটি একটি মান উপস্থিত আছে কিনা তা চেক করতে ব্যবহৃত হয়।
উদাহরণ:
Optional<String> name = Optional.ofNullable("John");
name.ifPresent(System.out::println);এটি কোডে null চেকের প্রয়োজনীয়তা কমিয়ে দেয় এবং কোডকে আরও নিরাপদ করে।
৫. ডিফল্ট মেথড (Default Methods)
Java 8 এ ইন্টারফেসে ডিফল্ট মেথড যোগ করা হয়েছে, যা ইন্টারফেসের মধ্যে বাস্তবায়ন সরবরাহ করতে সক্ষম। এটি ক্লাসগুলিকে বাধ্য না করে নতুন মেথডের বাস্তবায়ন যোগ করতে এবং কোডের পুনঃব্যবহারযোগ্যতা বাড়ায়।
উদাহরণ:
interface MyInterface {
default void sayHello() {
System.out.println("Hello");
}
}এটি পুরনো ক্লাসে কোন পরিবর্তন ছাড়াই নতুন ফিচার যুক্ত করতে সাহায্য করে।
৬. নতুন নূতন মেথডগুলির সংযোজন (New Methods in Interfaces)
Java 8 এ ইন্টারফেসের মধ্যে স্ট্যাটিক মেথড এবং ডিফল্ট মেথড যোগ করার মাধ্যমে কোডের গঠন আরও শক্তিশালী হয়েছে। এটি ক্লাসগুলিকে ইন্টারফেসের মধ্যে নতুন বৈশিষ্ট্য যোগ করার অনুমতি দেয়।
৭. নতুন ন্যাশনাল ফাংশনাল ইন্টারফেস (Functional Interfaces)
Java 8 এ নতুন ফাংশনাল ইন্টারফেস java.util.function প্যাকেজের অন্তর্ভুক্ত করা হয়েছে, যেমন Predicate, Function, Consumer, এবং Supplier। এগুলি ফাংশনাল প্রোগ্রামিংয়ের জন্য সাহায্যকারী সরঞ্জাম।
৮. নতুন ন্যাশনাল ফাংশনাল ইন্টারফেস (Method References)
Java 8 এ মেথড রেফারেন্স (Method References) বৈশিষ্ট্যটি যুক্ত করা হয়েছে যা কোডের পুনরাবৃত্তি কমায়। এটি :: অপারেটর ব্যবহার করে মেথডের নামকে রেফারেন্স করে।
উদাহরণ:
names.forEach(System.out::println);৯. নতুন Collectors API
Java 8 এ নতুন Collectors API যুক্ত করা হয়েছে, যা স্ট্রিমের মাধ্যমে ডেটা সংগ্রহ করতে সহায়ক। এটি বিশেষভাবে স্ট্রিম ডেটাকে বিভিন্ন ফর্ম্যাটে সংগ্রহ করার জন্য ব্যবহৃত হয়।
উদাহরণ:
List<String> names = Arrays.asList("John", "Jane", "Mike");
Map<Integer, List<String>> groupedByLength = names.stream()
.collect(Collectors.groupingBy(String::length));সারসংক্ষেপ
Java 8 এর নতুন ফিচারগুলো Java প্ল্যাটফর্মের সক্ষমতা এবং শক্তি আরও বৃদ্ধি করেছে। ল্যাম্বডা এক্সপ্রেশন, স্ট্রিম API, Optional ক্লাস, এবং নতুন Date/Time API এর মতো বৈশিষ্ট্যগুলি কোডিং প্রক্রিয়া সহজ এবং আরো কার্যকরী করেছে। এগুলো Java ডেভেলপারদের ফাংশনাল প্রোগ্রামিং ধারণা ব্যবহার করতে সাহায্য করে, কোড লেখার প্রক্রিয়া সহজ এবং ক্লিন করে এবং কোডের গুণগত মান উন্নত করেছে।
Read more