-
Java version 별 특징☕️ java 2022. 10. 9. 20:01
Java 8
- Lambda
- stream
- interface default method
- Optional
- new Date, Time API
Lambda
Java 8 이전 익명 클래스의 사용을 람다를 이용해 더 간결하고 직관적으로 구현을 할 수 있게 되었다.
람다식 (Lambda Expression)
- 함수를 하나의 식(expression)으로 표현한 것이다.
- 함수를 람다식으로 표현을 하면 메소드 이름이 필요 없어, 람다식은 익명 함수의 한 종류라고 볼 수 있다.
- 불필요한 코드를 줄이고, 가독성을 높였다.
- 함수형 인터페이스의 인스턴스를 생성하여 함수를 변수처럼 선언한다.
Runnable runnable = () -> System.out.println("Hello, World!");
Stream
Java 8은 stream API를 통해 컬렉션을 처리하면서 발생하는 모호함과 반복적인 코드 문제, 멀티코어 활용 어려움이라는 문제점을 모두 해결했다.
List<String> list = Arrays.asList(*"beom"*, *"sic"*, *"beomsic"*, *"bs"*, *"kbs"*); list.stream() .filter(name -> name.startsWith(*"f"*)) .map(String::toUpperCase) .sorted() .forEach(System.out::println);
Java 9
- try-with-resource 추가
- 인터페이스 private 추가
Java 10
- var 키워드 도입
- 병렬 처리 GC 도입으로 성능 향상
- JVM 힙 영역을 시스템 메모리가 아닌 다른 종류의 메모리에도 할당 가능
var 예약어
var 예약어를 사용하면 중복을 줄임으로 코드를 간결하게 만들 수 있다.
- var 키워드는 지역변수 타입 추론을 허용한다.
- java 9 전까지는 지역변수의 타입을 명시했어야 했다.
- 이 기능은 초기화가 되는 지역변수에만 사용할 수 있다.
JAVA 11
- Oracle JDK 와 OpenJDK 통합
- lambda 지역변수 사용법 변경
lambda 표현식에 var 사용 가능
Java 14
- instanceof 패턴 매칭
- record (data object) 선언 기능 추가
record
Java로 많은 상용구를 작성하는 고통을 완화
// 이전 final class Point { public final int x; public final int y; public Point(int x, int y) { this.x = x; this.y = y; } } // record 사용 record Point(int x, int y) {}
참고 자료
https://www.marcobehler.com/guides/a-guide-to-java-versions-and-features
https://www.oracle.com/java/technologies/javase/8-whats-new.html
https://www.youtube.com/watch?v=LcIyHlE2NlA&ab_channel=우아한Tech
'☕️ java' 카테고리의 다른 글
equals / hashCode (0) 2022.12.07 CheckedException 과 UncheckedException (0) 2022.10.10 가비지 컬렉션(GC) ❓ (0) 2022.10.10 HttpURLConnection (0) 2022.10.07 Java JSON 파싱 (0) 2022.10.07