2011 Sep 09

- by
Changwoo Park

java7

JAVA7 요약

참고: http://radar.oreilly.com/2011/09/java7-features.html

Diamond Operator

다음과 같이 양쪽에 모두 정의했어야 했는데:

Map<String, List<Trade» trades = new TreeMap<String, List<Trade» ();

이제 한쪽만 해주면 된다:

Map<String, List<Trade» trades = new TreeMap <> ();

<> 이걸 Diamond Operator라고 부른다.

switch..case 문에 string 지원.

String.equals() 메소드를 이용한다.

try{} 구문에서 자동으로 리소스 해제해줌

리소스(Connections, Files, Input/OutStreams, etc) 를 자동으로 close한다. try{} 구문이 끝나면 java.lang.AutoCloseable를 구현한 리소스가 해제된다.

상수에 _ 사용가능

int thousand =  1_000;
int million  =  1_000_000;

예뻐졌다.

exception handling하는 부분이 강화됨

handling 코드가 같은 경우에는 Interface를 구현하던가 아니면 각각 처리했어야 했는데. 단순해짐.

public void newMultiCatch() {
  try {
    methodThatThrowsThreeExceptions();
  } catch (ExceptionOne | ExceptionTwo | ExceptionThree e) {
    // log and deal with all Exceptions
  }
}

New file system API (NIO 2.0)

  • Path, Paths, FileSystem, FileSystems 등등의 인터페이스가 생겨서 파일시스템을 다루기 좀 더 쉬워짐. 기존에 파일시스템을 다루는 문제는 그동안 그지같아서 직접 닦아줘야 했었는데 많은 부분이 강화됨. copy, move, createSymbolicLink같은 것들이 생겼음.

  • File change notifications - 그래서 파일시스템 이벤트를 핸들링할 수 있게됨.

Fork and Join

Multi core을 효율적으로 사용할 수 있도록 ForkJoinPool이라는 게 생겼음.

java.lang.invoke 패키지 추가

invokedynamic라고 부르고 다른 동적언어를 위해 추가됐다고 함.