[Java] Java 11 특징
글 작성자: SeoArc
Java SE 11 (LTS)
2018년 9월에 공개했으며 이클립스 재단으로 넘어간 Java EE가 JDK에서 삭제되고, JavaFX도 JDK에서 분리되어 별도의 모듈로 제공된다.
대표적인 변경 사항은 다음과 같다.
String 클래스에 새로운 메서드 추가
String s = "";
s.strip(); // 문자열 앞, 뒤 공백 제거
s.stripLeading(); // 문자열 앞 공백 제거
s.stripTrailing(); // 문자열 뒤 공백 제거
s.isBlank(); // 문자열이 비어있거나 공백만 포함되어 있을 경우 true 반환 s.trim().isEmpty()와 결과가 동일
s.repeat(10); // 입력한 수만큼 문자열을 반복
컬렉션 인터페이스에 toArray() 메서드 추가
Collection에서 toArray() 메서드를 이용해 원하는 타입의 배열로 반환할 수 있다.
List<String> list = Arrays.asList("1", "2", "3");
String[] array = list.toArray(String[]::new);
System.out.println(Arrays.toString(array));
Predicate 인터페이스에 not() 메서드 추가
Predicate에 부정을 나타내는 not 메서드가 추가되었다.
List<String> list = Arrays.asList("1", " ", "2", " ", "3");
List<String> notBlanks = list.stream()
.filter(Predicate.not(String::isBlank))
.collect(Collectors.toList());
System.out.println(notBlanks);
람다 파라미터에 대한 지역 변수 문법
원래 var는 초기값이 있는 지역변수로만 선언이 가능했지만, 람다식에서 var을 사용할 수 있게 되었다.
List<String> list = Arrays.asList("a", "b", "c");
List<String> notBlanks = list.stream()
.map((var x) -> x.toUpperCase())
.collect(Collectors.toList());
System.out.println(notBlanks);
자바 파일 실행
javac를 통해 컴파일 하지 않고도, 바로 java 파일을 실행할 수 있게 되었다.
// java 11 이전
$ javac Test.java
$ java Test
Hello World!
// java 11 이후
$ java HelloWorld.java
Hello World!
그 외 변경 사항은 다음과 같다.
- 엡실론 가비지 컬렉터
- HTTP 클라이언트 표준화
Java SE 11의 가장 큰 변화는 라이선스 부분이다.
이 버전 부터 Oracle JDK의 독점 기능이 오픈소스 버전인 OpenJDK에 이식된다. 즉, Oracle JDK와 Open JDK가 완전히 동일해진다는 뜻이다.
또 Oracle JDK는 구독형 유료 모델로 전환된다. 2019년 1월부터 오라클이 제공하는 모든 Oracle JDK는 유료화되며, 구독권을 구입하지 않으면 Oracle JDK에 접근 자체가 금지된다. 이 대안으로 다른 서드파티 JDK가 대안으로 떠오르고 있는데, 대표적으로 Zulu JDK, AdoptOpenJDK가 있다.
'Language > Java' 카테고리의 다른 글
[Java] hashCode() (1) | 2023.07.02 |
---|---|
[Java] Java 버전 별 특징 (2) | 2023.04.14 |
[Java] Java 9 특징 (0) | 2023.04.13 |
[Java] Java 8 특징 (0) | 2023.04.13 |
[Java] 숫자형 스트림 (0) | 2023.04.11 |
댓글
이 글 공유하기
다른 글
-
[Java] hashCode()
[Java] hashCode()
2023.07.02 -
[Java] Java 버전 별 특징
[Java] Java 버전 별 특징
2023.04.14 -
[Java] Java 9 특징
[Java] Java 9 특징
2023.04.13 -
[Java] Java 8 특징
[Java] Java 8 특징
2023.04.13