Oracle Application Development Framework(ADF) 개요
Oracle Application Development Framework(ADF) 개요
서론
J2EE가 극복해야 할 과제
J2EE는 오늘날 많은 엔터프라이즈 애플리케이션의 기반을 이루고 있는 표준 플랫폼으로 높은 안정성, 확장성 및 보안 환경을 제공합니다.
하지만, J2EE는 Java 언어를 사용하는 멀티-티어 애플리케이션을 구축하기 위한 스펙의 집합에 불과하며, J2EE가 애플리케이션 구축에
실제로 사용되는 툴을 제공하는 것은 아닙니다. J2EE 개발을 처음 시작하는 개발자에게 이것은 넘기 어려운 장벽처럼 보입니다. 많은 개발자들이
J2EE API의 복잡한 구조 때문에 혼란스러워 하고 있습니다. 이는 포괄적인 표준 정립을 목적으로 하는 J2EE의 기본 속성에서 기인한
결과입니다.
지난 수 년 간, J2EE 플랫폼을 위한 베스트 프랙티스(Best Practices)와 디자인 패턴(Design
Pattern)이 지속적으로 개발되어 왔습니다. 이러한 베스트 프랙티스를 구현하는 것 역시 많은 인프라스트럭처 코딩 작업을 수반하며, J2EE
애플리케이션을 처음 구현하는 개발자들에게는 또 다른 장애물이 됩니다.
이러한 어려움을 극복하기 위해, J2EE의 기능을 그대로 활용하면서
J2EE 플랫폼의 복잡성을 추상화하기 위한 프레임워크가 대두되고 있습니다.
Oracle ADF - J2EE 개발 환경의 단순화
Oracle JDeveloper 10g 는 혁신적인 J2EE 개발 프레임워크인 Oracle Application Development
Framework를 구현하고 있습니다. Oracle Application Development Framework(Oracle ADF)는 디자인
패턴 구현 및 애플리케이션 인프라스트럭처 코드 작성에 수반되는 작업을 최소화합니다. 또한 Oracle ADF는 비주얼 또는 선언적 방법을 이용한
J2EE 개발 환경을 제공하는 데 그 초점을 맞추고 있습니다.
Oracle ADF는 JDeveloper의 이전 버전에 포함되어 있던
프레임워크를 한 단계 진화하고 확장한 형태로 구현되었습니다.
Oracle ADF가 다른 J2EE 프레임워크와 차별화되는 주요 특성이
아래와 같습니다:
• 개발 환경 - 다른 J2EE 프레임워크에는 개발 작업을 보다 손쉽게 해 주는 개발툴이 결여되어
있습니다. Oracle JDeveloper 는 비주얼한 방법과 선언적 방식을 통해 코딩을 최소화하고, Oracle ADF 기반 애플리케이션을
구현하기 위한 최상의 툴입니다.
• 플랫폼 독립성 - 다른 프레임워크는 개발자에게 특정 소프트웨어 벤더에 대한 종속을
강요하는 특성을 갖습니다. 반면 Oracle ADF 런타임은 어떤 J2EE 호환 애플리케이션 서버에도 설치가 가능합니다.
•
기술의 자유로운 선택 - 애플리케이션을 계층별로 구성하는 방식은 개발자의 개인적 선호도에 따라 달라집니다. Oracle ADF 는
애플리케이션 각 계층별로 여러 가지 기술을 지원합니다. Oracle ADF는 특정 기술을 개발자에게 강요하지 않습니다.
•
엔드-투-엔드 솔루션 - Oracle ADF는 J2EE 아키텍처의 특정 계층에 한정되지 않습니다. Oracle ADF는 모든 J2EE
계층과 개발 라이프 사이클의 모든 단계를 지원하는 포괄적인 솔루션입니다.
ORACLE ADF 아키텍처
Oracle ADF는 MVC(Model-Viewer-Controller) 디자인 패턴에 기반하고 있습니다. MVC는 애플리케이션 아키텍처를 3 계층으로 구분합니다:
• Model - 데이타 소스 간의 연동을 처리하고, 비즈니스 로직을 실행합니다.
•
View - 애플리케이션 사용자 인터페이스를 처리합니다.
• Controller - 애플리케이션 플로우를 처리하고
Model 계층과 View 계층간의 인터페이스로서 기능합니다.
애플리케이션을 이처럼 3 계층으로 구분함으로써 애플리케이션의 유지보수, 애플리케이션 컴포넌트의 재활용에 관련된 작업을 단순화할 수 있습니다. 각 계층은 서로 독립적으로 구현되며, 전체적으로 느슨하게 연결된 아키텍처(loosely coupled architecture)의 형태를 이룹니다. Oracle ADF 는 MVC 아키텍처를 쉽게 구현하기 위한 환경을 제공합니다.

