평소에 Effective Java에 대해서 좋은 책이라고 생각도 하고 있고, 자바 언어의 스펙을 정의 하고 있는 Joshua bloch에게 막연한 동경도 가지고 있어 첫 세션으로 Joshua의 세션을 골랐다. Josha가 들고온 타이틀은 ‘More Effective java’. Effective Java 도 센세이션 했는데, 여기서 더 나아간 건 어떤 걸까 기대하면서 강의를 듣기 시작했다,
이야기는 java5 이후 그 동안 자바의 성역이나 다름없던 Language에 대한 대대적인 변경으로 인해 그에 따른 논란이 많았음을 외국과 국내에서 많이 목격할 수 있었는데, 아니나 다를까!!! 역시 처음 주제로 논란의 핵심에 있는 “Generic”이 처음 올라왔다. 내용은 새 책인 Effective Java 2nd Edition에서 추가한 java5 관련 이슈들 이었다. 알다시피 Generic은 정말 좋은 개념이다. Collection에 담겨지는 객체(기존에는 object만 가능해서 의도하지 않은 객체가 runtime상에서 들어올 경우 에러 찾기가 정말 쉽지 않았다.)에 type을 부여해서 compile time에 이런 오류를 잡겠다는 것이다. 이렇게 되면 명시적으로 type을 지정하게 되어 오류발생을 줄일 수 있다.
Joshua는 새 책에 item 28번에서 소개하고 있는 generic type에 대해서도 언급을 하면서 세션을 시작했다. 대다수 자바 개발자들이 List<ObJect>로 되어 있는 부분에 Object의 하위 클래스인 String이 올 수 있다고 생각하는데 Generic에서 type은 불변이다. 따라서 List<Object>로 되어 있는 곳에 하위 클래스가 올 수 없다. (역시 spec 안 읽어 보고 대강 맞겠지 하는 생각은 위험을 낳는다.)
또 다른 소개는 “Bounded wildcard types” 이다.
Generic이 욕먹는 데에는 wildcard나 Extend의 사용으로 인해서 난해해지는 코드의 난독성이 한몫을 했을 것이다. 하지만, 위에 type invariant 같은 형태의 사용을 위해서는 필연적으로 사용해야 하는 게 이런 기능이다. 그러면서 PECS(Producer extend, Consumer super ) 를 가르쳐 주면서, return type에는 wildcard types을 사용하지 말라고 가르치고 있다. API가 유동성이 크면 그 API에 대한 하위 호환성이 발목을 잡을 수 있어서 그런 것 같다.
그 다음도 마찬가지로 신 문법에 익숙치 못한 사람들은 문제가 될만한 ENUM을 설명했다.
Generic보다도 ENUM은 보고 있으면, 이게 자바 문법인가 싶은 부분이 많지만, 잘 쓰는 데는 많은 시간이 필요할 듯 하다. 역시 language spec 리더답게, Joshua는 다양한 케이스.. 이를 테면, 인스턴스 필드에 int값을 저장 할 때의 주의사항이라던가, Bit Fields를 대체하는 EnumSet이라던가, Initialization circularity의 해결등, 저자의 다양한 가이드를 만날 수 있는 자리였다.
문제는 이렇게 바뀐 문법을 이런 가이드 대로 개발할 수 있는 개발자가 그리 많지 않을 것 같다는 생각과, 생각보다 바뀐 문법을 공부해야 할 요소들이 많다는 생각이 든다.(더 공부해야 겠다.)
다음 세션은 얼마 전에 릴리즈 되서 자바원에서는 처음 이야기 되는 Spring 2.5 세션에 들어갔다. 2.5에서 주안점을 둔 부분은 Java6의 지원과 JavaEE5 그리고 OSGi의 지원이었다. JavaEE5의 지원에서 가장 두드러진 부분은 BEA와 IBM WAS등의 상용벤더의 full support 였다. IBM과는 Officially support로 IBM was 6.x를 지원하고 있었다.
아울러 관심 많았던 OSGi는 나눠주는 T-shirt에서도 나타났지만, Spring Application Platform 이름으로 각종 서비스를 엮을 수 있는 구조를 제공하고 있었다. Spring Application Platform은 Tomcat, Spring, OSGi를 엮어서 하나의 일관된 Application 플랫폼을 제공하겠다는 의도로 제공되고 있었으며, rod johnson은 반대를 많이 했던 걸로 알고 있는 Annotation은 Annotation based DI라는 타이틀로 소개되고 있었다.
너무 많은 것을 들어서 잘 소화가 안되고 있으니 시간을 두고 이를 체화할 필요가 있겠다는 생각과 Spring Application Platform은 내 서비스를 만드는 근간으로 해보고 싶다는 생각이 많이 들었다. 자바 진영에는 Java7에 적용될 Module과 OSGi간에는 앞으로의 방향성을 좀더 면밀히, 검토해볼 필요가 있겠지만, Module 쪽에서는 OSGi와의 연동도 고려를 하고 있는 만큼 나쁘지 않은 선택이 아닐까 하는 생각도 해보면서 오늘 정리를 마칠 까 한다.
"JavaOne" 카테고리의 다른 글
- 2008 자바원 - 생생한 현장 소식 # 2 Java+You 최상훈 JCO 회장 (댓글 0개 / 트랙백 0개) 2008/05/09
- 2006 자바원 - 토픽 & 세션 (댓글 3개 / 트랙백 0개) 2006/05/20
- 2008 자바원 - 생생한 현장 소식 # 6 자바원, 그 메카에 가다 - 김정태 J... (댓글 0개 / 트랙백 0개) 2008/05/10
- 2007 자바원 Wrap up 세미나 (9월 7일) - 신청마감 (댓글 75개 / 트랙백 3개) 2007/08/24
- 2006 자바원 - 참가후기 양수열 JCO 회장 (댓글 3개 / 트랙백 0개) 2006/05/22
- 2005 자바원 후기 세미나 발표자료 (댓글 3개 / 트랙백 0개) 2005/08/28
- 2008 자바원 - 생생한 현장소식 # 12 JSR-310, 새로운 Time & Da... (댓글 0개 / 트랙백 1개) 2008/05/21
- 2006 자바원 - 한국 참가자 세미나 (댓글 3개 / 트랙백 1개) 2006/07/09
- 2008 자바원 - 생생한 현장 소식 # 3 뉴 릴리즈와 함께 - 양수열 자바 챔피언 (댓글 0개 / 트랙백 0개) 2008/05/09
- JavaOne Conference 가이드 (댓글 0개 / 트랙백 0개) 2008/06/10
댓글을 달아 주세요