Java 11의 변경 점

5625 단어 JDKJava

수정점


2018/09/25 Java11 발표
다음은 Java 11의 JEP입니다.
  • 181: Nest-Based Access Control
  • 309: Dynamic Class-File Constants
  • 315: Improve Aarch64 Intrinsics
  • 318: Epsilon: A No-Op Garbage Collector
  • 320: Remove the Java EE and CORBA Modules
  • 321: HTTP Client (Standard)
  • 323: Local-Variable Syntax for Lambda Parameters
  • 324: Key Agreement with Curve25519 and Curve448
  • 327: Unicode 10
  • 328: Flight Recorder
  • 329: ChaCha20 and Poly1305 Cryptographic Algorithms
  • 330: Launch Single-File Source-Code Programs
  • 331: Low-Overhead Heap Profiling
  • 332: Transport Layer Security (TLS) 1.3
  • 333: ZGC: A Scalable Low-Latency Garbage Collector (Experimental)
  • 335: Deprecate the Nashorn JavaScript Engine
  • 336: Deprecate the Pack200 Tools and API
  • JDK9에서 출시된 모델


    JDK9로 변경된 이후 6개월(3월과 9월)마다 피처 발표 이런 발표 모델을 진행한다.또 취약성 대응과 결함 잠금은 1월, 4월, 7월, 10월 연간 총 4차례에 이른다.2진법 제공에 관해서는 지금까지 갑골문에서 2진법을 무상으로 제공했지만 9 이후 무료 2진법은 OpenJDK에서 제공된 것으로 바뀌었다.9 이후 OracleJDK는 유료입니다.또 8 이전에는 오라클 JDK와 오픈 JDK가 기술적으로 차이가 있었지만 이는 사라졌다.

    LTS


    JDK11 이후 오라클JDK는 3년마다 발매된다.갑골문의 유상 지원은 최소 8년의 안전 갱신을 제공한다.또 JDK11 이후에는 개발, 테스트, 시작, 시위 행진에 무료로 사용할 수 있다.

    Java도 현재 무상(기타 JDK와 무관)


    자바에 대한 지원과 업데이트는 수십 명의 자바 챔피언이 집필했다.문서의 일본어 문서가 공개되었습니다.

    인코딩에 큰 영향을 미치는 JEP


    JEP181 Nest-Based Access Control


    자바 10 이전에 내부 클래스에서 외부 클래스를 호출하는 privvate 방법의 코드는 서로 다른 바이트 코드 출력입니다.
    JDK10으로 다음 코드를 보십시오.
    Outer.java
    public class Outer {
        private int i = 0;
    
        public class Inner {
            public int i() {
                return i;
            }
        }
    }
    
    컴파일한 후, 역컴파일링 파일을 시험해 보자.
    $ javap -p -c Outer\$Inner
    Compiled from "Outer.java"
    public class Outer$Inner {
      final Outer this$0;
    
      public Outer$Inner(Outer);
        Code:
           0: aload_0
           1: aload_1
           2: putfield      #1                  // Field this$0:LOuter;
           5: aload_0
           6: invokespecial #2                  // Method java/lang/Object."<init>":()V
           9: return
    
      public int i();
        Code:
           0: aload_0
           1: getfield      #1                  // Field this$0:LOuter;
           4: invokestatic  #3                  // Method Outer.access$000:(LOuter;)I
           7: ireturn
    }
    
    이어 JDK11로 같은 코드를 컴파일해 역조립을 시도한다.
    $ javap -p -c Outer\$Inner
    Compiled from "Outer.java"
    public class Outer$Inner {
      final Outer this$0;
    
      public Outer$Inner(Outer);
        Code:
           0: aload_0
           1: aload_1
           2: putfield      #1                  // Field this$0:LOuter;
           5: aload_0
           6: invokespecial #2                  // Method java/lang/Object."<init>":()V
           9: return
    
      public int i();
        Code:
           0: aload_0
           1: getfield      #1                  // Field this$0:LOuter;
           4: getfield      #3                  // Field Outer.i:I
           7: ireturn
    }
    
    JDK10에서 컴파일한 사람, 인너 클래스는 Outer의 static 방법access$000을 호출합니다.JDK11에서 인너 클래스는access$000 방법이 아니라 Outer 클래스의 Outer입니다.직접 호출 i.
    해당 영상은 JVM Language Summit 2018에 공개됐다.
    Java Is Still Free

    JEP309 Dynamic Class-File Constants


    동적 상수를 지원하도록 Java 클래스 파일 형식을 확장합니다.Java 10 이전에는 원본과 리소스가 있는 String만 Constant Pool에 저장할 수 있었고 그 외에도 Constant Pool을 사용하여 처리할 수 있었다.동적 상수의 장점은 언어와 컴파일러의 자유도가 상승하고 바이트 코드의 상수의 자유도가 상승하는 것이다.
    해당 영상은 JVM Language Summit 2018에 공개됐다.

    JEP320 Remove the Java EE and CORBA Modules


    JavaEE 및 CORBA 모듈이 제거되었습니다.대상은 코바, JAXB, JAX-WS, Common Activation Framework, JTA다.이러한 에이전트 모듈은 다음과 같습니다.
  • JAX-WS -> jaxws-api
  • JAXB -> jaxb-api
  • JAF -> javax.activation-api
  • Common Annotations -> javax.annotation-api
  • JTA -> javax.transaction-api
  • 삭제 이유는 개발 속도에 따라 Javase 속도를 따라가지 못하기 때문입니다.앞으로 자카르타EE로 개발될 예정이다.

    JEP321 HTTP Client (Standard)


    HTTP 클라이언트 API가 표준화되었습니다.비동기식 지원, HTTP/2 지원.모듈 이름은 자바입니다.net.http.
    이 동영상이 공개됐습니다.

    JEP323 Local-Variable Syntax for Lambda Parameters


    자바 10에서 가져온 로컬 변수형 추론과 마찬가지로, Ramda 파라미터도 var을 사용할 수 있습니다.나는 더욱 편성할 수 있게 되었다.
    이 동영상이 공개됐습니다.

    좋은 웹페이지 즐겨찾기