Oracle ADF는 4 종류의 계층을 기반으로 구현됩니다:
• Business Services 계층 - 다양한 소스에 대한 데이타 액세스를 제공하고,
비즈니스 로직을 처리합니다.
• Model 계층 - Business Service 계층의 상위에서 추상화 계층으로서
기능합니다. 따라서 View 및 Controller 계층은 서로 다른 Business Service를 사용하여 일관적인 형태로 구현될 수
있습니다.
• Controller 계층 - 웹 애플리케이션의 플로우를 제어하기 위한 메커니즘을 제공합니다.
• View 계층 - 애플리케이션에 대한 사용자 인터페이스를 제공합니다.
개발자는 각 계층을 구현하기 위한 테크놀로지를 자유롭게 선택할 수 있습니다.
Oracle ADF는 사용되는 테크놀로지 스택에
관계없이 동일한 비주얼과 선언적 개발환경을 제공합니다.
View 계층
View 계층은 애플리케이션에 대한 사용자 인터페이스를 제공합니다. View 계층은 HTML, 리치 Java 컴포넌트, XML, 또는 기타 관련 프로토콜을 사용하여 사용자 인터페이스를 렌더링합니다. View 계층은 웹 기반, 클라이언트 서버 기반, 또는 무선기반으로 구현될 수 있습니다.
Controller 계층
Controller 계층은 애플리케이션의 플로우를 제어합니다. 웹 기반 애플리케이션은 다이나믹 컨텐트를 포함하는 다수의 웹 페이지로 구성됩니다. Controller 계층은 이 페이지들 간의 플로우를 관리합니다. 이 계층을 구성할 때 서로 다른 모델을 조합하여 사용하는 것이 가능합니다. Java 기반 웹 애플리케이션은 컨트롤러로서 기능하는 서블렛을 이용하여 구현되는 것이 일반적입니다. 오픈 소스 프레임워크 컨트롤러인 Apache Jakarta Struts 컨트롤러는, Java 기반 웹 시스템을 위한 실질적인 업계 표준으로 인정받고 있습니다. Oracle ADF는 Struts 컨트롤러를 사용하여 웹 애플리케이션의 플로우를 관리합니다.
Business Services 계층
Business Services 계층은 데이타 퍼시스턴스(data persistent) 계층과의 연동을 관장하며, 데이타 퍼시스턴스,
오브젝트/관계형 매핑, 트랜잭션 관리, 비즈니스 로직 실행 등의 서비스를 제공합니다.
Oracle ADF의 Business
Services 계층은 Simple Java 클래스, EJB, Web service, TopLink 오브젝트, Oracle ADF
Business Component 등의 형태로 구현됩니다.
Model 계층
Model 계층은 Business Service를 다른 계층에서 사용하는 오브젝트와 연결합니다. Oracle ADF 는 Business
Service의 상위에 Model 계층을 구현하며, 구현되는 Business Service의 종류에 관계없이 동일한 인터페이스를 제공합니다.
Oracle ADF의 Model 계층은“J2EE를 위한 표준 데이타 바인딩 및 데이타 액세스 환경”인JSR-227 구현의 토대로 활용되었습니다.
Oracle ADF의 독특한 Model 계층 구현 방식은, 기업 애플리케이션의 서비스 지향 아키텍처(SOA) 구현 과정에서 중요하게
활용됩니다. Model 계층을 이용하면, 애플리케이션을 일련의 서비스 형태로 쉽게 구현할 수 있으며, 서로 다른 애플리케이션에서 사용 및
재사용할 수 있습니다. Model 계층이 구현하는 추상화 기능을 활용하여, 개발자는 자신이 선호하는 방식으로 이러한 서비스들을 구현할 수
있습니다.
선택의 자유가 제공하는 생산성
개발자들은 Oracle ADF의 각 계층별로 다양한 테크놀로지 중 하나를 선택하고, 테크놀로지의 종류에 관계없이 생산적인 개발 환경을
제공받을 수 있습니다.
아래 다이어그램은 Oracle ADF 애플리케이션 구현 과정에서 개발자가 선택할 수 있는 다양한 옵션을 설명하고
있습니다.

