jdk version history(jdk 버전간 차이)

jdk 버전

JDK1.1

1997년 : RMI, JDBC, reflection, JIT, inner Class 개념포함

JDK1.2

1998년 : Java SE 1.2, ME 1.2, EE 1.2 발표(J2EE라는 명칭 사용시작) java가 세가지 버전으로 나뉨. Swing이 SE에 포함, Corba IDL(이종 기기간 함수호출 스팩), Collection Framework 포함

JDK 1.3

2000년도 HotSpot(Sun에서 만든 JIT 구현), JNDI(java 네이밍, 디렉토리 인터페이스 J2EE스펙) 포함

JDK 1.4

2002년도 JCP(Java Community Process)에 의해서 오픈소스 정책으로 자바가 관리되기 시작한 버전 Java 2 Security 모델의 확립(Sandbox) Java Web Start 포함 (Java Applet이 브라우저에서 돌아가는 것과 다르게, 외부 sandbox에서 동작) Language : assert 도입 API : Reqular Expression, Assert keyword, Security 2 version(현재 security model), Non Blocking IO(NIO)

JDK 1.5

2004년 기능적으로 가장 많은 변화가 생긴 버전 Language : Generics, annotation, auto boxing, enum, vararg, foreach, static imports 도입 API : java.utio.concurrent APi, scanner class J2EE라는 명칭이 Java EE로 개칭

JDK 1.6

2006년 기능에 큰 변화 없음, 보안 성능강화 JVM/Swing에 있어 많은 성능향상(synchronization, compiler, Gc, start-up time) G1(Garbage Fist) GC도입

Interned String 이슈

Java6 이하 버전의 경우 신규 생성된 String은 PermGen(런타임시 크기가 변경되지 않는 메모리)에 위치하며, 동일한 String의 경우 Pooling.

1
2
3
4
5

String test0 = "test"; // 내부적으로 new String 호출후 intern()메소드를 자동으로 호출한다.
String test1 = new String("test").intern();

String test2 = new String("test"); // 이 코드는 위 코드보다 메모리상 효율 적이지 못하다.

java6 이후 String이 저장되는 메모리가 PermGet에서 heap으로 변경되어, heap size 튜닝으로 Out.of.memeory를 극복(절대적 해결이 아님)할 수 있다. java 임베디드 쪽에서 성능이슈라 웹에서는 별로 신경을 안써도 될 내용 같다.

JDK 1.7

2011년 JVM : Dynamic Language support Language : Switch문 인자로 String 허용, try-resource, generics 타입추론, 숫자에서 undersocre 사용

숫자 언더스코어

조건 : 반드시 숫자 사이에만 올 수 있다.

1
2
3
4

int moneyWon = 19000000000;

int moneyWon2 = 19_000_000_000; // 숫자 언더스코어, 숫자의 가독성 상승

JDK 1.8

2014 오라클로 인수된 후 첫번째 버전 JDK 1.5이후 가장 큰 언어적 변화(Lambda및 함수형 프로그래밍,Interface default method) JEP에 의해서 새로운 기능들이 발의되기 시작 Language : Lambda expression, Defauit Method Ingerface, functional programming for MapReduce style 지원, default method를 이용한 다중상속 지원, 메소드 참조 API : Nashorn(JS엔진), new Date and Tiem API, stream api, Collection에 대한 함수형화 병렬처리에 적합한 구조

JDK 1.9

2016 예정 Modular System (jigsaw) 지원 예정 Money API 지원예정 JAVA Shell 지원예정 변수에 대한 타입 추론 지원예정(var, val) OpenCL 이용한 자동화된 병렬 프로그래밍 지원 예정

참고자료

http://koreateam.co.kr/162 https://01010011.blog/2016/12/29/java6-java7%EC%9D%84-%EC%93%B0%EB%A9%B4-%EC%95%88%EB%90%98%EB%8A%94-%EC%9D%B4%EC%9C%A0/ http://seosh81.info/?p=739