SlideShare une entreprise Scribd logo
1  sur  52
Télécharger pour lire hors ligne
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

Contenu connexe

Tendances

Spring batch와 함께 하는 TDD
Spring batch와 함께 하는 TDDSpring batch와 함께 하는 TDD
Spring batch와 함께 하는 TDDSanghyuk Jung
 
Spring 교육 자료
Spring 교육 자료Spring 교육 자료
Spring 교육 자료Hyosang Hong
 
(IT실무교육/국비지원교육/자바/스프링교육추천)#15.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)
(IT실무교육/국비지원교육/자바/스프링교육추천)#15.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)(IT실무교육/국비지원교육/자바/스프링교육추천)#15.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)
(IT실무교육/국비지원교육/자바/스프링교육추천)#15.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)탑크리에듀(구로디지털단지역3번출구 2분거리)
 
Java 8 & Beyond
Java 8 & BeyondJava 8 & Beyond
Java 8 & BeyondJay Lee
 
SLiPP 서비스를 Java에서 Scala로 전환하면서 경험담
SLiPP 서비스를 Java에서 Scala로 전환하면서 경험담SLiPP 서비스를 Java에서 Scala로 전환하면서 경험담
SLiPP 서비스를 Java에서 Scala로 전환하면서 경험담Javajigi Jaesung
 
Pinpoint spring_camp 2015
Pinpoint spring_camp 2015Pinpoint spring_camp 2015
Pinpoint spring_camp 2015Woonduk-Kang
 
#32.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...
#32.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...#32.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...
#32.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...탑크리에듀(구로디지털단지역3번출구 2분거리)
 
[오픈소스컨설팅]Spring 3.1 Core
[오픈소스컨설팅]Spring 3.1 Core [오픈소스컨설팅]Spring 3.1 Core
[오픈소스컨설팅]Spring 3.1 Core Ji-Woong Choi
 
Spring boot 를 적용한 전사모니터링 시스템 backend 개발 사례
Spring boot 를 적용한 전사모니터링 시스템 backend 개발 사례Spring boot 를 적용한 전사모니터링 시스템 backend 개발 사례
Spring boot 를 적용한 전사모니터링 시스템 backend 개발 사례Jemin Huh
 
#17.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
#17.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...#17.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
#17.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...탑크리에듀(구로디지털단지역3번출구 2분거리)
 
스프링프레임워크 & 마이바티스 무.료 강의자료 제공 (Spring IoC & DI)_ 구로자바학원/구로오라클학원/구로IT학원
스프링프레임워크 & 마이바티스 무.료 강의자료 제공 (Spring IoC & DI)_ 구로자바학원/구로오라클학원/구로IT학원스프링프레임워크 & 마이바티스 무.료 강의자료 제공 (Spring IoC & DI)_ 구로자바학원/구로오라클학원/구로IT학원
스프링프레임워크 & 마이바티스 무.료 강의자료 제공 (Spring IoC & DI)_ 구로자바학원/구로오라클학원/구로IT학원탑크리에듀(구로디지털단지역3번출구 2분거리)
 
