* Java SE 24 - 25/03/18

JEP 472 : Prepare to Restrict the Use of JNI
JEP 475 : Late Barrier Expansion for G1
JEP 484 : Class-File API
JEP 489 : Vector API (Ninth Incubator)

 

* Java SE 23 - 24/09/17

 

* Java SE 22 - 24/03/19

JEP 423: G1 GC에 Region Pinning 기술을 구현해 지연 시간(latency) 단축
JEP 447: super() 호출 전에 다른 statement 실행을 가능하게 함(프리뷰 기능). 객체 생성 전에 미리 인자 등을 검증할 수 있다면 생성자를 호출할 필요 없이 미리 예외를 던질 수 있을 것이다.

JEP 454: 외래 함수 및 메모리 API . 자바 런타임 외부 데이터 및 함수와 상호운용하기 위함.
JEP 456: 이름 없는 변수 및 패턴. 안 쓰는 변수 이름을 언더스코어(_)로 표기하는 것을 허용해 가독성을 향상한다.

JEP 457: Class 파일 API (프리뷰). 자바 클래스 파일을 파싱하고 생성하고 변환하는 표준 API 제공.
JEP 458: java 런처 .java 파일을 다이렉트로 실행할 때 여러 파일을 실행할 수 있도록 함. 자바를 갖고 노는 걸(tinkering) 편하게 하기 위한 편의성 기능. 이러한 편의성 기능 중 하나로 jshell이 있다.
JEP 459: String template(두 번째 프리뷰). String interpolation으로 가독성과 편의성을 향상.

JEP 460: 벡터 API(7번째 인큐베이터 단계)
JEP 461: Stream Gatherers(프리뷰). 자바 stream api에서 커스텀 gatherer을 구현해 스트림 중간 단계 연산의 가독성을 향상시킨다.

JEP 462: 구조화된 동시성("Structured Concurrency")(두 번째 프리뷰). 스레드 캔슬이나 셧다운에 대한 리스크를 줄이고 동시성 코드의 observability 향상. 여러 스레드에서 실행되는 관련 있는 작업들을 그룹핑하는 기능이다.
JEP 463: 암묵적으로 정의된 클래스와 인스턴스 main 메소드(두 번째 프리뷰). 자바 초보자의 진입 장벽을 낮추기 위한 기능. ("New programmers just want to write and run a computer program")

JEP 464: Scoped values(두 번째 프리뷰). 같은 스레드 내에서의 공유 데이터를 관리하기 위한 컨테이너 오브젝트. ThreadLocal과 비슷하지만 ThreadLocal의 단점을 보완해 더 적은 리소스를 사용하고 더 안전하다고 한다(특히 VirtualThreads, StructuredConcurrency랑 같이 활용될 때).

 

* Java SE 21 (LTS) - 23/09/20

JEP 430: 템플릿 문자열(미리 보기): JavaScript나 C# 등에서도 변수나 식을 주입할 수 있는 특수 문자열 문법
JEP 431: 순차 컬렉션(Sequenced Collections)
JEP 439: 차세대 ZGC
JEP 440: 레코드 패턴
JEP 441: switch 문의 패턴 매칭 정식 출시
JEP 442: 외부 함수 및 메모리 API(3번째 미리보기): JNI를 이을 차세대 네이티브 연동 API.
JEP 443: 이름 없는 패턴 및 변수(미리 보기)
JEP 444: 가상 스레드(Virtual Threads): Project Loom으로 알려진 기술. 기존 스레드보다 비용이 저렴하고 더 많이 생성 가능하며, Spring 에서 이 기술을 적용하여 기존 코드로도 동시성 처리를 만들어준다고 공언한 원천 기술이 정식 출시되었다.

https://0soo.tistory.com/259

https://d2.naver.com/helloworld/1203723

https://techblog.woowahan.com/15398/

 

JEP 445: 이름없는 클래스 및 인스턴스 메인 메소드(미리 보기): main 함수 없이 콘솔 및 프로그램으로 동작하도록 지원하는 구문이 여기에 해당.
JEP 446: 스코프값(미리 보기)
JEP 448: 벡터 API(6번째 인큐베이터)
JEP 449: Windows 32-bit x86 제거 예정
JEP 451: 자바 Agent의 동적 불러오기를 허용하지 않도록 세팅
JEP 452: 키 캡슐화 메커니즘 API
JEP 453: 구조화된 동시성(미리 보기)

 

 

 

 

