Java7에서의 중요한 변화들

1 분 소요

이직을 위해 면접을 진행 중 Java 버전 별로 전부 사용해 보았는데, 각 버전별 차이점에 대해 설명해 보아라. 라는 면접 질문을 받았었다. 여러가지 자바 버전을 실제로 사용해 보았지만 자바8의 람다, 스트림과 같은 큰 변화만 대답했을 뿐 6,7 버전의 변화들에 대해 대답하지 못하여, 이를 정리 해 보고자 글을 작성하게 되었다.

Java7의 새로운 특징

1. Swich 문에서 String 사용가능

기존의 Swich문은 기본형과, 열거형만 사용이 가능했으나 Java7으로 오게 되면서 새로운 데이터형이 추가되었다. 바로 String형 데이터 타입이다. 그렇기 때문에 기존에 String 데이터 타입의 조건문의 경우 대부분 if문으로 작성 되었으나, Swich 문으로도 작성이 가능하게 되었다.

final String status = "CLOSED";
if (status.equals("OPEN")) {
  
} else if (status.equals("CONNECTED")) {
  
}
...
final String status = "CLOSED";
swich(status) {
  case "OPEN":
  break;
  case "CONNECTION":
  break;
  ...
}

####2. 타입 추론

기존 Java6에서는 객체를 생성할 때 아래와 같이 코드를 작성하였어야 했다.

Map<String, Stirng> map = new HashMap<String, String>();

하지만 Java7에서는 컴파일 단계에서 타입추론을 해주기 때문에 아래와 같이 불필요한(?) 타입을 명시하는 코드를 작성할 필요가 없다.

Map<Stirng, String> map = new Hashmap<>();

3. Multi-Exception 처리

코드를 작성하면서 아래와 같이 복잡한 예외처리를 많이 작성하게 될 것이다.

try {
  
} catch (ExceptionOne e) {
    log.error(e.getMessage());
} catch (ExceptionTwo e) {
    log.error(e.getMessage());
} catch (Exception e) {
    log.error(e.getMessage());
}

예외별로 처리 로직이 다를 경우엔 관계가 없으나, 같은 처리 로직일 경우에는 가독성이 떨어지는 코드가 되버리곤 한다. 아래와 같이 Multi-Exception으로 코드를 작성하게 되면 가독성과 코드 유지보수성을 높힐 수 있다.

try {
  
} catch (ExceptionOne | ExceptionTwo e) {
    log.error(e.getMessage() + "ExceptionOne, ExceptionTwo");
} catch (Exception e) {
    log.error(e.getMessage());
}

이것 외에도 jvm 성능향상, Fork/Join 지원 등 다양한 추가사항들이 있지만 많이 사용하는 사항들 위주로 간단하게 정리를 진행하였다.

태그:

카테고리:

업데이트:

댓글남기기