위 다이어그램에서 Oracle ADF가 구현하고 있는 컴포넌트는 파란색으로 표시되어 있습니다. Oracle ADF 프레임워크를 활용하면 그 밖의 다른 컴포넌트들도 쉽게 연동하여 활용할 수 있습니다. Oracle ADF model 계층은 J2EE 애플리케이션 컴포넌트 간의 연동 및 유연한 개발 환경 구현을 위한 기능을 제공합니다. Oracle ADF Model을 위한 Business Service로는 EJB, Web Service, JavaBeans, TopLink 오브젝트 등이 활용 가능합니다.
View 계층은 Swing 애플리케이션, 또는 JSP, ADF, UIX, JSF 등을 이용한 HTML 인터페이스 등을 지원합니다.
비주얼/선언적 J2EE 개발 환경
개발 프레임워크를 구현하는 데 있어 가장 핵심적인 과제의 하나는, 프레임워크를 사용하여 애플리케이션을 구현하는 작업을 단순화하기 위한 개발
툴이 제공되어야 한다는 것입니다.
오라클은 Oracle ADF의 각 계층별로 비주얼 툴 및 선언적 툴을 제공합니다. Oracle ADF의
런타임 기능을 이용하지 않는 Java 개발자도 이러한 툴을 매우 유용하게 활용할 수 있습니다.
Business Services 계층
Oracle JDeveloper는 EJB, Web Service, TopLink 오브젝트, Simple Java 클래스, Oracle ADF Business Component 등을 모델링하고 생성하기 위한 UML 클래스 다이어그램을 포함하고 있습니다. 데이타베이스 브라우저 상에서 테이블을 다이어그램에 드래그-앤-드롭 하면 이 테이블에 Java 인터페이스를 제공하는 Business Service가 자동으로 생성됩니다.

Oracle JDeveloper는 EJB 생성을 단순화하고 EJB 인터페이스 구현에 수반되는 코딩 작업을 최소화하기 위한 선언적
인터페이스를 제공합니다. 한 번의 버튼 클릭 만으로 EJB 디자인 패턴을 생성할 수 있습니다.
Oracle JDeveloper는
TopLink Mapper와의 통합을 통해, TopLink persistent layer를 이용하여 Java 오브젝트를 데이타베이스 테이블로
시각적으로 매핑하는 기능을 제공합니다.
Oracle ADF Business Component 는 오브젝트 생성 기능에 초점을 맞춘
프레임워크로, 데이타베이스의 상위에 Business Service 계층을 선언적인 형태로 구현합니다. Oracle ADF Business
Component 가 제공하는 트랜잭션 관리, 리소스 풀링, 락 킹(locking), 선언적 검증 규칙, 변환(translation),
오브젝트-관계형(O/R) 매핑 등의 기능은 제품 설치 후 바로 사용 가능합니다. Oracle ADF Business Component는
데이타베이스에 액세스하는 Java 오브젝트를 구현하는 과정에서 SQL의 기능을 100% 활용할 수 있게 합니다. 자주 사용되는 J2EE 디자인
패턴을 프레임워크에 빌트인(Built-in) 형태로 구현하여, 애플리케이션의 성능과 확장성을 보장합니다.
Controller 계층
Oracle JDeveloper는 오픈 소스 Apache Jakarta Struts 프레임워크를 위한 페이지 플로우 모델러(page flow modeler)를 제공합니다. 이 모델러는 애플리케이션 플로우의 개발을 단순화하기 위한 비주얼 인터페이스를 제공합니다. 개발자는 Struts 컴포넌트를 다이어그램에 드래그-앤-드롭 함으로써 간단하게 페이지 플로우를 모델링할 수 있습니다. 다이어그램은 struts-config.xml 파일에 정의된 소스와 자동적으로 동기화됩니다. 또 개발자는 Data Control Palette를 사용하여 Business Service 메소드와 Struts 액션을 연계할 수 있습니다. Struts 페이지 플로우 다이어그램은 웹페이지 편집 및 Struts 액션 코딩을 위한 드릴-다운 액세스를 제공합니다.

