본문 바로가기

Dev.../웹서비스

[펌] 자바 기술 변화를 한눈에 보여주는 그림

자바 기술 변화를 한눈에 보여주는 그림

e-비즈니스의 실현을 위한 J2EE 기술이 등장한지도 벌써 5년이란 세월이 흘렀습니다.
그 동안 자바 개발자들은 다양한 프로젝트 경험을 통해 스스로의 실력을 조금씩 발전시켜 왔지요..
최근들어 자바 기술은 또 한번의 도약을 준비하고 있는 듯합니다.
웹 서핑을 하던 중 우연히 한장의 그림을 발견하게 되었습니다.
자바월드였던가? 안타깝게도 정확한 출처가 기억나지 않네요.. Rolling Eyes Rolling Eyes Rolling Eyes

휘갈겨 쓴 그 그림은 최근의 자바 기술이 어떻게 변화하고 있는지를 잘 정리하고 있었습니다.
(이 글 마지막의 원본 그림을 참고하세요..)
그 그림을 이용해서 제가 생각하는 변화의 흐름을 한번 이야기해볼 욕심으로 몇 자 끄적거립니다.

Exclamation [변화는 이미 시작되었고..]


위의 그림은 제가 발견한 한 장의 그림을 PPT로 다시 정리해본 것입니다.
MVC 패턴에 기반한 n-계층 C/S 환경을 기준으로 얘기를 풀어보겠습니다.


(1) 표현 계층 (Presentation Layer)

그림에서도 알 수 있듯이 최근 가장 급격한 변화를 겪고 있는 곳이 표현 계층의 기술입니다.
모델 2 방식이나 태그라이브러리를 활용한 뷰와 로직의 분리는 이미 당연한 것처럼 사용되고 있지요.
벨로시티(Velocity)와 타일즈(Tiles) 태그 라이브러리가 잠시 주목을 받았지만,
최근에는 더 큰 변화의 물결에 휩쓸려 말이 쏙~ 들어가 버렸습니다..
(사실 CompositeView 패턴을 활용해서 각각의 화면을 분할 정의하고,
ScreenDefinition.xml에 그 정보를 기록한 다음 ScreenManager로 통합하는
기법에서 타일즈와 벨로시티는 그 가치가 아주 크다고 생각됩니다.
하지만, 개발생산성 측면에서 분명한 약점이 존재한다는 사실을 인정하지 않을 수 없네요..)

요즘들어 표현 계층에서 가장 많은 관심을 받는 것은 당연 JSP 2.0과 JSF일 것입니다.
JSP 2.0도 메이저 버전이 올라간 많큼 확실히 많은 기능이 변화했습니다만,
많은 분들이 JSF에 큰 관심을 갖고 계시더군요..
Sun에서 발표한 Java Studio Creator와 IBM의 WebSphere Studio 5.x가
JSF를 지원하는 대표적 IDE라고 할 수 있는데요,
뷰 개발에 있어 닷넷의 웹폼 및 Visual Studio에 버금가는 생산성을 기대할 수 있을 것 같습니다.
오픈소스로 개발되는 JSF 컴포넌트들인 MyFaces도 관심을 가질만 하구요..
MyFaces에 포함된 캘린더 컴포넌트는 이번에 꼭 한번 써볼 생각입니다. ^^*

Exclamation 잠깐! JSF 메뉴얼 있어요~ ^^*
http://www.java-inside.co.kr 에 가시면 김승규님이 작성한 JSF 메뉴얼이 있답니다.
훌륭하게 작성된 메뉴얼인데 의외로 알려지지 않았더군요.. 거참.


이번 달(9월호) 마소지를 받아보니 X 인터넷 기술의 하나인 플렉스(FLEX) 자료가 별지로 들어있더군요..
이전에 짧은 소개글을 하나 썼던 기억이 납니다. 관심있으신 분은 읽어보세요.. ^^*

Exclamation X-인터넷에 대한 짧은 소개
http://java.techedu.net/bbs/view.php?id=mdahotissue&no=3



(2) 제어 계층 (Control Layer)

제어 계층의 주된 역할은 분리된 뷰와 로직을 어플리케이션 구성에 따라 적절히 연결해주는 것이라고 할 수 있겠지요?
물론 로그를 남기거나, 접근 제어 등을 제어 계층에서 할 수 도 있겠지만 말이죠.
제어 계층을 구현하는데 있어서 가장 핵심이 되는 설계 기법은 Service to Worker 패턴이 아닐까 싶습니다.

Exclamation Service to Worker 패턴 = Front Controller 패턴 + Command 패턴 + Service to Locator 패턴 + View Helper 패턴


전체 시스템의 설정을 XML로 관리하고, 사용자의 모든 요청은 Servlet으로 구현된 Front Controller에게 전달되죠.
Front Controller는 XML 설정을 참고해서 적당한 Command를 실행함으로써 동일한 방법으로 요청을 처리할 수 있구,
그 결과는 View Helper를 이용해서 프리젠테이션 계층에 전달되는 형태입니다.

