SlideShare a Scribd company logo
Java 9
유현석
jaseok@gmail.com
software campus
Java 9
software campus
1. Java 버젼 히스토리
2. 알아두면 좋을 내용들 - JCP, JSR, JEP
3. Java 9 에서 변화된 부분
4. Jigsaw project (주요 프로젝트)
5. Java 9에서 자주 사용할만한 것들
6. Java 9, 그 이후
Java 9
software campus
1. Java 의 버젼 히스토리
1. Java의 버젼 히스토리
software campus
Java 9
Java 의 현재까지의 버젼 출시과정
참고, Arkadiusz Sokolwski 2015
1. Java의 버젼 히스토리
software campus
Java 9
http://openjdk.java.net/projects/jdk9/
연기
1. Java의 버젼 히스토리
software campus
Java 9
Java 9 릴리즈 되는 시점 - 연기이유
https://www.infoq.com/news/2015/12/oracle-confirms-delayed-java9
Project Jigsaw
Java 9
software campus
2. 알아두면 좋을 내용들 - JCP, JSR, JEP
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
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.)
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.)
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
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
Java 9
software campus
3. Java 9 에서 변화된 부분
3. Java 9 에서 변화된 부분
software campus
Java 9
http://openjdk.java.net/projects/jdk9/
3. Java 9 에서 변화된 부분
software campus
Java 9
JEPs targeted to JDK 9, so far
3. Java 9 에서 변화된 부분
software campus
Java 9
JEPs targeted to JDK 9, so far
3. Java 9 에서 변화된 부분
software campus
Java 9
JEPs targeted to JDK 9, so far - 체크 해볼만한 내용들
( Jigsaw Project )
200 : The Modular JDK
201 : Modular Source Code
275 : Modular Java Application Packaging
110 : HTTP 2 Client
223 : New Version-String Scheme
( deprecated )
289 : Deprecate the Applet API
211 : Elide Deprecation Warnings on Import Statements
214 : Remove GC Combinations Deprecated in JDK 8
277 : Enhanced Deprecation
224 : HTML5 javadoc
222 : jshell : The Java Shell ( Read-Eval-Print Loop)
Java 9
software campus
4. Jigsaw project (주요 프로젝트)
4. Jigsaw project (주요 프로젝트)
software campus
Java 9
Jigsaw Project
jigsaw 는 프로젝트로 따로 떨어져 있으며,
JSR 번호 중에 옆에 적혀있는 것들을 체크해
보면 될것 같다.
4. Jigsaw project (주요 프로젝트)
software campus
Java 9
software campus
Java 9 Jigsaw 그림
4. Jigsaw project (주요 프로젝트) Java 9
software campus
Eclipse Neon with Java 9 Jigsaw
4. Jigsaw project (주요 프로젝트) Java 9
software campus
Java 8
4. Jigsaw project (주요 프로젝트) Java 9
Java 9
software campus
Motivation :
. JAR/classpath hell reduction
. unexpressed/transitive dependencies
. manual dependencies management
. hide some (private) packages; com.sun.misc.*
. system instead of manual security
. JRE size reduction
4. Jigsaw project (주요 프로젝트) Java 9
software campus
Jigsaw 자주 사용하는 라이브러리 그림
4. Jigsaw project (주요 프로젝트) Java 9
software campus
Modules for Java - Jigsaw
4. Jigsaw project (주요 프로젝트) Java 9
software campus
Jigsaw example
module com.foo.app{
requires com.foo.bar;
requires java.sql;
}
module java.sql{
requires java.logging;
requires java.xml;
exports java.sql;
exports javax.sql;
exports javax.transaction.xa;
}
4. Jigsaw project (주요 프로젝트) Java 9
software campus
Jigsaw example
4. Jigsaw project (주요 프로젝트) Java 9
software campus
Jigsaw - implied readability
module java.sql{
requires public java.logging;
requires public java.xml;
exports java.sql;
exports javax.sql;
exports javax.transaction.xa;
}
4. Jigsaw project (주요 프로젝트) Java 9
software campus
Jigsaw - implied readability
String url = …;
Properties props = …;
Driver d = DriverManager.getDriver(url);
Connection c = d.connect(url,props);
d.getParentLogger().info(“Connection acquired”);
4. Jigsaw project (주요 프로젝트) Java 9
software campus
implied readability
4. Jigsaw project (주요 프로젝트) Java 9
software campus
Jigsaw - services
module com.mysql.jdbc{
requires java.sql;
requires org.slf4j;
exports com.mysql.jdbc;
}
4. Jigsaw project (주요 프로젝트) Java 9
software campus
Jigsaw - services
module java.sql{
requires public java.logging;
requires public java.xml;
exports java.sql;
exports javax.sql;
exports javax.transaction.xa;
uses java.sql.Driver;
}
4. Jigsaw project (주요 프로젝트) Java 9
software campus
Jigsaw - services
module com.mysql.jdbc{
requires java.sql;
requires org.slf4j;
exports com.mysql.jdbc;
provides java.sql.Driver with com.mysql.jdbc.Driver;
}
4. Jigsaw project (주요 프로젝트) Java 9
software campus
Jigsaw - services
4. Jigsaw project (주요 프로젝트) Java 9
software campus
Jigsaw - qualified exports
module java.base{
…
exports sun.reflect to
java.corba,
java.logging,
java.sql,
java.sql.rowset,
jdk.scripting.nashorn;
}
4. Jigsaw project (주요 프로젝트) Java 9
software campus
Jigsaw - qualified exports
4. Jigsaw project (주요 프로젝트) Java 9
Java 9
software campus
5. Java 9에서 자주 사용할만한 것들
. 223 : New Version-String Scheme
. 110 : HTTP 2 Client
( deprecated )
. 289 : Deprecate the Applet API
. 211 : Elide Deprecation Warnings on Import Statements
. 214 : Remove GC Combinations Deprecated in JDK 8
. 277 : Enhanced Deprecation
software campus
Java 9
. 223 : New Version-String Scheme -1
참고, Arkadiusz Sokolwski 2015
5. Java 9에서 자주 사용할만한 것들
software campus
참고, Arkadiusz Sokolwski 2015
• MAJOR.MINOR.SECURITY
1.8.0 -> 8.0.0
1.8.0_05 -> 8.0.1
1.8.0_11 -> 8.0.2
1.8.0_20 -> 8.1.2
1.8.0_25 -> 8.1.3
Java 95. Java 9에서 자주 사용할만한 것들
. 223 : New Version-String Scheme -2
software campus
Java 95. Java 9에서 자주 사용할만한 것들
. 223 : New Version-String Scheme -3
http://openjdk.java.net/jeps/223
software campus
Java 9
참고, Arkadiusz Sokolwski 2015
HttpReponse response = HttpRequest
.create(new URI(“http://www.ocado.com”))
.body(noBody())
.GET().send();
int responseCode = response.responseCode();
String responseBody = response.body(asString());
System.out.println(responseBody);
. 110 : HTTP 2 Client -1
5. Java 9에서 자주 사용할만한 것들
software campus
참고, Arkadiusz Sokolwski 2015
HttpReponse response = HttpRequest
.create(new URI(“http://www.ocado.com”))
.body(noBody())
.GET();
CompletableFuture<HttpResponse> asyncResp = req.sendAsync();
Thread.sleep(10);
if(!asyncResp.isDone()){
asyncResp.cancel(true);
System.err.println(“timeout”);
return;
}
HttpResponse réponse = asyncResp.get();
Java 95. Java 9에서 자주 사용할만한 것들
. 110 : HTTP 2 Client -2
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에서 자주 사용할만한 것들
software campus
( deprecated )
289 : Deprecate the Applet API
Java 95. Java 9에서 자주 사용할만한 것들
웹 브라우저 업체들의 Java Browser Plug-in의 삭제로 인해, 앞으로 개발되는 Java 프로그
램들은 Web Start 프로그램 형태나 Installable 어플리케이션 형태로 개발 유도
software campus
( deprecated )
211 : Elide Deprecation Warnings on Import Statements
Java 95. Java 9에서 자주 사용할만한 것들
자바 SE 8에서, 자바 컴파일러는 사용되지 않는
유형이 이름으로 가져올 때 또는 사용되지 않는
멤버 (메서드, 필드, 중첩 된 유형) 정적으로
가져올 때 사용 중단 경고를하기 위해 Java 언어
사양의 합리적인 해석이 필요하다.
사용하지 않는 부분의 경고에 대한 부분이
Deprecate 되는 것 같다.
software campus
( deprecated )
214 : Remove GC Combinations Deprecated in JDK 8
Java 95. Java 9에서 자주 사용할만한 것들
이전에 JEP 173를 통해 JDK 8에서 사용되지 않는 한 GC 조합을 제거한다.
software campus
( deprecated )
277 : Enhanced Deprecation
Java 95. Java 9에서 자주 사용할만한 것들
사용되지 않는 주석을 개조하고, API 수명주기를 강화하는 도구를 제공
Java 9
software campus
6. Java 9, 그 이후
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;
}
}
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); }
Java 9
software campus
감사합니다. ^^
Q & A