* Java SE 20 - 23/03/21

JEP 429: Scoped Values(인큐베이터 단계)
JEP 432: 레코드 패턴 매칭(두 번째 프리뷰)
JEP 433: switch문 패턴 매칭(네 번째 프리뷰)
JEP 434: 외부 함수 & 메모리 API(두 번째 프리뷰)
JEP 436: 가상 스레드(두 번째 프리뷰)
JEP 437: Structured Concurrency(두 번째 인큐베이터 단계)

 

* Java SE 19 - 22/09/

JEP 405: 레코드 패턴 매칭(프리뷰)
JEP 422: Linux/RISC-V Port
JEP 424: 외부 함수 & 메모리 API(프리뷰)
JEP 425: 가상 스레드(프리뷰)
JEP 426: 벡터 API(네 번째 인큐베이터 단계)
JEP 427: switch문의 패턴 매칭(세 번째 프리뷰)
JEP 428: 멀티스레드 프로그래밍을 단순화하는 Structured Concurrency API(인큐베이터 단계)

 

* Java SE 18 - 22/03/22

JEP 400: 자바 API의 기본 Charset이 UTF-8으로 지정되었다.
JEP 408: 정적 파일을 서빙하는 기능만 있는 심플한 웹 서버 제공(커맨드라인 툴)
JEP 413: Java API Doc에 @snippet 태그 추가
JEP 416: 리플렉션 기능 리팩터링(메소드 핸들을 이용해 다시 구현)
JEP 417: 벡터 API(세 번째 인큐베이터 단계)
JEP 418: Internet-Address Resolution SPI
JEP 419: 외부 함수 & 메모리 API(두 번째 인큐베이터 단계)
JEP 420: switch문 패턴 매칭(두 번째 프리뷰)
JEP 421: try문의 finally 기능 사용을 권장하지 않는다. try-with-resources를 이용하자.

 

* Java SE 17 (LTS) - 21/09/15

   -

패턴 매칭은 여전히 Preview 단계이다.
외부 함수/메모리 API 및 신규 벡터 API는 인큐베이팅 단계이다.
JEP 398: 애플릿이 완전히 제거될 예정으로 Deprecated 처리.
JEP 382: macOS 그래픽 렌더링 베이스를 OpenGL에서 Metal로 교체
JEP 356: 의사 난수 생성기를 통해 예측하기 어려운 난수를 생성하는 API 정식 추가
JEP 415: 컨텍스트 기반의 역직렬화 필터링
JEP 409: 봉인 클래스가 정식 추가되었다.

 