Model 계층
Oracle JDeveloper는 Model 계층을 통해 Business Service 계층의 컴포넌트와 Controller 및 View 계층을 바인딩하기 위한 혁신적인 방법을 제공합니다. 개발자는 단순한 드래그-앤-드롭 작업으로 데이타 오브젝트를 사용자 인터페이스와 바인딩할 수 있습니다. 또 동일한 메커니즘을 이용하여 컨트롤러 액션과 Business Service 계층에 정의된 메소드를 바인딩할 수 있습니다.
View 계층
Oracle JDeveloper는 HTML 및 Swing 기반 사용자 인터페이스 구현을 귀한 비주얼 레이아웃 에디터(visual
layout editor)를 제공합니다. 개발자는 컴포넌트 팔레트를 사용하여 애플리케이션 사용자 인터페이스에 비주얼 컴포넌트를 추가할 수
있습니다. 컴포넌트 팔레트는 표준 JavaBean 또는 JSP Tag Library를 이용해 확장 가능합니다. 또 Property
inspector를 이용하여 비주얼 컴포넌트의 속성을 선언적으로 정의하는 것이 가능합니다. 비주얼 레이아웃 에디터는 소스 코드와 항상 동기화된
상태를 유지하고 있으므로, 개발자는 자신이 선호하는 편집 모드를 자유롭게 선택할 수 있습니다.
Data Control Palette
윈도우는 Business Service 계층에 대한 뷰를 제공합니다. 개발자는 팔레트 상에서 드래그-앤-드롭 작업을 통해 사용자 인터페이스
컴포넌트와 Business Service를 바인딩할 수 있습니다.

Oracle ADF는 웹 애플리케이션을 위한 ADF UIX를 포함하고 있습니다. ADF UIX는 고급 HTML 사용자 인터페이스를 선언적으로 정의하는 데 사용되는 매우 다양한 UI 컴포넌트들로 구성되어 있습니다. ADF UIX의 주요 기능이 아래와 같습니다:
• 템플릿 기반의 일관성 있는 룩앤필
• 강력한 사용자 인터페이스 커스터마이즈 기능
• 다국어
변환 기능
• 웹 또는 모바일 인터페이스를 응용한 유연한 구현
• 런타임 상에서의 partial page rendering 지원
• 테이블 컬럼 소트, 캘린더, 색상 선택기(color picker), 값 목록 등 다양한 빌트인 컴포넌트와 기능 지원
• 선언적
페이지 정의 기능

결론
Oracle ADF는 디자인 패턴 및 인프라스트럭처 코드를 설치 후 즉시 사용 가능한 형태로 제공함으로써 J2EE 개발 작업을 한층 쉽게
합니다. Oracle ADF는 개발 방법론, 테크놀로지, 구축 플랫폼의 자유로운 선택을 가능하게 합니다. Oracle ADF의 첨단 아키텍처와
Oracle JDeveloper 10g의 비주얼 개발 환경을 조합하여, 초보 및 숙련 개발자 모두를 위한 최적의 Java 개발환경을 구현하고
생산성을 향상시킬 수 있습니다.
Oracle ADF와 Oracle JDeveloper에 관련한 리소스는 Oracle Technology
Network (OTN) http://otn.oracle.com/product/jdev을 통해 제공되고 있습니다.