Java 8은 함수형 프로그래밍 패러다임을 도입하여 기존의 Java와는 다른 방식으로 코드를 작성할 수 있게 되었다. 주요 기능들은 다음과 같다.
java.time
패키지 내에 포함되어 있으며, 날짜와 시간을 더 쉽게 다룰 수 있게 한다.import java.util.Arrays;
import java.util.List;
import java.util.Optional;
public class Java8Features {
public static void main(String[] args) {
List<String> names = Arrays.asList("Alice", "Bob", "Charlie");
// Lambda Expression
names.forEach(name -> System.out.println(name));
// Stream API
long count = names.stream()
.filter(name -> name.startsWith("A"))
.count();
System.out.println("Count of names starting with A: " + count);
// Optional
Optional<String> optionalName = names.stream()
.filter(name -> name.startsWith("Z"))
.findFirst();
optionalName.ifPresent(System.out::println);
}
}
Java 9는 모듈 시스템을 도입하고, 여러 API를 개선하였다.
module com.example.myapp {
requires java.base;
}
import java.util.stream.Stream;
public class Java9Features {
public static void main(String[] args) {
Stream.ofNullable("Hello, World!")
.forEach(System.out::println);
}
}
Java 10에서는 지역 변수 타입 추론이 도입되었다.
public class Java10Features {
public static void main(String[] args) {
var message = "Hello, Java 10!";
System.out.println(message);
}
}
Java 11은 여러 새로운 기능과 개선 사항을 도입하였다.
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.io.IOException;
public class Java11Features {
public static void main(String[] args) {
var client = HttpClient.newHttpClient();
var request = HttpRequest.newBuilder()
.uri(URI.create("https://api.github.com/"))
.build();
try {
var response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
} catch (IOException | InterruptedException e) {
e.printStackTrace();
}
// String API 개선
var multilineString = "Hello\nWorld\nJava 11";
multilineString.lines().forEach(System.out::println);
}
}
Java 8에서 11까지의 주요 기능들은 Java 언어의 기능을 크게 확장하고, 개발자의 생산성을 높이는 데 기여하였다. 함수형 프로그래밍 패러다임의 도입부터 HTTP/2 지원 및 String API 개선까지, 각 버전의 새로운 기능들을 잘 활용하면 더 효율적이고 간결한 코드를 작성할 수 있다.