아파치 플렉스

섬네일|과거 로고
**아파치 플렉스**(Apache Flex, 이전 이름: **어도비 플렉스**(Adobe Flex))는 어도비 플래시 플랫폼의 특허에 기반을 둔 크로스 플랫폼을 지원하는 리치 인터넷 애플리케이션의 개발과 배포를 위해 어도비에서 발표한 기술을 한 데 모아둔 것이다. 2004년 3월에 매크로미디어에서 발표한 최초 버전은 SDK, IDE, 그리고 플렉스 데이터 서비스로 알려진 J2EE 통합 애플리케이션을 포함하고 있다. 어도비가 2005년에 매크로미디어를 인수한 이후, 플렉스의 다음 버전부터 더 이상 플렉스 데이터 서비스에 대한 라이선스를 요구하지 않았고, 플렉스 데이터 서비스는 ‘라이브싸이클 데이터 서비스’라는 상표가 붙은 분리된 제품이 되었다.

플렉스 3 SDK는 오픈 소스 모질라 퍼블릭 라이선스로 2008년에 출시되었다. 이에 이어, 플렉스 응용 프로그램들은 표준 IDE를 이용하여 개발할 수 있는데, 이를테면 이클립스와 사유 제품 어도비 플래시 빌더를 예로 들 수 있다. SDK 버전이 4.8로 업데이트되면서 4.6 버전부터 이어온 어도비가 아닌 아파치 재단이 출시한 첫 제품이 되었다. 이 제품은 아파치 라이선스 v2 사용권을 따른다.

## 개요

전통적인 응용 프로그램 개발자들이 플래시 플랫폼으로 만드는 애니메이션을 적용하기에는 어려움이 있었다. 플렉스는 이러한 과정의 어려움을 최소화하고 응용 프로그램 개발자들에게 익숙한 개발 모델을 제시하였다.

플렉스는 초기에는 J2EE 응용 프로그램 또는 JSP 태그 라이브러리를 통해서 동적으로 MXML과 액션스크립트(ActionScript) 코드를 플래시 응용 프로그램(SWF 파일)으로 컴파일하는 것만 가능하였다. 그리고 이후 버전부터 서버 라이선스 없이 프로그램 코딩 후 파일을 컴파일 할 수 있도록 하고 온라인에 배포할 수 있도록 지원하기 시작한다.

플렉스의 목적은 응용 프로그램 개발자들에게 빠르고 쉽게 리치 인터넷 애플리케이션을 개발할 수 있도록 하는 것이다. n계층 모델에서 플렉스 응용은 프레젠테이션 계층을 제공한다.

플렉스의 특징은 MXML 이라고 불리는 XML 기반 언어를 사용하면 GUI를 개발할 수 있다는 것이다. 이것은 웹 서비스, 원격 객체, 드래그 앤 드롭, 컬럼 정렬, 차트, 그래픽 객체, 애니메이션 효과 등을 구현하기 위한 다양한 구성요소와 기능들로 이루어져 있다. 그리고 이들의 상호 간의 통신 또한 간단하게 구성할 수 있다. 사용자가 한번 호출하면 작업마다 서버에서 템플릿을 실행하는 것을 요청하는 versus HTML, 기반의 응용(PHP,ASP,JSP,CFMX)보다 훨씬 향상된 응용 작업 흐름을 플렉스의 언어와 파일 구조는 디자인으로부터 응용 로직을 분리하도록 이루어져 있다.

플렉스 서버는 또한 사용자가 XML 웹서비스와 원격 객체(CFCs 나 Class 그리고 AMF를 지원하는 그 밖의 다른 객체)를 가지고 통신하는 것을 허용하는 게이트웨이로 동작한다.

일반적으로 플렉스를 대체하는 것들을 언급할 때 오픈라즐로, Ajax, XUL, JavaFX 그리고 실버라이트와 같은 윈도우 프레젠테이션 파운데이션 기술을 이야기한다.

### 개발 이력
* 플렉스 1.0 - 2004년 3월
* 플렉스 1.5 - 2004년 10월
* 플렉스 2.0 (알파) - 2005년 10월
* 플렉스 2.0 베타 1 - 2006년 2월
* 플렉스 2.0 베타 2 - 2006년 3월
* 플렉스 2.0 베타 3 - 2006년 5월
* 플렉스 2.0 최종 - 2006년 6월 28일
* 플렉스 2.0.1 - 2007년 1월 5일
* 플렉스 2.0.1 오픈 소스 공개 2007년 4월 26일
* 플렉스 3.0 베타 1 - 2007년 7월 11일
* 플렉스 3.0 베타 2 - 2007년 10월 1일
* 플렉스 3.0 베타 3 - 2007년 12월 12일
* 플렉스 3.0 최종 - 2008년 2월 25일
* 플렉스 3.1 - 2008년 8월 15일
* 플렉스 3.2 - 2008년 10월 29일
* 플렉스 3.3 - 2009년 3월 4일

## 버전

### 매크로미디어 플렉스 서버 1.0, 1.5
플렉스는 처음에는 기업용 응용 프로그램 개발시장을 목표로 만들어졌다. 그리고 CPU 당 15000달러에 판매되었다. 각 라이선스는 5개의 플렉스 빌더 라이선스를 포함하고 있었다. 순수 개발자의 경우 액션 스크립팅을 사용하는 게 낫다.

### 어도비 플렉스 2
플렉스 2 에 와서는 라이선스 모델이 변화되었다. "플렉스 2 SDK" 라고 불리는 무료 버전의 SDK를 배포하였다.

새로운 플렉스 빌더 2는 이클립스 IDE 기반으로 만들어졌다. 데이터를 동기화하고 데이터 push, publish-subscribe, 자동화된 테스트를 제공하는 기업대상의 서비스도 FDS 2를 통하여 가능하게 된다.

