Tip And Tech2008.05.13 15:04

FLEX 그리고 AJAX

 

웹 2.0이 화두인 이 시기에 가장 주목받는 기술이 아닐까 싶다.


화려한 GUI와 더불어 페이지 전환없이 비동기적으로 서버와 데이터를 주고받을수 있다는 점에서 RIA개발에 많이 쓰이고 있다.


AJAX와 FLEX의 차이점은 단순하다.


AJAX가 자바스크립트를 사용하는데 반해서 FLEX는 기존 Flash 에서 사용하던 ActionScript와 MXML이라는 xml기반의 언어를 사용한다.


이를 제외하면, 서버와 비동기 통신을 하며 xml을 사용해 데이터를 주고 받는 다는 점에서는 기본적인 원리는 동일하다.


FLEX의 장점


하지만 AJAX과 비교했을때 FLEX는 분명한 우위를 점하고 있는 부분이 있다.


매크로 미디어가 어도비에 합병되고 나서 발표된 플래시 플레이어9 버전에서는, 기존에 어도비가 가지고 있던 이미지 처리 능력이 비약적으로 향상됨을 보여준다.


포토샵의 비트맵 기술이 플래시와 접목되면서 한층 더 확장성있는 구현이 가능해졌으며, 각종 필터를 제공함으로써 플래시로 제작된 어플리케이션에 화려한 효과를 줄 수 있게되었다.


이러한 플래시 기반의 화려한 그래픽 API를 그대로 FLEX에서도 쓸 수 있다는 점은 FLEX만이 가진 큰 장점이다.


거기에다가 FLEX Builder를 사용하면 FLEX어플리케이션을 간단하게 마우스로 구현할 수 있다는 점에서 생산성도 확보할 수가 있다.


html페이지를 드림위버를 사용해서 직접 html을 작성하지 않고 만드는 것처럼, FLEX에서 제공하는 각종 컴포넌트들을 드래그앤드롭을 통해 쉽게 화면에 구성할 수 있다.


FLEX의 배경

 

사실상 어도비는 벼랑 끝에 내 몰린 심정으로 FLEX를 개발했다.


플래시 어플리케이션이 웹에서 돌아가기 위해서는 플래시 무비파일인 swf파일로 컴파일이 되어야하는데, 애초에는 자사의 제품으로만 swf파일을 만들 수 있었다.


그러나 최근들어 오픈소스 프로젝트에서 무료 컴파일러들이 등장하면서 기술을 독점할 수 없는 상황에 이르렀기 때문에 새로운 수익모델이 필요해진 상황에 몰린것이다.


거기에다가 윈도우 비스타가 새로운 사용자경험(UX)을 제공하겠다며 맹추격 해오는 탓에 기존에 플래시가 확보하고 있던 RIA시장마저 빼앗길 처지에 달했다.


이러한 이유로 어도비사는 FLEX의 sdk와 Framework를 무료로 제공하게 되었으며, 자바 개발자를 끌어들이기 위한 이유로 자바 프로그래머들에게 익숙한 이클립스 기반의 FLEX Builder를 비교적 싼값에 배포하고, 이클립스 플러그인도 제공하고있다.


FLEX 와 Blend

 

2007년 마이크로 소프트는 닷넷 프레임워크 3.0과 함께 새로운 툴들을 발표하고 있다.


코드병 'Avalon'으로 알려진 WPF(Window Presentation Foundation)와 함께 다음과 같은 지원 툴을 발표했다.


Microsoft Expression Design.

Microsoft Expression Blend.

Microsoft Expression Media.

Microsoft Expression Web.


제목으로 미루어 보아도 알 수 있겠지만 기존에 어도비가 가지고 있던 대표 제품과의 정면 충돌이 예상된다.


포토샵과 일러스트레이터를 겨냥한 'Microsoft Expression Design'은 기존에 어도비제품군과 완벽하게 호환되기때문에 포토샵과 일러스트레이터에서 사용하던 파일뿐만아니라 PDF 파일까지 읽어 들일 수 있다.


이렇게 읽어 들인 파일들을 재구성해서 XAML이라는 파일 형식으로 export할 수 있는데 이는 플래시기반의 MXML과 같이 객체를 태그로 표현할 수 있도록 한다.


이렇게 저장된 파일은 'Microsoft Expression Blend'에서 불러와서 폼을 작성하거나 효과를 적용할 수 있다. 이 툴은 타임라인 기반의 애니메이션을 적용할 수 있으며, 각 객체에 효과를 주고 이벤트 연계를 하는등 FLEX와 유사한 기능을 하는 툴이다.