[#9.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)]_재직자환급교육/실업자환급교육/구로IT학원/스프링교...
[#9.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)]_재직자환급교육/실업자환급교육/구로IT학원/스프링교...[#9.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)]_재직자환급교육/실업자환급교육/구로IT학원/스프링교...
[#9.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)]_재직자환급교육/실업자환급교육/구로IT학원/스프링교...탑크리에듀(구로디지털단지역3번출구 2분거리)
 
Tomcat monitoring using_javamelody
Tomcat monitoring using_javamelodyTomcat monitoring using_javamelody
Tomcat monitoring using_javamelody중선 곽
 
JBoss RHQ와 Byteman을 이용한 오픈소스 자바 애플리케이션 모니터링
JBoss RHQ와 Byteman을 이용한 오픈소스 자바 애플리케이션 모니터링JBoss RHQ와 Byteman을 이용한 오픈소스 자바 애플리케이션 모니터링
JBoss RHQ와 Byteman을 이용한 오픈소스 자바 애플리케이션 모니터링Ted Won
 

Tendances (19)

Spring batch와 함께 하는 TDD
Spring batch와 함께 하는 TDDSpring batch와 함께 하는 TDD
Spring batch와 함께 하는 TDD
 
Spring Boot 1
Spring Boot 1Spring Boot 1
Spring Boot 1
 
Spring 교육 자료
Spring 교육 자료Spring 교육 자료
Spring 교육 자료
 
(IT실무교육/국비지원교육/자바/스프링교육추천)#15.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)
(IT실무교육/국비지원교육/자바/스프링교육추천)#15.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)(IT실무교육/국비지원교육/자바/스프링교육추천)#15.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)
(IT실무교육/국비지원교육/자바/스프링교육추천)#15.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)
 
Jpa more
Jpa moreJpa more
Jpa more
 
Java 8 & Beyond
Java 8 & BeyondJava 8 & Beyond
Java 8 & Beyond
 
자바모델 클래스에 날개를달자_롬복(Lombok)
자바모델 클래스에 날개를달자_롬복(Lombok)자바모델 클래스에 날개를달자_롬복(Lombok)
자바모델 클래스에 날개를달자_롬복(Lombok)
 
SLiPP 서비스를 Java에서 Scala로 전환하면서 경험담
SLiPP 서비스를 Java에서 Scala로 전환하면서 경험담SLiPP 서비스를 Java에서 Scala로 전환하면서 경험담
SLiPP 서비스를 Java에서 Scala로 전환하면서 경험담
 
Pinpoint spring_camp 2015
Pinpoint spring_camp 2015Pinpoint spring_camp 2015
Pinpoint spring_camp 2015
 
(Spring Data JPA)식별자(@Id, Primary Key) 자동 생성, @GeneratedValue의 strategy 속성,Ge...
(Spring Data JPA)식별자(@Id, Primary Key) 자동 생성, @GeneratedValue의 strategy 속성,Ge...(Spring Data JPA)식별자(@Id, Primary Key) 자동 생성, @GeneratedValue의 strategy 속성,Ge...
(Spring Data JPA)식별자(@Id, Primary Key) 자동 생성, @GeneratedValue의 strategy 속성,Ge...
 
#32.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...
#32.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...#32.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...
#32.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...
 
[오픈소스컨설팅]Spring 3.1 Core
[오픈소스컨설팅]Spring 3.1 Core [오픈소스컨설팅]Spring 3.1 Core
[오픈소스컨설팅]Spring 3.1 Core
 
Java 기초
Java 기초Java 기초
Java 기초
 
Spring boot 를 적용한 전사모니터링 시스템 backend 개발 사례
Spring boot 를 적용한 전사모니터링 시스템 backend 개발 사례Spring boot 를 적용한 전사모니터링 시스템 backend 개발 사례
Spring boot 를 적용한 전사모니터링 시스템 backend 개발 사례
 
#17.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
#17.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...#17.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
#17.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
 
스프링프레임워크 & 마이바티스 무.료 강의자료 제공 (Spring IoC & DI)_ 구로자바학원/구로오라클학원/구로IT학원
스프링프레임워크 & 마이바티스 무.료 강의자료 제공 (Spring IoC & DI)_ 구로자바학원/구로오라클학원/구로IT학원스프링프레임워크 & 마이바티스 무.료 강의자료 제공 (Spring IoC & DI)_ 구로자바학원/구로오라클학원/구로IT학원
스프링프레임워크 & 마이바티스 무.료 강의자료 제공 (Spring IoC & DI)_ 구로자바학원/구로오라클학원/구로IT학원
 
[#9.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)]_재직자환급교육/실업자환급교육/구로IT학원/스프링교...
[#9.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)]_재직자환급교육/실업자환급교육/구로IT학원/스프링교...[#9.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)]_재직자환급교육/실업자환급교육/구로IT학원/스프링교...
[#9.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)]_재직자환급교육/실업자환급교육/구로IT학원/스프링교...
 
Tomcat monitoring using_javamelody
Tomcat monitoring using_javamelodyTomcat monitoring using_javamelody
Tomcat monitoring using_javamelody
 
JBoss RHQ와 Byteman을 이용한 오픈소스 자바 애플리케이션 모니터링
JBoss RHQ와 Byteman을 이용한 오픈소스 자바 애플리케이션 모니터링JBoss RHQ와 Byteman을 이용한 오픈소스 자바 애플리케이션 모니터링
JBoss RHQ와 Byteman을 이용한 오픈소스 자바 애플리케이션 모니터링
 

Similaire à Java9 특징 훑어보기

공유 Jdk 7-1-short introduction
공유 Jdk 7-1-short introduction공유 Jdk 7-1-short introduction
공유 Jdk 7-1-short introductionknight1128
 
1. let's start java
1. let's start java1. let's start java
1. let's start javaSeonMan
 
20130201 java deploy
20130201 java deploy20130201 java deploy
20130201 java deploySukjin Yun
 
2.apache spark 실습
2.apache spark 실습2.apache spark 실습
2.apache spark 실습동현 강
 
Gradle 한번 살펴보기
Gradle 한번 살펴보기Gradle 한번 살펴보기
Gradle 한번 살펴보기Junseo Youn
 
Spring Boot + React + Gradle in VSCode
Spring Boot + React + Gradle in VSCodeSpring Boot + React + Gradle in VSCode
Spring Boot + React + Gradle in VSCodedpTablo
 
IBM JVM 소개 - Oracle JVM 과 비교
IBM JVM 소개 - Oracle JVM 과 비교IBM JVM 소개 - Oracle JVM 과 비교
IBM JVM 소개 - Oracle JVM 과 비교JungWoon Lee
 
Java Virtual Machine, Call stack, Java Byte Code
Java Virtual Machine, Call stack, Java Byte CodeJava Virtual Machine, Call stack, Java Byte Code
Java Virtual Machine, Call stack, Java Byte CodeJavajigi Jaesung
 
안드로이드 빌드: 설탕없는 세계
안드로이드 빌드: 설탕없는 세계안드로이드 빌드: 설탕없는 세계
안드로이드 빌드: 설탕없는 세계Leonardo YongUk Kim
 
스프링프레임워크 & 마이바티스 무.료 강의자료 제공 (Spring IoC & DI)_ 구로자바학원/구로오라클학원/구로IT학원
스프링프레임워크 & 마이바티스 무.료 강의자료 제공 (Spring IoC & DI)_ 구로자바학원/구로오라클학원/구로IT학원스프링프레임워크 & 마이바티스 무.료 강의자료 제공 (Spring IoC & DI)_ 구로자바학원/구로오라클학원/구로IT학원
스프링프레임워크 & 마이바티스 무.료 강의자료 제공 (Spring IoC & DI)_ 구로자바학원/구로오라클학원/구로IT학원탑크리에듀(구로디지털단지역3번출구 2분거리)
 
Scala, Spring-Boot, JPA의 불편하면서도 즐거운 동거
Scala, Spring-Boot, JPA의 불편하면서도 즐거운 동거Scala, Spring-Boot, JPA의 불편하면서도 즐거운 동거
Scala, Spring-Boot, JPA의 불편하면서도 즐거운 동거Javajigi Jaesung
 
Jdk(java) 7 - 5. invoke-dynamic
Jdk(java) 7 - 5. invoke-dynamicJdk(java) 7 - 5. invoke-dynamic
Jdk(java) 7 - 5. invoke-dynamicknight1128
 
spring.io를 통해 배우는 spring 개발사례
spring.io를 통해 배우는 spring 개발사례spring.io를 통해 배우는 spring 개발사례
spring.io를 통해 배우는 spring 개발사례Daehwan Lee
 
구글 앱 엔진을 이용한 소셜네트워크게임(SNG) 개발(2)
구글 앱 엔진을 이용한 소셜네트워크게임(SNG) 개발(2)구글 앱 엔진을 이용한 소셜네트워크게임(SNG) 개발(2)
구글 앱 엔진을 이용한 소셜네트워크게임(SNG) 개발(2)mosaicnet
 

Similaire à Java9 특징 훑어보기 (20)

공유 Jdk 7-1-short introduction
공유 Jdk 7-1-short introduction공유 Jdk 7-1-short introduction
공유 Jdk 7-1-short introduction
 
1. let's start java
1. let's start java1. let's start java
1. let's start java
 
20130201 java deploy
20130201 java deploy20130201 java deploy
20130201 java deploy
 
2.apache spark 실습
2.apache spark 실습2.apache spark 실습
2.apache spark 실습
 
Gradle 한번 살펴보기
Gradle 한번 살펴보기Gradle 한번 살펴보기
Gradle 한번 살펴보기
 
Spring Boot + React + Gradle in VSCode
Spring Boot + React + Gradle in VSCodeSpring Boot + React + Gradle in VSCode
Spring Boot + React + Gradle in VSCode
 
Open jdk
Open jdkOpen jdk
Open jdk
 
IBM JVM 소개 - Oracle JVM 과 비교
IBM JVM 소개 - Oracle JVM 과 비교IBM JVM 소개 - Oracle JVM 과 비교
IBM JVM 소개 - Oracle JVM 과 비교
 
N02 gae v1.1_20110220
N02 gae v1.1_20110220N02 gae v1.1_20110220
N02 gae v1.1_20110220
 
Java Virtual Machine, Call stack, Java Byte Code
Java Virtual Machine, Call stack, Java Byte CodeJava Virtual Machine, Call stack, Java Byte Code
Java Virtual Machine, Call stack, Java Byte Code
 
안드로이드 빌드: 설탕없는 세계
안드로이드 빌드: 설탕없는 세계안드로이드 빌드: 설탕없는 세계
안드로이드 빌드: 설탕없는 세계
 
WIPI.ppt
WIPI.pptWIPI.ppt
WIPI.ppt
 
okspring3x
okspring3xokspring3x
okspring3x
 
스프링프레임워크 & 마이바티스 무.료 강의자료 제공 (Spring IoC & DI)_ 구로자바학원/구로오라클학원/구로IT학원
스프링프레임워크 & 마이바티스 무.료 강의자료 제공 (Spring IoC & DI)_ 구로자바학원/구로오라클학원/구로IT학원스프링프레임워크 & 마이바티스 무.료 강의자료 제공 (Spring IoC & DI)_ 구로자바학원/구로오라클학원/구로IT학원
스프링프레임워크 & 마이바티스 무.료 강의자료 제공 (Spring IoC & DI)_ 구로자바학원/구로오라클학원/구로IT학원
 
Scala, Spring-Boot, JPA의 불편하면서도 즐거운 동거
Scala, Spring-Boot, JPA의 불편하면서도 즐거운 동거Scala, Spring-Boot, JPA의 불편하면서도 즐거운 동거
Scala, Spring-Boot, JPA의 불편하면서도 즐거운 동거
 
Jdk(java) 7 - 5. invoke-dynamic
Jdk(java) 7 - 5. invoke-dynamicJdk(java) 7 - 5. invoke-dynamic
Jdk(java) 7 - 5. invoke-dynamic
 
3.Spring IoC&DI(spring ioc실습, XML기반)
3.Spring IoC&DI(spring ioc실습, XML기반)3.Spring IoC&DI(spring ioc실습, XML기반)
3.Spring IoC&DI(spring ioc실습, XML기반)
 
spring.io를 통해 배우는 spring 개발사례
spring.io를 통해 배우는 spring 개발사례spring.io를 통해 배우는 spring 개발사례
spring.io를 통해 배우는 spring 개발사례
 
구글 앱 엔진을 이용한 소셜네트워크게임(SNG) 개발(2)
구글 앱 엔진을 이용한 소셜네트워크게임(SNG) 개발(2)구글 앱 엔진을 이용한 소셜네트워크게임(SNG) 개발(2)
구글 앱 엔진을 이용한 소셜네트워크게임(SNG) 개발(2)
 
Java_01 기초
Java_01 기초Java_01 기초
Java_01 기초
 

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); }