-
JAVA 버전별 history프로그래밍 언어/JAVA 2020. 5. 3. 15:32
Java version History
JCP(Java Community Process; http://jcp.org ) → JSR(Java Specification Request)
jcp는 JVM 명세 뿐만 아니라 새로운 자바 기술 명세를 제안하고 제공
jcp에서 jsr 요청하여 해당 jsr이 tck를 거쳐야 비로소 완성
JDK 1.0
최초의 버전, 1996년 1월 23일에 발표
JDK 1.1
1997년 2월 19일에 발표, Inner class, JavaBeans, RMI, JIT compiler, reflection, JDBC 등이 추가되었다.
RMI(java Remote Method Invocation)
-
- 서로 다른 컴퓨터들 상에 있는 객체들 사이의 상호작용을 가능하게 하는 방식
Reflection
-
- 실행중인 프로그램 내부를 검사하고 내부의 속성을 수정할 수 있도록 하는 기능
Inner class
-
- 클래스나 인터페이스 내부에 선언된 클래스
- 코드를 읽기 쉽고 더 오래 유지하기 위해 사용
J2SE 1.2
codename : Playground
1998년 12월 28일에 발표, Swing GUI, CORBA, Collections, Java plug in, Java IDL 등이 추가되었다.
기존 59개의 패키지에서 1520개의 클래스로 규모가 늘어남
JIT(just-in-time compilation)
-
- 인터프리터 방식에 정적 컴파일 방식을 접목한 것, 같은 함수가 여러 번 불릴 때 캐싱함
CORBA(Common Object Request Broker Architecture)
-
- 어플리케이션들끼리 어디에 위치하든, 누가 만들었건 관계없이 상호간 통신을 보장하는 시스템 통합 기술
Collections framework
-
- 다수의 데이터를 쉽고 효과적으로 처리할 수 있도록 표준화된 방법을 제공하는 클래스의 집합
- 인터페이스를 사용하여 구현
- Iterator 와 Enumeration이용해 데이터를 효율적으로 얻을 수 있다.
J2SE 1.3
codename Kestrel
2000년 3월 8일에 발표, HotSpot, JNDI, JPDA, JavaSound 등이 추가되고 RMI가 CORBA를 지원하도록 변경
HotSpot JVM
-
- Sun Microsystem사의 java 엔진 이름, JVM 구현의 한 종류
- Sun Microsystem사의 java 엔진 이름, JVM 구현의 한 종류
JNDI(Java Naming and Directory Interface)
-
- 네이밍 서비스와 디렉토리 서비스의 기능을 자바 프로그래밍 언어로 제공하는 인터페이스
J2SE 1.4
codename Merlin
2002년 2월 6일에 발표, assert, 정규표현식, IPv6, Non-blocking I/O, JAXP, Java Web Strat 등을 지원
Non-blocking I/O (Asynchronous I/O)
-
- I/O시 멈추고 기다리지 않고 다른 작업을 진행하면서 처리를 기다린다.
- 상황에 맞게 사용하면 자원을 효율적으로 사용할 수 있게 된다.
JAXP
-
- 통합 XML 파서 및 XSLT 프로세서
J2SE 5
codename Tiger
2004년 9월 30일에 발표, 기능적으로 많은 변화가 생긴 버전 Generics, Annotation, Enumeration, Varargs, for each loop 등이 추가되었다.
Generics
-
- 일반적인 코드를 작성하고, 이 코드를 다양한 타입의 객체에 대하여 재사용하는 프로그래밍 기법
- 주로 java Collection에서 많이 사용된다. (ArrayList<T>)
Annotation
-
- 자바 소스코드에 추가하여 사용할 수 있는 메타데이터의 일종
- @Override, @Deprecated
Varargs
-
- 가변 인수, 필요에 따라 매개변수를 가변적으로 조정할 수 있는 기술
For each loop
라이브러리 개선
-
- RMI 객체들에 대한 자동 stub 생성
- Swing
- java.util.concurrent
Java SE 6
2006년 12월 11일에 발표, JVM/Swing 최적화, GC알고리즘 개선
JVM의 GC(Garbage Collection) 개선
-
- 메모리 관리 기법, 동적으로 할당했던 메모리 영역 중에서 필요 없게 된 영역을 해제하는 기능
Java SE 7
2011년 7월 7일에 발표, Dynamic language 지원, switch문에서 String 사용, concurrency 강화 등 이 적용
openjdk7
-
- modular VM, lamda expression 지원
- General Availability 는 2011/07/28 - 첫번째 버전 release
- openjdk7은 cross-compilation을 지원하지 않음
- jdk7은 parallel native library 지원
- PARALLEL_COMPILE_JOBS=N
- HOTSPOT_BUILD_JOBS=N
Java SE 8
2014년 3월 18일에 발표, Lambda Expression, Nashorn JavaScript, Annotation on Java types, 시간 API 등이 추가
JEP 153 : JavaFX
JEP 122 : JVM의 Permanent generation 삭제
Lambda Expression
-
- 식별자 없이 실행 가능한 함수 표현식
- 불필요한 코드를 줄이고 가독성을 높이는 것이 목적
openjdk8
-
- functional interface
- Lamda expression
- stream, new data/time API
- apache ant 없어지고, speed, multicore를 이용한 빌드 지원
- partial and incremental builds
- cross-compilation
- easier environment setup
Java SE 9
2017년 9월 21일에 발표, Project Jigsaw를 이용해 JDK를 모듈화를 함
Jshell, Ahead-of-time compilation 등 추가
Java SE 10
2018년 3월 20일에 발표
로컬변수 타입 추론, 병렬처리 GC 등 추가
JDK 레퍼지토리 하나로 통합 , JVM 힙 영역을 시스템 메모리가 아닌 다른 메모리에도 할당할 수 있게 됨
JEP 307 : Parallel full GC for G1
Java SE 11
2018년 3월 20일 발표, 해당 버전은 LTS로 제공
JavaFX, Java EE and CORBA modules have been removed from JDK
Java 애플릿 및 Java Web Start은 더 이상 사용할 수 없음
unicode 10.0.0 지원
JEP 309: Dynamic class-file constants
JEP 333: ZGC: a scalable low-latency garbage collector (Experimental)
JEP 335: Deprecated the Nashorn JavaScript engine
Java SE12
2019년 3월 19일 발표
GC:G1 알고리즘 개선
JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
Java SE 13
2019년 9월 17일 발표
JEP-351: ZGC: Uncommit Unused Memory
Java SE 14
2020년 3월 17일 발표
JEP-345: NUMA-Aware Memory Allocation for G1
JEP-365: ZGC on Windows
JEP-364: ZGC on macOS
JEP-366: Deprecate the ParallelScavenge + SerialOld GC Combination
JEP-363: Remove the Concurrent Mark Sweep (CMS) Garbage Collector
'프로그래밍 언어 > JAVA' 카테고리의 다른 글
JVM3 (0) 2020.05.02 JVM2 (0) 2020.04.26 JVM (0) 2020.04.26 NIO - Buffer (0) 2020.04.03 추상 클래스와 인터페이스 (0) 2020.03.29 -