More Related Content

PPTX
자바9 특징 (Java9 Features)
Chang-Hwan Han
 
PPTX
(Spring Data JPA)게시판 리스트보기_오라클, 스프링부트,페이지나누기
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
PDF
(스프링교육/마이바티스교육학원추천_탑크리에듀)#10.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
PDF
#20.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
PDF
소프트웨어 개선 그룹(Sig) 개발 원칙
Hong Hyo Sang
 
PPTX
Springmvc
HyungKuIm
 
PDF
Spring Boot 2
경륜 이
 
PDF
#19.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
자바9 특징 (Java9 Features)
Chang-Hwan Han
 
(Spring Data JPA)게시판 리스트보기_오라클, 스프링부트,페이지나누기
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
(스프링교육/마이바티스교육학원추천_탑크리에듀)#10.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
#20.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
소프트웨어 개선 그룹(Sig) 개발 원칙
Hong Hyo Sang
 
Springmvc
HyungKuIm
 
Spring Boot 2
경륜 이
 
#19.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
탑크리에듀(구로디지털단지역3번출구 2분거리)
 

What's hot (19)

PDF
Spring batch와 함께 하는 TDD
Sanghyuk Jung
 
PDF
Spring Boot 1
경륜 이
 
PDF
Spring 교육 자료
Hyosang Hong
 
