Java 8-এ অনেক গুরুত্বপূর্ণ নতুন ফিচার এবং API অন্তর্ভুক্ত করা হয়েছে যা Java প্রোগ্রামিং ভাষাকে আরও শক্তিশালী, কার্যকরী এবং সহজতর করেছে। এখানে Java 8 এর কিছু গুরুত্বপূর্ণ ফিচার এবং তাদের বাস্তব উদাহরণ দেওয়া হলো:
1. Lambda Expressions
Lambda Expressions Java 8 এর অন্যতম গুরুত্বপূর্ণ বৈশিষ্ট্য, যা আপনাকে ছোট, সংক্ষিপ্ত এবং ফাংশনাল স্টাইল কোড লেখার সুযোগ দেয়। এটি মূলত Functional Interfaces এর মাধ্যমে কাজ করে, যা আপনাকে অ্যানোনিমাস ফাংশন বা anonymous methods তৈরি করতে সাহায্য করে।
উদাহরণ:
import java.util.Arrays;
import java.util.List;
public class LambdaExample {
public static void main(String[] args) {
List<String> names = Arrays.asList("John", "Jane", "Mike");
// Lambda expression to print each name
names.forEach(name -> System.out.println(name));
}
}এখানে, forEach() মেথডে একটি ল্যাম্বডা এক্সপ্রেশন ব্যবহার করা হয়েছে যা প্রতিটি নাম প্রিন্ট করে।
2. Functional Interfaces
Java 8 এ Functional Interfaces ধারণা আনা হয়েছে, যা এমন ইন্টারফেস যেখানে শুধুমাত্র একটি একক অ্যাবস্ট্রাক্ট মেথড থাকে। এই ইন্টারফেসগুলি ল্যাম্বডা এক্সপ্রেশন এবং method references এর মাধ্যমে বাস্তবায়িত হতে পারে।
উদাহরণ:
@FunctionalInterface
interface MyFunction {
void greet(String name); // Single abstract method
}
public class FunctionalInterfaceExample {
public static void main(String[] args) {
MyFunction myFunction = (name) -> System.out.println("Hello, " + name);
myFunction.greet("John");
}
}এখানে, MyFunction একটি functional interface যা lambda expression দ্বারা প্রয়োগ করা হয়েছে।
3. Streams API
Java 8-এ Streams API যোগ করা হয়েছে, যা কালেকশন ডেটাকে functional style এ প্রসেস করার একটি আধুনিক পদ্ধতি। এর মাধ্যমে আপনি ডেটার উপর বিভিন্ন অপারেশন (যেমন ফিল্টারিং, ম্যাপিং, রিডিউসিং) করতে পারেন।
উদাহরণ:
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
public class StreamsExample {
public static void main(String[] args) {
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6);
// Using Streams to filter and sum even numbers
int sum = numbers.stream()
.filter(n -> n % 2 == 0) // Filter even numbers
.mapToInt(Integer::intValue) // Convert to int
.sum(); // Sum the values
System.out.println("Sum of even numbers: " + sum); // Output: 12
}
}এখানে, stream() মেথডের মাধ্যমে স্ট্রিম তৈরি করা হয়েছে, এরপর filter() এবং mapToInt() ব্যবহার করে সংখ্যাগুলো প্রসেস করা হয়েছে।
4. Method References
Method References Java 8 এর একটি নতুন ফিচার যা কোডে কিছু পুনরাবৃত্তি কমিয়ে আনে। এটি ল্যাম্বডা এক্সপ্রেশনকে আরও সংক্ষিপ্ত করে।
উদাহরণ:
import java.util.Arrays;
import java.util.List;
public class MethodReferenceExample {
public static void main(String[] args) {
List<String> names = Arrays.asList("John", "Jane", "Mike");
// Method Reference to print each name
names.forEach(System.out::println); // Equivalent to: name -> System.out.println(name)
}
}এখানে, forEach() মেথডে method reference ব্যবহার করা হয়েছে, যা System.out.println(name) এর মতো কাজ করে।
5. Optional Class
Java 8-এ Optional ক্লাস যোগ করা হয়েছে, যা null মান থেকে সুরক্ষা প্রদান করে এবং NullPointerException এর সম্ভাবনা কমায়। এটি মূলত এমন পরিস্থিতির জন্য ব্যবহার করা হয় যেখানে কোনো ভ্যালু থাকতে পারে বা না থাকতে পারে।
উদাহরণ:
import java.util.Optional;
public class OptionalExample {
public static void main(String[] args) {
Optional<String> name = Optional.ofNullable("John");
// If name is present, print it
name.ifPresent(n -> System.out.println(n)); // Output: John
// If name is not present, print a default value
Optional<String> emptyName = Optional.ofNullable(null);
System.out.println(emptyName.orElse("Default Name")); // Output: Default Name
}
}এখানে, Optional ব্যবহার করে null চেক করা হয়েছে, যাতে কোড সেফ এবং পরিষ্কার হয়।
6. Default and Static Methods in Interfaces
Java 8-এ interfaces এ default methods এবং static methods সমর্থন করা হয়েছে। Default methods ইন্টারফেসে মেথডের একটি ডিফল্ট বাস্তবায়ন প্রদান করে, যা ক্লাসে ঐ মেথডটি অস্থিরভাবে বাস্তবায়ন না করেও ব্যবহার করা যায়।
উদাহরণ:
interface MyInterface {
default void defaultMethod() {
System.out.println("This is a default method");
}
static void staticMethod() {
System.out.println("This is a static method");
}
}
public class DefaultMethodExample implements MyInterface {
public static void main(String[] args) {
MyInterface myInterface = new DefaultMethodExample();
myInterface.defaultMethod(); // Output: This is a default method
// Calling static method
MyInterface.staticMethod(); // Output: This is a static method
}
}এখানে, defaultMethod() এবং staticMethod() ইন্টারফেসে ব্যবহৃত হয়েছে।
7. Nashorn JavaScript Engine
Java 8 এ Nashorn একটি নতুন JavaScript engine হিসেবে যোগ করা হয়েছে যা Java Virtual Machine (JVM) এর মাধ্যমে JavaScript কোড চালানোর সুবিধা প্রদান করে। এটি Rhino এর একটি উন্নত সংস্করণ এবং Java-তে JavaScript এক্সিকিউট করার জন্য দ্রুততর।
উদাহরণ:
import javax.script.*;
public class NashornExample {
public static void main(String[] args) throws ScriptException {
ScriptEngine engine = new ScriptEngineManager().getEngineByName("nashorn");
// Execute JavaScript code
engine.eval("print('Hello from Nashorn!')");
}
}এখানে, Nashorn engine ব্যবহার করে JavaScript কোড Java থেকে এক্সিকিউট করা হয়েছে।
8. Streams API – Parallel Streams
Java 8-এ parallel streams ব্যবহার করে আপনি মাল্টি-কোর প্রসেসর ব্যবহার করে ডেটা প্রসেসিং করতে পারেন। এটি স্ট্রিমে প্যারালাল অপারেশন করতে সহায়ক।
উদাহরণ:
import java.util.Arrays;
import java.util.List;
public class ParallelStreamExample {
public static void main(String[] args) {
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
// Parallel Stream for summing numbers
int sum = numbers.parallelStream()
.mapToInt(Integer::intValue)
.sum();
System.out.println("Sum: " + sum); // Output: Sum: 55
}
}এখানে, parallelStream() ব্যবহার করে সংখ্যাগুলির সমষ্টি parallel অপারেশন দ্বারা করা হয়েছে।
সারসংক্ষেপ
Java 8-এ অনেক নতুন বৈশিষ্ট্য এবং ফিচার যুক্ত করা হয়েছে যা কোড লেখা এবং ব্যবস্থাপনা অনেক সহজ এবং দ্রুত করেছে। কিছু গুরুত্বপূর্ণ ফিচার:
- Lambda Expressions – ছোট এবং কার্যকরী কোড লেখার জন্য।
- Functional Interfaces – ফাংশনাল প্রোগ্রামিং সমর্থন।
- Streams API – ডেটা প্রক্রিয়াকরণের আধুনিক উপায়।
- Method References – কোডে পুনরাবৃত্তি কমানোর উপায়।
- Optional –
nullভ্যালু থেকে সুরক্ষা। - Default and Static Methods in Interfaces – ইন্টারফেসে ডিফল্ট এবং স্ট্যাটিক মেথড।
- Nashorn JavaScript Engine – Java-তে JavaScript এক্সিকিউট করার জন্য।
- Parallel Streams – মাল্টি-কোর প্রসেসিং এবং প্যারালাল অপারেশন।
এই নতুন ফিচারগুলির মাধ্যমে Java 8 একটি আধুনিক এবং শক্তিশালী প্রোগ্রামিং ভাষায় পরিণত হয়েছে।
Read more