Java 9 버젼에서 변화된 내용들을 가볍게 정리하는 형태로 만들어봤다.
소프트웨어 캠퍼스 강사팀 4기의 발표자료 이기도 하다.
소프트웨어 캠퍼스(https://www.facebook.com/groups/softwarecamp/)는 강의와 스터디등을 통해 서로를 성장시켜갈 수 있는 커뮤니티가 되려는 곳이다.
8. 2. 알아두면 좋을 내용들 - JCP, JSR, JEP
software campus
Java 9
(Java 8 이후 일정)
. Java 8 이후에는 2년 간격으로 새로운 버전을 내놓을 예정
. Java 8 에 Self-Tuning JVM, Native 지원 강화, Big Data (2GB 이상 지원),
Tail Calls/Continuation, Meta-Object 프로토콜, Multi-Tenancy, 자원 관리 등
. Java 9의 JDK9에 대해 알고 싶으면 다음의 두 사이트를 참고하기 바란다.
- http://openjdk.java.net/projects/jdk9
- http://jdk9.java.net
9. 2. 알아두면 좋을 내용들 - JCP, JSR, JEP
software campus
Java 9
(JDK 9)
- JDK 9 프로젝트의 목적은 Java SE 9 플랫폼의 오픈소스 참조문서를 만들어 내
는 것이다. 또한 JCP 체제하에서 이번의 JSR(Java 상세 명세서)을 정의하는 것이다.
(The goal of this Project is to produce an open-source reference implementation
of the Java SE 9 Platform, to be defined by a forthcoming JSR in the Java
Community Process.)
이번 릴리즈 버젼의 스케쥴과 특징은 JEP 2.0의 제안에 의해 개정된 JEP 과정을 통
해 제안되고, 추적된다.
(The schedule and features of this release are proposed and tracked via the JEP
Process, as amended by the JEP 2.0 proposal.)
10. 2. 알아두면 좋을 내용들 - JCP, JSR, JEP
software campus
Java 9
(용어정리)
*JCP(Java Community Process) : Java 기술의 표준 기술 명세서를 개발하는 체제(시스
템)이다. (The JCP is the mechanism for developing standard technical specifications
for Java technology.)
*JSR(Java Specification Requests Java 요구사항 상세 명세서) : Java 플랫폼에 제안된 실
제 명세서와 최종결정된 명세서
(Java Specification Requests (JSRs) are the actual descriptions of proposed and final
specifications for the Java platform.)
*JEP(JDK Enhancement Proposal) : Java Development Kit 과 OpenJDK을 향상시키기
위한 제안들을 모으는 오라클의 밑그림을 그리는 처리방법 이다. 오라클에서 JEP는 JDK
릴리즈 프로젝트와 연관된 노력에 대한 장기 로드맵 역할을 한다.
(The JDK Enhancement Proposal (or JEP) is a process drafted by Oracle Corporation
for collecting proposals for enhancements to the Java Development Kit and OpenJDK.
In the words of Oracle, the JEP serve as the long-term Roadmap for JDK Release
Projects and related efforts.)
11. 2. 알아두면 좋을 내용들 - JCP, JSR, JEP
software campus
Java 9
OpenJDK
Sun(현재 Oracle)이 JDK 7을 개발하기 시작할 때 이전과 다른 점이 하나 있었는데, Sun이
JDK를 오픈소스화 하기 위해 2007년 OpenJDK를 만들었다는 것이다. (OpenJDK는 완전
한 Free의 오픈소스 코드를 기반으로 Fully buildable한 Java Development Kit을 배포하기
위한 Sun의 노력이다.)
Sun이 3rd-Party 라이브러리의 저작권자에게 오픈소스로 공개할 수 있도록 설득하고자 했
으나 잘되지 않았고, 저작권자가 오픈소스화를 거부한 일부 컴포넌트를 제외한 나머지
JDK 소스코드 전부를 OpenJDK에 제공했고, OpenJDK는 이를 기반으로 이외의 컴포넌트
들의 대안 코드를 마련하면서 JDK7 프로젝트를 시작했다.
참고 : http://stunstun.tistory.com/222
12. 2. 알아두면 좋을 내용들 - JCP, JSR, JEP
software campus
Java 9
OpenJDK vs OracleJDK
Oracle JDK는 OpenJDK의 JDK7 기반에 추가로 OpenJDK에 포함되지 않은 Component까지 모두
갖춘 프로젝트이다.
아래와 같이 Vendor에 의한 분리된 Version이 존재하는데,
. Oracle’s JDK (Commertial support from oracle)
. OpenJDK, the open source java
JDK7 이전 OpenJDK는 Oracle JDK에 비해 누락된 기능 및 성능이슈가 존재
현재는 *java-web-plugin(http://en.wikipedia.org/wiki/IcedTea - 저작권이 있는 라이브러리의 대
안으로 작성된)을 제외하고는 정확하게 같다고 볼 수 있다. 몇몇 사람들은 아직도 OpenJDK가 Oracle
JDK에 비해 성능이 떨어진다고 하지만, 이것은 근거없는 말이다.
두 Version은 모두 Java SE 7 JSR(JSR 336) Spec 을 구현하였다.
*IcedTea : 개발자들이 OpenJDK를 좀 더 쉽게 빌드하고 배포하는데 초점을 맞춘 프로젝트이다.
참고 : http://stunstun.tistory.com/222
44. software campus
( deprecated )
289 : Deprecate the Applet API
211 : Elide Deprecation Warnings on Import Statements
214 : Remove GC Combinations Deprecated in JDK 8
277 : Enhanced Deprecation
Java 95. Java 9에서 자주 사용할만한 것들
45. software campus
( deprecated )
289 : Deprecate the Applet API
Java 95. Java 9에서 자주 사용할만한 것들
웹 브라우저 업체들의 Java Browser Plug-in의 삭제로 인해, 앞으로 개발되는 Java 프로그
램들은 Web Start 프로그램 형태나 Installable 어플리케이션 형태로 개발 유도
46. software campus
( deprecated )
211 : Elide Deprecation Warnings on Import Statements
Java 95. Java 9에서 자주 사용할만한 것들
자바 SE 8에서, 자바 컴파일러는 사용되지 않는
유형이 이름으로 가져올 때 또는 사용되지 않는
멤버 (메서드, 필드, 중첩 된 유형) 정적으로
가져올 때 사용 중단 경고를하기 위해 Java 언어
사양의 합리적인 해석이 필요하다.
사용하지 않는 부분의 경고에 대한 부분이
Deprecate 되는 것 같다.
47. software campus
( deprecated )
214 : Remove GC Combinations Deprecated in JDK 8
Java 95. Java 9에서 자주 사용할만한 것들
이전에 JEP 173를 통해 JDK 8에서 사용되지 않는 한 GC 조합을 제거한다.
48. software campus
( deprecated )
277 : Enhanced Deprecation
Java 95. Java 9에서 자주 사용할만한 것들
사용되지 않는 주석을 개조하고, API 수명주기를 강화하는 도구를 제공
50. 5. Java 9, 그 이후
software campus
Java 9
java 10 : value classes
value class Point{
int x;
int y;
Point(int x, int y){
this.x = x;
this.y = y;
}
}
51. 5. Java 9, 그 이후
software campus
Java 9
java 10 : generics
Reified Generics
Generics with values
List<int> intList = new ArrayList<>();
…
int val = intList.get(0);
class List$Point{ Point get(Point index); }