PDF
(IT실무교육/국비지원교육/자바/스프링교육추천)#15.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
PDF
Jpa more
Jonghee Lee
 
PDF
Java 8 & Beyond
Jay Lee
 
PDF
자바모델 클래스에 날개를달자_롬복(Lombok)
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
PPTX
SLiPP 서비스를 Java에서 Scala로 전환하면서 경험담
Javajigi Jaesung
 
PPTX
Pinpoint spring_camp 2015
Woonduk-Kang
 
PDF
(Spring Data JPA)식별자(@Id, Primary Key) 자동 생성, @GeneratedValue의 strategy 속성,Ge...
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
PDF
#32.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
PDF
[오픈소스컨설팅]Spring 3.1 Core
Ji-Woong Choi
 
PDF
Java 기초
Hyosang Hong
 
PDF
Spring boot 를 적용한 전사모니터링 시스템 backend 개발 사례
Jemin Huh
 
PDF
#17.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
PPTX
스프링프레임워크 & 마이바티스 무.료 강의자료 제공 (Spring IoC & DI)_ 구로자바학원/구로오라클학원/구로IT학원
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
PDF
[#9.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)]_재직자환급교육/실업자환급교육/구로IT학원/스프링교...
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
PDF
Tomcat monitoring using_javamelody
중선 곽
 
PDF
JBoss RHQ와 Byteman을 이용한 오픈소스 자바 애플리케이션 모니터링
Ted Won
 
Spring batch와 함께 하는 TDD
Sanghyuk Jung
 
Spring Boot 1
경륜 이
 
Spring 교육 자료
Hyosang Hong
 
(IT실무교육/국비지원교육/자바/스프링교육추천)#15.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
Jpa more
Jonghee Lee
 
Java 8 & Beyond
Jay Lee
 
자바모델 클래스에 날개를달자_롬복(Lombok)
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
SLiPP 서비스를 Java에서 Scala로 전환하면서 경험담
Javajigi Jaesung
 
Pinpoint spring_camp 2015
Woonduk-Kang
 
(Spring Data JPA)식별자(@Id, Primary Key) 자동 생성, @GeneratedValue의 strategy 속성,Ge...
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
#32.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
[오픈소스컨설팅]Spring 3.1 Core
Ji-Woong Choi
 
Java 기초
Hyosang Hong
 
Spring boot 를 적용한 전사모니터링 시스템 backend 개발 사례
Jemin Huh
 
#17.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
스프링프레임워크 & 마이바티스 무.료 강의자료 제공 (Spring IoC & DI)_ 구로자바학원/구로오라클학원/구로IT학원
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
[#9.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)]_재직자환급교육/실업자환급교육/구로IT학원/스프링교...
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
Tomcat monitoring using_javamelody
중선 곽
 
JBoss RHQ와 Byteman을 이용한 오픈소스 자바 애플리케이션 모니터링
Ted Won
 
Ad

Similar to Java9 특징 훑어보기 (20)

PPTX
공유 Jdk 7-1-short introduction
knight1128
 
PDF
1. let's start java
SeonMan
 
PPTX
20130201 java deploy
Sukjin Yun
 
PPTX
2.apache spark 실습
동현 강
 
PDF
Gradle 한번 살펴보기
Junseo Youn
 
PPTX
Spring Boot + React + Gradle in VSCode
dpTablo
 
PPTX
Open jdk
Il-woo Lee
 
PPTX
IBM JVM 소개 - Oracle JVM 과 비교
JungWoon Lee
 
PPTX
N02 gae v1.1_20110220
Software in Life
 
PPTX
Java Virtual Machine, Call stack, Java Byte Code
Javajigi Jaesung
 
PDF
안드로이드 빌드: 설탕없는 세계
Leonardo YongUk Kim
 
PPT
WIPI.ppt
jimeyren
 
PDF
okspring3x
Kenu, GwangNam Heo
 
PPTX
스프링프레임워크 & 마이바티스 무.료 강의자료 제공 (Spring IoC & DI)_ 구로자바학원/구로오라클학원/구로IT학원
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
PPTX
Scala, Spring-Boot, JPA의 불편하면서도 즐거운 동거
Javajigi Jaesung
 
PPTX
Jdk(java) 7 - 5. invoke-dynamic
knight1128
 
PPTX
3.Spring IoC&DI(spring ioc실습, XML기반)
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
PDF
spring.io를 통해 배우는 spring 개발사례
Daehwan Lee
 
PDF
구글 앱 엔진을 이용한 소셜네트워크게임(SNG) 개발(2)
mosaicnet
 
PDF
Java_01 기초
Hong Hyo Sang
 
공유 Jdk 7-1-short introduction
knight1128
 
1. let's start java
SeonMan
 
20130201 java deploy
Sukjin Yun
 
2.apache spark 실습
동현 강
 
Gradle 한번 살펴보기
Junseo Youn
 
Spring Boot + React + Gradle in VSCode
dpTablo
 
Open jdk
Il-woo Lee
 
IBM JVM 소개 - Oracle JVM 과 비교
JungWoon Lee
 
N02 gae v1.1_20110220
Software in Life
 
Java Virtual Machine, Call stack, Java Byte Code
Javajigi Jaesung
 
안드로이드 빌드: 설탕없는 세계
Leonardo YongUk Kim
 
WIPI.ppt
jimeyren
 
okspring3x
Kenu, GwangNam Heo
 
스프링프레임워크 & 마이바티스 무.료 강의자료 제공 (Spring IoC & DI)_ 구로자바학원/구로오라클학원/구로IT학원
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
Scala, Spring-Boot, JPA의 불편하면서도 즐거운 동거
Javajigi Jaesung
 
Jdk(java) 7 - 5. invoke-dynamic
knight1128
 
3.Spring IoC&DI(spring ioc실습, XML기반)
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
spring.io를 통해 배우는 spring 개발사례
Daehwan Lee
 
구글 앱 엔진을 이용한 소셜네트워크게임(SNG) 개발(2)
mosaicnet
 
Java_01 기초
Hong Hyo Sang
 
Ad

Java9 특징 훑어보기

  • 2. Java 9 software campus 1. Java 버젼 히스토리 2. 알아두면 좋을 내용들 - JCP, JSR, JEP 3. Java 9 에서 변화된 부분 4. Jigsaw project (주요 프로젝트) 5. Java 9에서 자주 사용할만한 것들 6. Java 9, 그 이후
  • 3. Java 9 software campus 1. Java 의 버젼 히스토리
  • 4. 1. Java의 버젼 히스토리 software campus Java 9 Java 의 현재까지의 버젼 출시과정 참고, Arkadiusz Sokolwski 2015
  • 5. 1. Java의 버젼 히스토리 software campus Java 9 http://openjdk.java.net/projects/jdk9/ 연기
  • 6. 1. Java의 버젼 히스토리 software campus Java 9 Java 9 릴리즈 되는 시점 - 연기이유 https://www.infoq.com/news/2015/12/oracle-confirms-delayed-java9 Project Jigsaw
  • 7. Java 9 software campus 2. 알아두면 좋을 내용들 - JCP, JSR, JEP
  • 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
  • 13. Java 9 software campus 3. Java 9 에서 변화된 부분
  • 14. 3. Java 9 에서 변화된 부분 software campus Java 9 http://openjdk.java.net/projects/jdk9/
  • 15. 3. Java 9 에서 변화된 부분 software campus Java 9 JEPs targeted to JDK 9, so far
  • 16. 3. Java 9 에서 변화된 부분 software campus Java 9 JEPs targeted to JDK 9, so far
  • 17. 3. Java 9 에서 변화된 부분 software campus Java 9 JEPs targeted to JDK 9, so far - 체크 해볼만한 내용들 ( Jigsaw Project ) 200 : The Modular JDK 201 : Modular Source Code 275 : Modular Java Application Packaging 110 : HTTP 2 Client 223 : New Version-String Scheme ( deprecated ) 289 : Deprecate the Applet API 211 : Elide Deprecation Warnings on Import Statements 214 : Remove GC Combinations Deprecated in JDK 8 277 : Enhanced Deprecation 224 : HTML5 javadoc 222 : jshell : The Java Shell ( Read-Eval-Print Loop)
  • 18. Java 9 software campus 4. Jigsaw project (주요 프로젝트)
  • 19. 4. Jigsaw project (주요 프로젝트) software campus Java 9 Jigsaw Project jigsaw 는 프로젝트로 따로 떨어져 있으며, JSR 번호 중에 옆에 적혀있는 것들을 체크해 보면 될것 같다.
  • 20. 4. Jigsaw project (주요 프로젝트) software campus Java 9
  • 21. software campus Java 9 Jigsaw 그림 4. Jigsaw project (주요 프로젝트) Java 9
  • 22. software campus Eclipse Neon with Java 9 Jigsaw 4. Jigsaw project (주요 프로젝트) Java 9
  • 23. software campus Java 8 4. Jigsaw project (주요 프로젝트) Java 9 Java 9
  • 24. software campus Motivation : . JAR/classpath hell reduction . unexpressed/transitive dependencies . manual dependencies management . hide some (private) packages; com.sun.misc.* . system instead of manual security . JRE size reduction 4. Jigsaw project (주요 프로젝트) Java 9
  • 25. software campus Jigsaw 자주 사용하는 라이브러리 그림 4. Jigsaw project (주요 프로젝트) Java 9
  • 26. software campus Modules for Java - Jigsaw 4. Jigsaw project (주요 프로젝트) Java 9
  • 27. software campus Jigsaw example module com.foo.app{ requires com.foo.bar; requires java.sql; } module java.sql{ requires java.logging; requires java.xml; exports java.sql; exports javax.sql; exports javax.transaction.xa; } 4. Jigsaw project (주요 프로젝트) Java 9
  • 28. software campus Jigsaw example 4. Jigsaw project (주요 프로젝트) Java 9
  • 29. software campus Jigsaw - implied readability module java.sql{ requires public java.logging; requires public java.xml; exports java.sql; exports javax.sql; exports javax.transaction.xa; } 4. Jigsaw project (주요 프로젝트) Java 9
  • 30. software campus Jigsaw - implied readability String url = …; Properties props = …; Driver d = DriverManager.getDriver(url); Connection c = d.connect(url,props); d.getParentLogger().info(“Connection acquired”); 4. Jigsaw project (주요 프로젝트) Java 9
  • 31. software campus implied readability 4. Jigsaw project (주요 프로젝트) Java 9
  • 32. software campus Jigsaw - services module com.mysql.jdbc{ requires java.sql; requires org.slf4j; exports com.mysql.jdbc; } 4. Jigsaw project (주요 프로젝트) Java 9
  • 33. software campus Jigsaw - services module java.sql{ requires public java.logging; requires public java.xml; exports java.sql; exports javax.sql; exports javax.transaction.xa; uses java.sql.Driver; } 4. Jigsaw project (주요 프로젝트) Java 9
  • 34. software campus Jigsaw - services module com.mysql.jdbc{ requires java.sql; requires org.slf4j; exports com.mysql.jdbc; provides java.sql.Driver with com.mysql.jdbc.Driver; } 4. Jigsaw project (주요 프로젝트) Java 9
  • 35. software campus Jigsaw - services 4. Jigsaw project (주요 프로젝트) Java 9
  • 36. software campus Jigsaw - qualified exports module java.base{ … exports sun.reflect to java.corba, java.logging, java.sql, java.sql.rowset, jdk.scripting.nashorn; } 4. Jigsaw project (주요 프로젝트) Java 9
  • 37. software campus Jigsaw - qualified exports 4. Jigsaw project (주요 프로젝트) Java 9
  • 38. Java 9 software campus 5. Java 9에서 자주 사용할만한 것들 . 223 : New Version-String Scheme . 110 : HTTP 2 Client ( deprecated ) . 289 : Deprecate the Applet API . 211 : Elide Deprecation Warnings on Import Statements . 214 : Remove GC Combinations Deprecated in JDK 8 . 277 : Enhanced Deprecation
  • 39. software campus Java 9 . 223 : New Version-String Scheme -1 참고, Arkadiusz Sokolwski 2015 5. Java 9에서 자주 사용할만한 것들
  • 40. software campus 참고, Arkadiusz Sokolwski 2015 • MAJOR.MINOR.SECURITY 1.8.0 -> 8.0.0 1.8.0_05 -> 8.0.1 1.8.0_11 -> 8.0.2 1.8.0_20 -> 8.1.2 1.8.0_25 -> 8.1.3 Java 95. Java 9에서 자주 사용할만한 것들 . 223 : New Version-String Scheme -2
  • 41. software campus Java 95. Java 9에서 자주 사용할만한 것들 . 223 : New Version-String Scheme -3 http://openjdk.java.net/jeps/223
  • 42. software campus Java 9 참고, Arkadiusz Sokolwski 2015 HttpReponse response = HttpRequest .create(new URI(“http://www.ocado.com”)) .body(noBody()) .GET().send(); int responseCode = response.responseCode(); String responseBody = response.body(asString()); System.out.println(responseBody); . 110 : HTTP 2 Client -1 5. Java 9에서 자주 사용할만한 것들
  • 43. software campus 참고, Arkadiusz Sokolwski 2015 HttpReponse response = HttpRequest .create(new URI(“http://www.ocado.com”)) .body(noBody()) .GET(); CompletableFuture<HttpResponse> asyncResp = req.sendAsync(); Thread.sleep(10); if(!asyncResp.isDone()){ asyncResp.cancel(true); System.err.println(“timeout”); return; } HttpResponse réponse = asyncResp.get(); Java 95. Java 9에서 자주 사용할만한 것들 . 110 : HTTP 2 Client -2
  • 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 수명주기를 강화하는 도구를 제공
  • 49. Java 9 software campus 6. Java 9, 그 이후
  • 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); }