블렌드(Microsoft Expression Blend)는 플래시와는 달리 실행파일을 직접 만들어서 실행하게되는데, 이는 C#이나 VB.NET프로젝트 처럼 다루어지며 닷넷 프레임워크 3.0에서 제공하는 풍부한 기능을 사용할 수 있다.


이는 많이 발전했다고는하나 상대적으로 빈약한 언어적 기반을 가진 액션스크립트에게는 매우 취약한 부분이 될 수 있다.


이밖에도 'Microsoft Expression Media'와 'Microsoft Expression Web'역시 XAML이라는 공통 언어를 사용해서 익스프레션의 다른 모든 제품과 데이터를 교환 할 수 있다.


이러한 호환성은 FLEX가 가지지 못한 부분이기때문에 FLEX가 기술적인 경쟁력을 확보하는데 걸림돌이 될 여지가 있다.


JAVA VS .NET

 

자바 프로그래머들에게 있어서 FLEX는 RIA를 구현하는데 있어서 가장 쉽게 접근할 수 있는 툴이다.


FLEX에서는 FDS(Flex Data Service)를 통해 자바와의 리모팅을 지원하고 있는데, 이는 자바에서 사용하는 객체를 바로 FLEX에서 사용할 수 있게 해주며, 쌍방향 통신을 지원한다.


상대적으로 닷넷 진영에 비해 빈약한 그래픽 API를 가지고 있는 자바진영에서는 FLEX를 사용해서 이를 보완할 수 있을것이다.


더불어서 'FLEX Builder'는 이클립스 기반으로 개발되었기 때문에 자바프로그래머에게는 매우 익숙하다 할 수 있다.


앞으로의 RIA시장은 FLEX를 사용해 GUI를 보강한 JAVA진영과 익스프레션제품군을 필두로 한 닷넷진영이 벌이는 전쟁터가 될 가능성이 크다.


결론


기존의 RIA시장은 플래시를 사용한 어플리케이션이 주를 이루었다.


하지만 플래시는 분명 프로그래머를 위한 툴은 아니다.


당초 개발 목적이 웹에서 애니매이션을 보여주기 위함이었기 때문에 IDE의 액션 스크립트 편집창은 정말이지 형편없었다.


더욱이 반쪽짜리 객체지향언어인 액션스크립트 2.0은 사실상 대규모 어플리케이션을 제작하기에는 무리가 있었다.


반면에 FLEX는 컴파일된 결과가 똑같이 플래시 플레이어 위에서 돌아가기는 하나, 분명히 대규모 어플리케이션을 작성하기에도 무리가 없을만큼 잘 짜여진 구성이다. 마치 자바를 보는 듯 하다.


액션스크립트가 버전 3.0으로 넘어오면서 부터는 완전한 객체지향 언어라고 해도 무리가 없을 정도이며, 쉽게 컴포넌트를 확장하거나 재구성할 수 있는 방법을 제공한다.


하지만 FLEX역시 GUI를 구성하기 위한 툴 이상은 아니다.


데이터를 읽어오기위해서는 다른 언어의 도움을 빌려야하기 때문에 FLEX만 가지고는 아무것도 할 수 없다고 해도 과언이 아니다.


앞으로 FLEX를 공부하는데 있어서는 조금더 넓은 시야를 가지는 것이 필요하다고 생각한다.


어도비에서는 AJAX와 연동할 수 있는 API를 제공하기 시작했으며, FLEX와 닷넷을 리모팅하기 위한 오픈소스 프로젝트도 진행되고 있다. 구글 파이낸스는 FLEX와 AJAX를 적절히 혼합하여 사용한 좋은 예이다.


FLEX는 조금더 쉽고 화려하게 뷰를 구성할 수 있는 툴일 뿐이기 때문에, 그밖에 다른 부분에 관한 지식이 요구된다.


중요한 로직은 어차피 서버단에서 구성되어야 하기때문에 자바나 닷넷같은 서버사이드 언어를 공부해야 함과 동시에 FLEX의 컴포넌트를 확장해서 사용하기 위해서는 OOP를 넘어 CBD에 대한 개념도 숙지해야한다.


더불어서 지금까지 설명한 기술적인 부분에 대한 이해 뿐만아니라, 웹기술에 관한 트렌드와 철학에 대한 접근도 요구된다고 생각한다.

Posted by 정윤수 버터백통