JDK 7 버전이 릴리즈 된지 얼마 되지 않았다.

Host: Ed Ort, Senior Staff Information Engineer, 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
  • Low Level Modularity System in JDK 7
  • Breaking Up the JDK 7 Code
  • Packaging Format
  • Uses Java Language Modularity(JSR 294) // ㅡㅅ-);; JSR 은 뭐지?
http://openjdk.java.net/projects/jigsaw
http://jcp.org/en/jsr/detail?id=294

아래에 나오는 내용은 "Coin Project"란다.


String animal ="...";
   
    if ( animal.equals("dog")) {
        takeForWalk(animal);
    } else if ( animal.equals("cat")) {
        leaveMilkFor(animal);
    } else if ( animal.equals("mouse")) {
        cleanCageFor(animal);
    } else {
        leaveOutside(animal);
    }
※  JDK 7 에서는 switch 에서 case에 char 타입 이외에 String 타입도 사용이 가능하게 됩니다. 조건문이 쉬워지는군요.
    String animal = "...";
   
    switch(animal) {
    case "dog" : takeForWalk(animal);
    case "cat" : leaveMilkFor(animal);
    case "dog" : cleanCageFor(animal);
    default : leaveOutside(animal);
    }

※ Exception 처리
try {
        doWork(file);
    } catch ( IOException ioe ) {
        logger.log(ioe);
        throws ioe;
    } catch ( SQLException sqle ) {
        logger.log(sqle);
        throws sqle;
    }
  JDK 7 에서는 이렇게 가능하다. Ed Ort 씨 처럼 Ah~~ha~~!!
try {
        doWork(file);
    } catch ( final IOException | SQLException ex ) {
        logger.log(ex);
        throws ex;
    }

※ 다음은 Genericㄴ 사용법 : 아직 본인은 generics 사용법에 대해서 익숙하지 못하다. ㅡㅅ-);;;
Map<String, List<String>> anagrams = new HashMap<String, List<String>>();
JDK 7 에서는 이렇게 된다고 한다. ㅡㅅ-)b
Map<String, List<String>> anagrams = new HashMap<>();

※ 다음은 Operator
Object anObject;
    ...
    if (anObject == null ) {
        s = "nothing";
    } else {
        s = anObject.toString();
    }
   
    int i;
    ...
    if ( anInteger == null ) {
        i = -1;
    } else {
        i = anIntegerr;
    }
JDK 7 에서는 이렇게 바뀐다고 한다. " ?:  " 요놈인 건데... ㅡㅅ-)> 요건 뭐가 좋은거지? ?: == null 인건가?
   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
JRuby is the Pioneer
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 과 관련된 홈페이지(MileStone)
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/

JDK 7

The primary goal of this Project is to produce an open-source implementation of the next major revision of the Java SE Platform.

Detailed information on the approved features, as well as information on how to propose additional features, can be found on the features page. The JDK 7 development schedule is divided into a sequence of milestone cycles. Please see the builds and integrations page for detailed build and integration scheduling. A complete calendar of the entire development timeline is also available.

Status: Milestone 4 complete, work on Milestone 5 underway

No showstoppers were identified in build 66, so we declared that to be the final build for M4.

We'll start stabilizing Milestone 5 at build 72, which opens on 2009/8/28. M5 will be complete on or about 2009/9/10.

Comments and questions to: jdk7-dev@openjdk.java.net

Last update: 2009/7/30 23:09 -0700


Milestones

The JDK 7 development schedule is divided into a sequence of milestone cycles, each six to seven weeks in length. There will be no formal beta or early-access releases, as in the past. Major features and other potentially-destabilizing changes will targeted for integration early in a specific milestone. For more information, please see the current draft of the JDK 7 Development Process.

Here is the current high-level milestone schedule, with the features targeted to each cycle:

M1 2009/01/02 – 2009/02/19 (b48) 7 builds
Compressed 64-bit object pointers
Garbage-First GC (G1)
M2 2009/02/20 – 2009/04/02 (b53) 5 builds
JSR 203: More new I/O APIs for the Java platform (NIO.2)
Method to close a URLClassLoader
M3 2009/04/03 – 2009/05/14 (b59) 6 builds JavaOne Preview
Create new platform APIs for forward-ported 6u10 features
JSR 292: VM support for non-Java languages (InvokeDynamic)
SCTP (Stream Control Transmission Protocol)
SDP (Sockets Direct Protocol)
Unicode 5.1
Upgrade class-loader architecture
M4 2009/06/05 – 2009/07/23 (b66) 7 builds
Forward-port 6u10 features
JSR 308: Annotations on Java types
M5 2009/07/24 – 2009/09/10 (b73) 7 builds
Elliptic-curve cryptography (ECC)
JSR 296: Swing application framework
Update the XML stack
M6 2009/09/11 – 2009/10/29 (b80) 7 builds Stabilization begins
JSR TBD: Small language enhancements (Project Coin)
M7 2009/10/30 – 2009/12/24 (b87) 7 builds
M8 2010/01/01 – 2010/02/18 (b94) 7 builds Final milestone

The final milestone cycle, M8, will be followed by a release-candidate period of indeterminate length, but most likely four to eight weeks, after which the final release will be declared.

Some features have been approved for the release but are not yet targeted to a specific milestone. When they are targeted then they'll be added to the above table.

Last update: 2009/7/30 23:09 -0700

진행되는 과정으로 보면 M5의 단계로 들어선 것으로 봐도 되겠습니다. 내년 초면 JDK 7 최종판을 확인해볼 수도 있겠네요. ^^ 이미 http://java.sun.com 에서는 JDK 7에 대한 이야기를 슬며시 내놓고 있습니다. 올해 Java 진영은 JavaFX 1.2(http://www.javafx.com/) 와 이를 기반으로 한 WareHouse(http://java.sun.com/warehouse/), 넷빈즈 6.7(http://www.netbeans.org/) 등의 다양한 라인업을 제공하면서 자신들의 영역을 더욱 확장하려는 것처럼 보입니다. 이제 프로그래머의 길에 발을 들여놓아야만 하는 저로서는 부담되기 그지없는 상황입니다. 넷빈즈는 그저 간단한 자바코드를 작성하여 맛만 보고 있는 중이고, WareHouse(Java Software Store)는 아직 구경도 제대로 못했으며, JavaFX는 배울 엄두를 내지도 못하고 있는 그런 상황입니다. OTL... 배울 것들만 산더미처럼 늘어 가는군요.


우선... 취업 먼저 되었으면 좋겠습니다. ㅠㅅ-) 흑!!
다행인 것은 아직 우리나라에서는 JDK 5 버전으로 개발들이 진행된다는 것이죠. 가만히 보면 우리나라는 새로운 신기술을 적용하기 보다는 조금은 오래된 기술들로 안정된 기술들을 추구하는 모습을 보입니다. 한편으로 좋지만, 한편으로는 씁쓸한 모습입니다. IT 강국(물론 자칭이며 HW에 국한되었던)으로서의 개척정신은 어디로 갔는지... 쯥...

+ Recent posts