Java는 썬 마이크로 시스템즈에서 1995년에 개발한 객체지향 언어이다. 오랜 시간 동안 많은 개발자들에게 사랑받아 왔으며 많은 진화를 거쳤다.
현재는 Java 22 버전까지 있는것으로 알고 있다. 그 중에서 가장 많이 사용되는 버전은 8, 11, 17이다.
이유는 LTS, Long term support의 약자로 장기간 동안 지원을 해주도록 만들었기 때문이다. 시스템을 하나 구축했다면 보통 오랜기간 동안 유지보수 할 것임으로 안정적이게 LTS 버전을 이용하는 경우가 많다.
처음 Java를 공부할 때는 람다문법을 사용하기 위해 8을 공부했고 이전 회사에서는 11을 사용했으며 지금은 17을 사용해보고 있다.
이 LTS 버전들의 특징에 대해서 간단히 정리해보았다.
람다 표현식
(int a, int b) -> a + b;
스트림 API
List<String> names = Arrays.asList("John", "Jane", "Tom");
names.stream().filter(s -> s.startsWith("J")).collect(Collectors.toList());
인터페이스 디폴트 메소드
interface MyInterface {
default void defaultMethod() {
System.out.println("This is a default method");
}
}
Optional
Optional<String> optional = Optional.ofNullable("Hello");
optional.ifPresent(System.out::println);
var 키워드
var list = List.of("Java", "Kotlin", "Scala");
HTTP Client API
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://example.com"))
.build();
String 관련 메소드
ZGC
패턴 매칭
if (obj instanceof String s) {
System.out.println(s.toUpperCase());
}
sealed class
public abstract sealed class Shape
permits Circle, Square {
}
Switch 표현식 개선
int numLetters = switch (day) {
case MONDAY, FRIDAY, SUNDAY -> 6;
case TUESDAY -> 7;
default -> throw new IllegalArgumentException("Invalid day: " + day);
};
Record class