티스토리 뷰

★ Java

Java 7 awesome Features

유쾌한 개발자 anyjava 2010. 11. 17. 02:19
Java 7.0 의 놀라운(?)특징 들에 대해서 간단하게 설명하려 합니다.

아래글의 내용의 링크된 출처에서 참고하여 작성한 것이며, 원문을 한글로 번역 및
나의 개인적인 의견을 첨부한 것입니다.
- 출처
: http://metoojava.wordpress.com/2010/11/15/java-7-awesome-features/

먼저 현재 Java 6을 사용하고 있고 또한 Java 7을 위한 프로젝트가 열심히 진행중인것 같습니다. 새로운 버젼에 대한 관심이 크게 없기에 이에대한 자세한 내용은 더 구글링을 해보아야 할듯 합니다.

Java 7 에서 가장 크고 흥미로운 특징들에 대해서 이제 설명하려 합니다.
간략하게 요약하자면,

- null 체크 방법 개선
- Switch 문 개선
- 멀티예외처리
- 컬렉션 생성자 수정
크게 위 4가지 인것 같습니다. 그럼 위의 내용에 대해 자세하게 설명하도록 하겠습니다.

1. Null-safe Method invocaton :

  자바로 프로그래밍을 하다 보면 NullPointer Exception을 아주 자주 만나게 될것입니다. 심심치않게 만날수 잇는 에러이며, 출처 블로그의 주인장은 구글링을 했을때 약 5,570,000건의 결과가 검색된다고 합니다. 이만큼 자바프로그래머를 괴롭히는 예외가 아닌가 하는 생각이듭니다.
  이 예외처리를 위해 노가다가 장난 아니였는데, 이게 된다면 이제 좀 코딩이 편리해 지지 않을까 하는 생각이 듭니다.

 현재는 null 체크를 위해 아래와 같은 코드를 사용합니다.

01 public String getPostcode( Person person ) {
02     if( person != null )
03         Address address = person.getAddress();
04     if( address != null )
05         return address.getPostcode();
06     return null;
07 }

하지만, Java 7 에서는 아래와 같이 사용이 가능합니다!
01 public String getPostcode( Person person ) {
02     return person?.getAddress()?.getPostcode();
03 }

위와 같이 4라인의 코드가 단 한라인으로 표현이 가능합니다. "?."연산자는 해당 객체변수가 null 이라면 null을 리턴하고 있습니다. 굳이 null 체크를 해줘야하는 수고가 더는 것입니다. (왜 이제야 이게 나왔을까요..... ㅜㅜ)

2. String in Switch Statements

 
Java 6 까지의 버전에서는 Switch-case 문에서 case 조건으로 판단할수 잇는 데이터 형은 원시형 데이터로 제한되어 있었습니다. (예를 들어, int, char, long etc )
하지만, Java 7버젼에서는 String 타입을 지원하면서 좀더 가독성이 높은 코드를 만들수 있겠군요. 예전에는 가독성을 높이기 위해 정수형 상수를 지정해서 사용했다면, Java 7에서는 String으로 바로 사용하는게 훨씬 편해질것 같습니다.
( 음.. 근데 성능면에서는 어떤게 빠를지... 이전 정수형 타입으로 하는게 빠르겟죠? )

3. Multi-Exception catch

  여러분들은 종종 자바의 예외처리때문에 코딩하는데 어려움이 많을때가 있었을 겁니다. 예외처리를 알아서 해주면 좋겠지만.. 그건 희망사항일 뿐이고, 그나마 좀던 간편하게 작성할수 있어서 좋은것 같습니다.

  예를들어 소켓통신 프로그래밍을 한다고 할때 예외처리는 다음과 같이 다중으로 catch 문을 사용해야 했습니다.

01  try {
02      ...... // IO 작업
03  } catch( IOException e ) {
04      e.printStacktrace();
05  } catch( Exception e2 ) [
06      System.out.println(" Exception : " + e2);
07  }
이제 Java 7 부터는 이것을 아래와 같이 좀더 간단하게 코딩이 가능합니다.

01 try {
02     block of statement
03 } catch( IOException e | Exception e2 ) {
04     block of statement
05 }

4. Bracket Notation for Collection

  가장많이 사용하는 ArrayList와 같은 컬렉션을 이용할때, 선언과 동시이 초기화를 하는 방법이 존재하지 않아 상당히 불편했을 겁니다. 저또한 그랬구요. 배열과 같이 한방에 초기화가 된다면 좋았을텐데....
이제 Java 7 부터는 이를 지원한다고 합니다. 별다른 부연설명 없이 아래 코드를 보시는게 빠를것 같습니다.

01 Collection<String> c = new ArrayList();
02 c.add("one");
03 c.add("two");
04 c.add("three");
05 Use :
06 Collection<String> c = new ArrayList {"one", "two", "three"};

마치며..


우연찬게 Java 7 에 대한 내용을 발견에 이렇게 포스팅을 하지만, 위 내용에는 정확하지 않은 정보가 포함되어 있을수도 있습니다. 의심가는 부분이나, 이해가 가지 않는 부분은 거침없이 태클이나 질문해 주시면 최대한으로 수용하며 답변드리도록 하겠습니다.

제 블로그에 방문해 주신 모든 분들께 감사의 말씀을 드립니다.
댓글
댓글쓰기 폼