Java12에 대한 모든 것 – 새로운 기능, 보안 및 스위치 표현식 설명(예시)

게시 됨: 2019-04-07

Java 12 - 모든 새로운 기능 - Crunchify의 세부 정보

19th March 2019 Java12가 릴리스되었습니다. 우리가 알고 있는 바와 같이 Java12 는 빠른 릴리스의 일부였으며 Java11 릴리스 후 6개월 만에 릴리스되었습니다.

이 튜토리얼에서는 Java12에 대한 모든 변경 사항과 새로운 기능을 살펴봅니다.

개인적으로 저는 모든 개발을 위해 Java12로 전환했지만 프로덕션 주기에는 너무 이릅니다. 모든 프로덕션 프로젝트에 대해 Java12로 전환하려는 경우 이 튜토리얼을 책갈피로 유지하십시오.

Java12의 새로운 기능은 무엇입니까? Java12의 새로운 기능:

Java12에는 변경된 내부 및 사용자 워크플로 관련 기능이 꽤 있습니다. Java 12 내부에 무엇이 있는지 살펴보겠습니다.

변경-1) 동시 클래스 언로딩

일반 가비지 컬렉터는 일반적으로 GC 주기 동안 사용하지 않는 변수를 언로드하며 일반적으로 프로세스 중 일부 중지/일시 중지 또는 그 시간 동안 CPU 증가를 확인합니다. 보통 우리는 그것을 알아차리지도 못합니다.

ZGC (Z Garbage Collector) 사용 - Java12는 동시 클래스 언로드도 지원합니다. 이것은 정상적인 GC 주기 동안 발생하므로 일시 중지도 없고 메모리 추가 사용량도 없습니다.

기본적으로 ZGC는 Java12에서 활성화됩니다. 더 이상 조치가 필요하지 않습니다.

ZGC를 비활성화하는 방법은 무엇입니까?

  • JVM 명령줄 인수 -XX:-ClassUnloading 으로 애플리케이션을 시작하기만 하면 됩니다.

변경-2) JVM Crash에 대해 자세히 알아보기

OOM(메모리 부족) 오류가 발생하거나 JVM이 충돌하는 경우 일반적으로 Java는 모든 세부 정보가 포함된 덤프 파일을 생성합니다.

이 JVM 매개변수를 사용하면 OOM 오류 /tmp/crunchify/ 폴더 아래에 덤프 파일이 생성됩니다.

Java12에는 다음과 같은 옵션이 하나 더 추가되었습니다.

JVM 충돌에 대한 모든 세부 정보가 포함된 hs_err<pid>.log 라는 새 로그 파일이 생성됩니다. 이것은 자주 충돌을 보고 더 많은 디버그를 하려는 경우 프로덕션 환경에 매우 유용합니다.

기본적으로 비활성화되어 있지만 위의 JVM 명령줄 매개변수를 추가하여 광범위한 충돌 보고서를 활성화할 수 있습니다.

변경-3) 간결한 숫자 서식

java.text는 컴팩트 숫자 형식에 대한 지원을 추가합니다. 100o1K 로 언급될 수 있고 100000100K 로 언급될 수 있습니다.

결과:

변경-4) 자바 보안 강화

security-libs/java.security 변경 사항:

  • java.security.manager에 대한 옵션을 허용하지 않고 허용합니다.
    • disallow 않으면 시스템. setSecurityManager 는 보안 관리자를 설정하는 데 사용할 수 없습니다.
  • -groupname 옵션이 keytool 키 쌍 생성에 추가됨
    • 사용자는 키 쌍을 생성할 때 명명된 그룹을 지정할 수 있습니다.
  • PKCS12 keystore 생성 사용자 정의
    • 알고리즘 및 매개변수 포함
      • 키 보호
      • 인증서 보호
      • 맥데이터
  • 새로운 JFR 보안 이벤트
    • JFR(자바 비행 기록 장치)이란?
    • 4개의 새로운 JFR 이벤트가 추가되었습니다.
      • jdk.X509인증서
      • jdk.X509검증
      • jdk.TLS핸드셰이크
      • jdk.SecurityPropertyModification

변경-5) JEP 325: 표현식 전환

Crunchify의 JEP 325 스위치 표현식 자습서

향상된 Switch statement 은 이제 Java12에서 지원됩니다.

  • Java 12 기반 case L -> syntax 연산. 여기에는 휴식이 필요하지 않습니다.
  • 스위치 표현의 사용
    • 이것은 단순화된 switch 문입니다.
    • 레이블이 일치하면 화살표 레이블 오른쪽에 있는 표현식만 실행됩니다.
    • break 문이 필요하지 않습니다.

CrunchifyJava12SwitchExample.java

IntelliJ IDEA 결과:

Java 12 스위치 문 자습서 결과 - Crunchify

변경-6) JVM 상수 API

java.lang.invoke.constant : 아시다시피 Java 클래스에는 런타임에 모든 피연산자를 저장하는 상수 풀이 있습니다.

Java12는 런타임에 상수를 호출하기 위한 API를 추가합니다.

Java12에서 제거된 기능:

Java12에서 제거된 기능 - Crunchify 팁

Java12에서 더 이상 사용되지 않는 기능:

Java12에서 더 이상 사용되지 않는 기능 - Crunchify 팁

여기에 포함하고 싶은 Java12에 대한 편리한 자습서가 있으면 알려주십시오.