플렉스 2는 액션스크립트 3 라고 불리는 새로운 버전의 액션스크립트 스크립팅 언어를 소개한다. 최신의 ECMA스크립트 특징을 반영하고 있고 플래시 플레이어 9 또는 그 이후 버전이 필요하다.

플렉스는 매크로미디어 제품군에서 어도비로 명칭이 바뀐 첫 번째 제품이다.

### 어도비 플렉스 3
2007년 4월 26일 어도비는 모질라 공개 라이선스를 따르는 플렉스 3 SDK(플렉스 빌더 IDE와 라이브사이클 데이터 서비스를 제외한)의 출시계획을 발표했다. 어도비는 2007년 6월에 플렉스의 첫 번째 베타버전(코드네임 : Moxie)을 공개하였다. 주요한 특징은 새 버전의 CS제품군과 통합한 것과 AIR(어도비의 새 데스크톱 응용 프로그램 런타임)를 지원하는 것, 그리고 플렉스 빌더 IDE에 프로파일링과 리팩토링 도구를 추가한 것이다.
더 많은 특징과 다운로드는 어도비 플렉스사이트 http://www.adobe.com/products/flex/에서 제공한다.

어도비는 2007년 10월에 플렉스 3의 두 번째 베타를 공개하였고, 12월 12일에 세 번째 베타를 공개하였다.
2008년 2월 25일에 플렉스 3와 AIR 1.0을 공개하였다.

### 어도비 플렉스 4
어도비는 플렉스 4.0(코드네임 : Gumbo)이 2009년에 공개될 것이라고 발표했다. 이 계획이 발표되었지만, 제품출시 계획은 아직 완성되지 않았다. 어도비가 언급한 플렉스 4에 추가될 주제들은 다음과 같다.
* 디자인 인 마인드 : 프레임워크는 디자이너와 개발자들의 연속적인 협력을 위해 디자인될 것이다.
* 가속화된 개발 : 애플리케이션 개발을 구상에서 구현까지 빠르게 할 수 있다.
* 수평의 플랫폼 개선 : 컴파일러 성능, 언어의 개선, BiDi 컴포넌트, 향상된 텍스트(어도비로부터 도출된 결론)
* 영역의 확장 : 프레임워크가 더 많은 개발 런타임을 지원하면서 더욱 가벼운 런타임 MXML을 만드는 방법을 찾는다.

플렉스 4 마일스톤 : (어도비로부터 도출된 결론)
* 범위 확정, 2008년 4월
* 베타1, 2008년 후반
* 4.0 최종, 2009년

## 라이브사이클 데이터 서비스
라이브사이클 데이터 서비스(LiveCycle Data Services, 이전에는 플렉스 데이터서비스(FDS) 였음)는 플렉스 SDK 와 플렉스빌더와 함께 플렉스 제품군 중 하나로 서버측 지원을 담당한다. 자바 엔터프라이즈 응용으로 배치될 때 LDS는 플렉스 응용 프로그램에 추가적인 기능을 지원한다.
* 리모팅, 플렉스클라이언트 응용 프로그램이 직접 자바 서버 객체와 연결될 수 있도록 한다. 마치 RMI(Java remote method invocation)와 비슷한 기능이다. 원격에서 데이터 마샬링을 자동으로 다룰 수 있고 이진 데이터를 전송 포맷으로 사용한다.
* 메시징에서 구독/배포의 디자인패턴의 목적으로 배포를 제공한다. 플래시 클라이언트는 서버에서 설정한 배포 이벤트에 대하여 메시지 서비스로부터 배포되는 이벤트를 구독할 수 있다. 대표적인 예가 금융 데이터 또는 시스템 상태 정보와 같은 실시간 데이터 스트리밍이다.
* 플렉스 클라이언트로 다운로드된 데이터를 자동적으로 관리하는 개발 모델을 제공하는 데이터 관리 서비스이다. 서버로부터 데이터가 한 번 로드된 뒤에 변경되는 사항은 자동적으로 검사가 되고 응용 프로그램의 요청으로 서버와 동기화된다. 클라이언트는 또한 서버 측에서 데이터가 변경되는 것을 바로 확인할 수 있다.
* 서버에 특정 위치에 저장된 클라이언트 데이터나 이미지와 함께 PDF 문서를 만들어낼 수 있는 API를 제공한다.

오픈 소스 원격 기능으로 PHP를 사용한다면 AMFPHP를 대신 사용할 수 있다.

## 플렉스 응용 프로그램 개발 과정
아래의 자료들은 플렉스 2 베타 3 도움말에서 가져온 내용이다.

* 사용자 인터페이스 구성요소(폼, 버튼 등)를 사용하여 응용 프로그램 양식의 태그를 정의한다.
* 사용자 인터페이스 디자인 안에 정의된 구성요소를 사용한다.
* 스타일이나 테마를 사용하여 시각 디자인을 정의한다.
* 동적인 행동을 추가한다. (응용 프로그램이 다른 요소들과 상호작용)
* 필요에 따라 데이터 서비스와 연결하는 부분을 정의한다.
* 소스 코드를 빌드하고 플래시 플레이어에서 작동할 수 있도록 SWF 파일을 만든다.

## 같이 보기

* MXML
* 마이크로소프트 실버라이트
* 오픈라즐로

## 외부 링크
* 

분류:어도비 소프트웨어
분류:XML 기반 표준
분류:웹 개발 소프트웨어
분류:크로스 플랫폼 소프트웨어
분류:자유 통합 개발 환경
분류:아파치 소프트웨어 재단 프로젝트
분류:매크로미디어 소프트웨어
분류:소프트웨어 개발 키트