* Java SE 16 - 21/03/16

   - instanceof 패턴 매칭 추가

     (https://velog.io/@cosmo_numm/Java-%EC%9D%98-instanceof%EC%99%80-%ED%8C%A8%ED%84%B4-%EB%A7%A4%EC%B9%ADPattern-Matching)

   - record 타입 추가

 

JEP 338: Vector API 자동 병렬 프로세싱을 지원하는 자동 벡터 API가 추가될 예정이다.
JEP 347: 자바 네이티브(JNI 등) 개발 시 C++14 규격을 지원하기 시작했다.
OpenJDK 의 버전 관리가 Mercurial 이었으나, 이제 Git으로 바뀐다. 이제 OpenJDK 소스를 GitHub 에서 볼 수 있다.#
자바 11부터 시작했으며 15부터 정식으로 도입한 ZGC 기능이 향상되었다.
JEP 387: 자바 8부터 제거된 악명 높은 PermGen 대신 Metaspace 방식을 지원하기 시작한다.
ARM 64비트 윈도우 운영 체제가 지원된다. MacOS의 경우 실리콘 맥 지원이 시험 빌드에서 네이티브 지원을 시작했다.
JEP 389: JNI를 대신할 외부 링크 방식의 인터페이스를 인큐베이팅을 통해 시작한다.
JEP 390: 값 유형의 클래스를 동기화에 사용 시 경고 메시지가 개선되었다.
JEP 343: jpackage 명령어를 통해 각 운영 체제별 자바 프로그램을 설치 패키지(pkg, deb, msi 등)로 생성하는 기능이 정식으로 추가되어, 자바 프로그램을 손쉽게 배포하는 기능이 추가된다.
자바 15의 외부 메모리 접근 인큐베이팅 2차
자바 9부터 추가되어 자바 내부 API 접근에 대한 경고 무시 (--illegal-access) 기능이 강화되어 내부 API 접근 시도 시 기본적으로 오류와 함께 자바 프로그램이 종료될 수 있도록 강화
자바 15에 추가된 봉인 클래스의 2차 미리보기

 

* Java SE 15 - 20/09/15

   

EdDSA 암호화 알고리즘 추가
스케일링 가능한 낮은 지연의 가비지 컬렉터 추가(ZGC)
외부 메모리 접근 API (인큐베이팅)
클래스 봉인(미리 보기) - sealed class
상속 가능한 클래스를 지정할 수 있는 봉인 클래스가 제공된다.
상속 가능한 대상은 상위 클래스 또는 인터페이스 패키지 내에 속해 있어야 한다.

다중 텍스트 블록
이제 자바에서도 여러 줄의 문자열을 손쉽게 작성할 수 있다.

 

* Java SE 14 - 20/03/18

 

* Java SE 13 - 19/09/17

   - Switch 개선 - yield 예약어 추가

 

* Java SE 12 - 19/03/19

   - Switch 문 확장 

 가비지 컬렉터 개선, 마이크로 벤치마크 툴 추가, 성능 개선의 변경점

 

* Java SE 11 (LTS) - 18/09/25

 람다 파라미터에 대한 지역 변수 문법[8], 엡실론 가비지 컬렉터, HTTP 클라이언트 표준화 등의 기능이 추가

 

* Java SE 10 - 18/03/20

var 키워드를 이용한 지역 변수 타입 추론[6], 병렬 처리 가비지 컬렉션, 개별 스레드로 분리된 Stop-The-World, 루트 CA 목록 

 

* Java SE 9 - 17/09/21

- 32bit 미지원

Deprecated 표시에는 해당 버전과 제거 예정 여부를 표시할 수 있게 되었다. 그 외에 구조적 불변 컬렉션, 통합 로깅, HTTP/2, private 인터페이스 메소드, HTML5 Javadoc 등도 지원되며, 프로퍼티 파일에 UTF-8이 지원

 

* Java SE 8 (LTS)  - 14/03/18

   - Lambda 표현식

   - Stream API 추가

   - Behavior Parameterization 지원 (Method 를 Parameter 로 전달 가능)

   - Interface Default Method 추가

   - For-each Loop 지원

 

, Annotation on Java Types, Unsigned Integer 계산, Repeating Annotation

Static Link JNI Library, , PermGen 영역 삭제  등이 추가

 

* Java SE 7 - 11/07/07

   - Switch 문에서 String 지원

   - try-with-resources 지원

   - Thread.fork(), join() 추가

Dynamic Language 지원,

Diamond Operator <>,

이진수 리터럴,

숫자 리터럴에 _ 지원,

새로운 File NIO 라이브러리,

 

* Java SE 6 - 06/12/11

 

* J2SE 5 - 04/09/30

   - Generics 추가

   - Enumeration 추가

   - Auto Boxing/Unboxing 지원

   - ThreadPool 추가

   - Cocurrent Collection 추가

   - 가변 길이 파라미터 지원

   - Annotation 추가

   - Static Import 추가

   - java.util.Scanner 추가

 

* J2SE 1.4 - 02/02/06

   - Assert 문법 추가

   - 정규 표현식 지원

   - IPv6 지원

   - Non-Blocking IO 지원

 

* J2SE 1.3 - 00/03/08

 

* J2SE 1.2 - 98/12/08

   - HotSpot JVM

 

* JDK 1.1 - 97/02/19

   - Inner Class 추가

   - Reflection 추가

   - Unicode 지원

 

* JDK 1.0 - 96/01/23

'SW > ::: Java' 카테고리의 다른 글

Serialization (직렬화)  (0) 2022.02.03
AWT, Swing, Applet  (0) 2022.02.03
JDK 구성 요소  (0) 2021.01.02
JVM (메모리 구조)  (0) 2020.10.10
//Garbage Collector  (0) 2020.10.10

+ Recent posts