자바9

のの·2020년 12월 25일

자바 9


  • 자바 모듈화

    • 자바 9에서 가장 핵심이 되는 내용. 자바 모듈화는 실행, 컴파일, 빌드 시점에 결합할 수 있도록 JDK를 모듈로 분할할 수 있게 해주는 기능이다. 모듈화를 통해 자바 SE 뿐만 아니라 자바 EE 기반으로 대규모 소프트웨어를 개발할 때 더욱 용이하게 라이브러리를 관리할 수 있다.
  • REPL(Read-Eval-Print-Loop) 기능인 JShell

    • REPL은 자바 진영의 오랜 숙원 프로젝트 중 하나이다. 프로젝트 쿨라에서 개발되었고 자바 9에 포함되어 배포되었다. REPL인 JShell을 이용하면 별도의 컴파일이나 클래스의 선언 없이도 코드를 작성하고 테스트할 수 있다. 간단한 코드 검증이나 교육등에 유용하게 사용할 수 있다.
  • 통합 JVM 로깅

    • 자바 9에서는 통합된 JVM의 로깅 기능을 제공한다. 자바를 실행할 때 -Xlog 파라미터 옵션을 적용하면 통합 JVM 로깅 기능이 동작하며 ERROR, WARNING, INFO, DEBUG와 ERROR 레벨에 따라 로그를 STDOUT,STDERR 그리고 파일에 남길 수 있따.
  • HTML5 자바 DOC
    - 자바 8까지는 javadoc 명령어를 이용해서 API 문서를 생성하면 HTML 4.0 기반으로 파일이 생성되었으나 자바 9부터는 javadoc 명령어에 html5 파라미터 옵션을 적용하면 HTML 5로 결과물이 생성된다. HTML5로 출력된 자바 DOC의 가장 큰 차별점은 별도의 서버 도움 없이 검색 기능을 사용할 수 있다는 점이다.

  • try-with-resource 구문개선

    • 자바 7에서 처음 선보인 try-with-resource가 개선되었다.
      자바 7에서는 관리하고자 하는 자원 객체를 반드시 try 구문에서 선언해야 했는데 자바 9에서는 try 구문 오에도 선언이 가능하다.
  • 인터페이스 메서드 형식 추가

    • 자바 8에서 인터페이스에 default 메서드와 static 메서드를 정의하는 기능을 제공하였으며 자바 9에서는 private 메서드도 인터페이스 내에 추가할 수 있게 되었다. 과거 자바 8에서는 public 메서드에 한해 default 메서드를 생성할 수 있었기 때문에 public 접근자를 남용하게 되고 private으로 빼거나 공통화시킬 수 있는 것도 기능적인 한계로 사용할 수 없었다. 하지만 자바 9부터는 private 메서드를 이용해서 이러한 한계를 극복할 수 있게 되었다.
  • 다이아몬드 연산자 개선

    • 자바 7에서 새롭게 선보인 다이아몬드 연산자는 코드의 가독성을 높이는데 큰 역할을 하였지만 익명 클래스에는 사용할 수 없는 제약이 있었다. 자바 9에서는 익명 클래스에서도 다이아몬드 연산자를 사용할 수 있게 되었다.
  • 프로세스 API

    • 프로세스 정보에 접근할 수 있는 새로운 API이다. 모든 프로세스, 현재 프로세스, 자식 프로세스 그리고 종료 프로세스 등의 정보를 조회하고 관리할 수 있는 기능을 제공한다.
  • CompletableFuture 기능 개선

    • 자바 8에서 처음 소개된 CompletableFuture의 기능이 개선되었다.
      기존에는 코드를 실행하는 데 초점을 맞췄다면 자바 9에서는 타임아웃 기능과 지연 기능이 추가되었다.
  • 반응형 스트림 API

    • 자바 5에서 추가된 Concurrent API는 자바 버전이 업그레이드될 때마다 지속적으로 기능이 추가되었다. 자바 9에서는 반응형 프로그래밍을 위한 Flow 기능이 추가되었다. 이 기능은 발행자(Publisher)와 구독자(Subscriber)를 지정하고 상호 연계할 수 있는 프레임워크를 제공한다.
  • 컬렉션 프레임워크에 팩토리 메서드 추가

  • 스트림 API의 기능개선

profile
wannabe developer

0개의 댓글