JDK 7 버전이 릴리즈 된지 얼마 되지 않았다.
두 사람이 나누는 대담을 통해 JDK 7 에 깊이 빠져들어가보자.
#1 : Modularity
Host: Ed Ort, Senior Staff Information Engineer, Sun Microsystems
Guest: Danny Coward, Chief Architect for Client Software at Sun Microsystems
Guest: Danny Coward, Chief Architect for Client Software at Sun Microsystems
두 사람이 나누는 대담을 통해 JDK 7 에 깊이 빠져들어가보자.
JDK 7 : Top 5 New Features
#1 : Modularity
#2 : Multi-Language
#3 : New Garbage Collectors
#4 : Nio.2 File System APIs
#5 : Swing API Additions
#1 : Modularity
// Declaring that a class belongs to a module:
module M;
package P;
public class Foo {...}
//Defining a module in a module-info.java file
module M @1.0 {
requires N @2.1;
requires L @0.5;
}
Java SE 7 : Project Jigsaw
http://jcp.org/en/jsr/detail?id=294
- Low Level Modularity System in JDK 7
- Breaking Up the JDK 7 Code
- Packaging Format
- Uses Java Language Modularity(JSR 294) // ㅡㅅ-);; JSR 은 뭐지?
http://jcp.org/en/jsr/detail?id=294
아래에 나오는 내용은 "Coin Project"란다.
String animal ="...";※ JDK 7 에서는 switch 에서 case에 char 타입 이외에 String 타입도 사용이 가능하게 됩니다. 조건문이 쉬워지는군요.
if ( animal.equals("dog")) {
takeForWalk(animal);
} else if ( animal.equals("cat")) {
leaveMilkFor(animal);
} else if ( animal.equals("mouse")) {
cleanCageFor(animal);
} else {
leaveOutside(animal);
}
String animal = "...";
switch(animal) {
case "dog" : takeForWalk(animal);
case "cat" : leaveMilkFor(animal);
case "dog" : cleanCageFor(animal);
default : leaveOutside(animal);
}
try {JDK 7 에서는 이렇게 가능하다. Ed Ort 씨 처럼 Ah~~ha~~!!
doWork(file);
} catch ( IOException ioe ) {
logger.log(ioe);
throws ioe;
} catch ( SQLException sqle ) {
logger.log(sqle);
throws sqle;
}
try {
doWork(file);
} catch ( final IOException | SQLException ex ) {
logger.log(ex);
throws ex;
}
Map<String, List<String>> anagrams = new HashMap<String, List<String>>();JDK 7 에서는 이렇게 된다고 한다. ㅡㅅ-)b
Map<String, List<String>> anagrams = new HashMap<>();
Object anObject;JDK 7 에서는 이렇게 바뀐다고 한다. " ?: " 요놈인 건데... ㅡㅅ-)> 요건 뭐가 좋은거지? ?: == null 인건가?
...
if (anObject == null ) {
s = "nothing";
} else {
s = anObject.toString();
}
int i;
...
if ( anInteger == null ) {
i = -1;
} else {
i = anIntegerr;
}
String s = anObject?.toString() ?: "nothing";
int i = anInteger ?:-1;
#2 : Multi-Language : supporting non-Java languages at the VM level
JVM에서의 실행속도를 높인다는 건가? Bytecode를 역동적으로!? 메소드 핸들러를 가볍게!? 최적화를 변동적으로?
Broadening the JVM to Accelerate Runtimes
- Bytecode for Dynamic Invocation
- Lightweight Method Handles
- A Variety Of Other Possible Optimizations
The DaVinci Project
http://openjdk.java.net/projects/mlvm
#3 : New Garbage Collectors - Garbage First,
Predictably Low Pauses + Few Full Garbage Collectors + Good Throughput
Greate for a Wide Variety of Application
#4 : Nio.2 File System APIs
DirectorySearchOperations 라는 클래스가 추가된 듯 하다. 자바로 새로운 파일 시스템을 사용해볼 기회가 있었어야 말이지..ㅡㅅ-);; 흠...
- New Filesystem API File Notifications Directory Operations
- Asynchronous I/O
#5 : Swing API Additions
Java의 Swing API에 대한 불만은 여전히 있었고, ㅡㅅ-);; 추가되었다는 내용을 봐도 불만은 여전히 유지가 될 것 같다. 사용자가 필요에 따라서 자신이 디자인한 부분에 대해서 적용할 수 있도록 해주면 좋지 않을까? ㅡㅅ-)~ 현재 나는 조용히 쓰라는 대로 써야지. ㅎㅎ.
JSR 296 : Swing Application Framework
http://jcp.org/en/jsr/detail?id=296
JDK 7 Milestones Homepage
http://openjdk.java.net/projects/jdk7/milestones/
openJDK Project Homepage
http://openjdk.java.net/project/jdk7/
JDK 7 Project Homepage
https://jdk7.dev.java.net/
The Planetarium Blog
http://blogs.sun.com/theplanetarium/
'허니몬의 IT 이야기 > 프로그래머, '코드 엔지니어'' 카테고리의 다른 글
기술면접 관련 내용 정리 (7) | 2009.09.02 |
---|---|
이번주 나에게 주어진, 학습과제. (0) | 2009.08.30 |
090820, 자바의 정석, Java Tutorials, http://java.sun.com/docs/books/tutorial/index.html (0) | 2009.08.20 |
090810, 프로젝트 발표를 위한 마인드맵 작성 (0) | 2009.08.11 |
Desede 암호화 기능 업데이트(20090801), 자바에서 손쉽게 활용 가능 (0) | 2009.08.01 |