카테고리 없음

JAVA 7 정리

Choi May 2016. 4. 6. 11:44

1. Binary Literals 

2진수 리터럴 사용가능 
* 십진수로 6인 숫자 표현 
2진수 표현법이 없었는데, 0B or 0b로 표현가능

기존에 있었던 표현
8진수는 숫자 0 뒤에 붙이기
16진수는 0X or 0x 로 표현




숫자 리터럴 중간에 언더스코어( _ ) 사용

가독성을 높이기 위해 적용된것 같습니다.

' _ ' 는 숫자 사이 어디에든 넣을 수 있고, 언더스코어를 둘이상 붙여 쓸 수도 있습니다.





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/