제어 계층은 현재 Struts가 대세를 이루는 가운데 WebWork와 경쟁하고 있는 것처럼 보여집니다.
초기에는 수 십개의 오픈소스 WAF(Web Application Framework)들이 경쟁했지만,
2개의 프레임워크가 이미 안정화된데다 널리 알려져 있기 때문에, 당분간 별다른 변화는 없을 것 같으네요.


(3) 어플리케이션 로직 계층 (Application Logic Layer)

어플리케이션 로직 계층에서 뜨거운 감자는 EJB로 보여집니다.
많은 사람들이 프로젝트에서 EJB를 사용하고 있지만, 그만큼 EJB에 대한 불만도 커져 있는게 사실이지요..
EJB 3.0이 얼마나 개발자들의 불만을 해소시켜 줄지는 아직 의문입니다.

그런 의미에서 EJB의 사용 여부와 관계없이 WAS가 제공해주는 다양한 기능들을 효과적으로 지원하는,
Pico Container나 Spring 같은 IoC 개념이 적용된 경량급 컨테이너에 대한 관심이 높아져가는 듯 합니다.
"Writing Enterprise Application without EJB"가.. 주목을 받는다고 할까요?

현재로써는 세션빈과 BMP 방식의 엔티티빈 사용이 주류를 이루고 있다는 하지만,
일반 자바 객체(POJO)를 IoC에서 이용하는 방법 + ORM 기법과
EJB 3.0 중 누가 최후의 승자가 될지는 조금 더 지켜봐야 할 듯 합니다.
큰 변화를 앞두고 가장 긴장감이 흘러 넘치는 계층인 듯 .. ^^*


(4) 데이터 처리 계층 (Persistence Layer)

데이터 처리 계층에서는 DB를 이용하는 경우만 잠깐 얘기해볼께요.
사실 개발자 개인이 잘 만들어 놓은 DAO 객체가 엔티티빈에 비해 기능적으로나 성능적으로 뒤쳐질 이유는 하나도 없다고 봅니다.
WAS가 제공해주는 트랜잭션 처리와 자원 관리의 이점을 배제한다면 말이죠.
EJB 2.0부터 CRM을 통한 향상된 CMP 방식이나 로컬 인터페이스를 통한 성능 향상,
EJB QL을 통한 DBMS 비의존적 쿼리 작성 등이 가능해졌지만,
제 경험으로는 여전히 대규모 어플리케이션 개발에서 많은 점이 부족했습니다.
Floyd가 소개한 다양한 EJB 패턴들을 적용해서 그 부족한 점을 꾸역꾸역 메꾸긴 했지만,
가끔씩 입에서 욕이 튀어나오는 건 어쩔 수 없더군요..

DB 정보를 읽어들여 JBuilder 등의 IDE에서 자동으로 CMP 방식의 엔티티빈을 만들고,
마우스 조작 만으로 관계 설정을 하고 EJB-QL로 필요한 쿼리를 입력하는 방식은..
편하고 높은 생산성을 보장해주긴 했지만,
조금만 문제가 복잡해져도 결국 BMP 방식으로 코드를 작성할 수 밖에 없게끔 강요했습니다.

그렇다고 WAS의 막강한 지원을 포기할 형편도 아니지요.
커넥션 풀이야 자카르타 프로젝트의 오픈소스를 빌려 쓴다 하더라도,
트랜잭션 처리를 일일이 JTA로 하드코딩할 수 없으니까요.. 보안도 맘에 걸리구.

하지만 객체 관계 매핑(ORM) 솔루션이 많이 소개되면서 오히려 엔티티빈보다 더 나은 작업 환경이 갖춰진 듯합니다.
그 선두 주자가 Hibernate인 점은 좀 의아하지만 말이죠..
ORM의 등장은 우리를 좀 더 EJB에 대한 강압으로부터 자유롭게 해 줄 것 같습니다. ^^*


(5) 공통-통합 (Common/Cross-Writing)

모든 계층을 아우르는 일반 영역에서 관심을 끌고 있는 것들이 어디 한두가지 겠습니까만은,
그 중에서도 AOP와 XML 기반의 웹 서비스에 대한 논의가 가장 활발한 듯 합니다.

AOP(Aspect Oriented Programming)의 개념은 어쩌면 MDA와 결합해서 개발자들의 오랜 습관을 뒤흔들지도 모르겠네요..
미리미리 공부해둬야 겠습니다. ^^*


주의!!
여기에 적힌 글들은 정확한 산업 통계나 공신력있는 기관의 정보가 아닙니다.
그저 물개선생이 우연히 발견한 한장의 그림을 통해,
개인적으로 생각하고 있는 최근의 기술 변화 흐름을 짤막하게 적어본 것입니다.
아주 공감이 가는 그림인데, 다른 분들도 공감하실까.. 싶어서요.. ^^*
너무 심각하게 읽지 말아주세요.. Twisted Evil Twisted Evil Twisted Evil Twisted Evil