JAVA 7 정리
1. Binary Literals
숫자 리터럴 중간에 언더스코어( _ ) 사용
가독성을 높이기 위해 적용된것 같습니다.
' _ ' 는 숫자 사이 어디에든 넣을 수 있고, 언더스코어를 둘이상 붙여 쓸 수도 있습니다.
2. String in Switch
switch 문에는 int와 Enum타입만 사용할 수 있었지만, JDK7부터는 String도 사용가능하다.
null 값이 들어오면, java.lang.NullPointerException (NPE) 에러가 발생합니다.
3. Improved Type Inference for Generic Instance Creation (diamond)
기존(JAVA 6 ) 에서 선언 방식
아래와 같이 제네릭 객체를 생성할 때, 타입 파라미터를 명시해 줬어야 했다.
JAVA7
제네릭 객체를 생성할 때, 타입 파라미터를 명시하지 않아도 컴파일러가 자동으로 채워준다.
4. try-with-resource statement
Automatic Resource Management
하나 또는 그 이상의 리소스를 가지는 try 구문안에서 리소스를 자동으로 close시켜주는 것을 말합니다. 자원을 사용한 후 적절하게 해제하는 것이 어렵기 때문에 언어적으로 지원을 합니다.
기존에서 리소스 close 하는 방식
JAVA 7 에서 리소스 close 하는 방식
위에 소스에서 볼수 있듯이 finally 에서 resource close하는 부분이 java 7 에서는 제거되었습니다.
try with resource에 의해 자동으로 관리가 될려면?!
1. 자동으로 관리가 될 클래스는 AutoCloseable 인터페이스를 구현해야 합니다.
위의 BufferedReader는 디컴파일로 따라가다 보면 AutoCloseable이 구현되어 있습니다. Closeable 클래스가 AutoCloseable을 상속받도록 수정되었기 때문입니다.
2. try () 안에 리소스 생성을 해야 합니다.
try(Resource resource = new Resource()) 이렇게 작성하면, try 블록안에서 예외가 발생하든 하지 않든 반드시 close가 호출됨을 보장합니다.
** try with resource는 획득 > 사용 > 반환의 패턴으로 사용되는 자원만 지원합니다.
5. improved exception handling (multi-catch)
1. multi-catch
하나의 catch절에서 여러 타입의 예외를 처리할 수 있는 multi catch 기능
기존 catch 구문
java 7 에서 multi catch 적용
2. rethrow exception ( more precise rethrow )
기존에는 크게 Exception 등으로 퉁쳐서 메소드의 발생에러를 작성했다면, Java 7에서는 좀 더 정확하게 보낼 수 있습니다.
분명한 에러를 선언하고 싶다면 아래 조건을 만족하면 됩니다.
* final 이거나 effectively final 이다. effectively final은 JDK7에서 추가된 개념으로, final로 선언되지 않았지만, 한번 값이 할당된 후 변경되는 일이 없는 경우를 가르킨다.
* try 절에서 발생할 수 있다.
* 앞선 catch 절에서 잡은 것이 아닌다.
* 예외 파라미터에 대입할 수 있다.
기존 throw 구문
java 7 에서 throw 구문
8. JAVA NIO 2.0
기존 java.io.File을 보완하는 것이 아니라 완전히 대체하는 것입니다. JDK7에서는 File 클래스가 Deprecate 되지는 않지만 사용을 자제할 것을 권장하고 있습니다.
Path 클래스 : 경로를 다루는 메서드들을 제공하는 클래스
Files 클래스 : 파일을 다루는 메서드들을 제공하는 클래스
9. Fork/Join Framework
재귀 알고리즘을 병렬적으로 수행하여 멀티프로세서 환경을 충분히 활용할 수 있도록 해주는 프레임워크
설명 wiki : http://www.oracle.com/technetwork/articles/java/fork-join-422606.html
10. G1 Garbage Collector
GC 관련 설명 : http://d2.naver.com/helloworld/1329
GC 참조 : http://logonjava.blogspot.kr/2015/08/java-g1-gc-full-gc.html
참조 본문은 아래와 같습니다.
* NAVER D2
* http://www.jpstory.net/2014/06/java-7-features/