230 likes | 374 Views
J2ME(Java 2 Micro Edition). Wireless Application 기술 (1). WAP(Wireless Application Protocol) 1995 년 처음으로 선보임 휴대폰이나 PDA 같은 무선 단말기를 이용해 인터넷에 접속할 방법을 해결 무선 단말기와 network server, WAP 프로그래밍 모델 , WAP 프로토콜 , WML(Wireless Markup Language), WMLScript, microbrowser 등의 커뮤니케이션을 가능하게 하는 표준을 정의.
E N D
Wireless Application 기술(1) • WAP(Wireless Application Protocol) • 1995년 처음으로 선보임 • 휴대폰이나 PDA같은 무선 단말기를 이용해 인터넷에 접속할 방법을 해결 • 무선 단말기와 network server, WAP 프로그래밍 모델, WAP 프로토콜, WML(Wireless Markup Language), WMLScript, microbrowser 등의 커뮤니케이션을 가능하게 하는 표준을 정의
Wireless Application 기술(2) • i-Mode • 일본의 NTT DoCoMo가 발표 • Packet-switched network를 통해 무선 장치들이 인터넷에 접속하도록 하는 방식 • cHTML(compact HTML)이라는 자체 markup language를 갖고 있음 • cHTML이 HTML의 한 부분이므로 i-Mode 페이지들은 일반적인 웹 브라우저에서도 볼 수 있음
J2ME의 등장 • WAP과 i-Mode의 한계 • 보안성 취약, 불편한 사용자 인터페이스, 지속적으로 연결이 되어 있어야 하는 문제 • J2ME • 사용자들은 더욱 안전한 wireless application, 게임같이 interactive한 application, 클라이언트/서버용 application같이 복잡한 application들을 요구 • 이러한 문제점을 해결하기 위해 설계
J2ME의 특징(1) • 플랫폼 독립성 • Write Once, Run Anywhere의 기본 개념을 무선 단말기로 확장 • 자바를 이용해 개발된 무선 애플리케이션은 각기 다른 제조사의 다른 제품에서도 실행 • 프로그램의 이식성을 크게 향상
J2ME의 특징(2) • 쉬운 프로그래밍 언어 • 자바를 사용하면 개발 시간과 비용을 절감할 수 있고 따라서 생산성을 상당히 증대할 수 있음 • 풍부한 network 기능 • network을 염두에 두고 설계 • 네트워크 프로그램을 훨씬 쉽게 만들 수 있는 풍부한 네트워크 라이브러리 제공
J2ME의 특징(3) • 내장된 보안 모델 • Class loader, Bytecode verifier로부터 Security Manager에 이르기까지 몇 단계의 보안을 제공 • 동적 프로그램 배포 • 현존하는 대부분의 무선 단말기용 애플리케이션들은 장치에 내장되어 고정된 것이 특징 • J2ME는 무선 network을 통해 단말기에 애플리케이션을 다운로드하고 설치할 수 있는 동적 배포 메커니즘을 제공 • 웹 브라우저에서 애플릿을 실행하는 것과 비슷함
J2ME의 특징(4) • 분산 컴퓨팅 • J2ME를 사용해 개발된 애플리케이션들은 기업용 무선 애플리케이션을 사용할 때 Back End를 지원해 주는 J2EE와 쉽게 통합될 수 있다 • GUI • 단말기의 제한된 디스플레이 영역을 최대한 활용할 수 있는 UI와 이벤트 핸들링 라이브러리들을 풍부하게 제공 • 이러한 UI를 이용해 무선 단말기에서 더욱 정교한 비디오 게임이나 복잡한 오락용 애플리케이션을 만들 수 있음
J2ME의 특징(5) • 휴대전화, PDA, 스크린폰, 디지털 TV 셋탑 박스, 자동차용 네비게이션 시스템, network 스위치, 홈 오토메이션 등에 사용되는 애플리케이션을 겨냥한 플랫폼 • 다양한 종류의 장치를 지원하기 위해 이식성과 확장성을 지닌 구조를 채택
Java 2의 Edition • Java 2 Enterprise Edition(J2EE) • 비즈니스 서버용 애플리케이션용 • Java 2 Standard Edition(J2SE) • 일반적인 데스크탑 애플리케이션용 • Java 2 Micro Edition(J2ME) • 가전 기기와 임베디드 장치를 위한 차세대 애플리케이션용
J2ME의 Layer(1) • 기기의 OS위에 3계층을 정의 • Java Virtual Machine Layer • 특정 J2ME의 사양을 지원하고 특정 장치의 OS에 맞춰져 있는 버추얼 머신을 구현 • CVM과 KVM • Configuration Layer • 사용 메모리와 사용 전력이 비슷한 장치들을 수평적인 그룹으로 나누고 그에 대한 클리스 라이브러리들을 정의 • Profile Layer • 특정한 수직적인 시장의 요구를 충족하기 위한 클래스 라이브러리들을 정의
J2ME의 Layer(2) • Configuration과 Profile은 J2ME의 핵심적인 요소 • Configuration과 Profile의 목적은 virtual machine과 클래스 라이브러리를 특정한 장치 그룹에서 최적화
CDC와 CDLC • CDC(Connected Limited Device Configuration) • 일반적으로 다양한 사용자 인터페이스, 2~16MB의 메모리, 32 비트 이상의 CPU를 가지고 있고, 대부분 TCP/IP를 이용하는 고대역폭의 network에 지속적으로 연결 • TV 셋탑 박스, 인터넷 TV, 인터넷 스크린폰, 고급 통신 장비, 자용차용 네비게이션 시스템 • CDLC • 개인용 이동 단말기 장치에 쓰임 • 간단한 사용자 인터페이스, 128KB에서 1MB의 메모리, 16비트나 32비트 CPU를 가지며, 일반적으로 TCP/IP를 이용하지 않는 저대역폭의 비지속적인 network을 사용 • 일반적인 휴대폰, 양방향 무선 호출기, Palm OS를 사용하는 PDA
J2ME Profile • Foundation Profile • J2SE의 API를 완전히 구현한 JVM을 필요로 하는 장치를 위한 Profile • RMI Profile • J2SE 1.3의 RMI API의 최소 부분을 정의한 CDC 기반의 Profile • Personal Profile • Personal Java 환경에서 확장된 CDC Profile • PDAP Profile • 리소스가 작고 제한적인 휴대 장치(PDA)를 위한 사용자 인터페이스와 데이터 스토리지를 제공하는 CLDC Profile • MIDP(Mobile Information Device Profile) • 휴대폰, 양방향 무선 호출기와 같은 장치에 필요한 사용자 인터페이스, persistence storage, network, 애플리케이션 모델 API들을 제공하는 Profile
MIDP/CLDC/KVM MID : Mobile Information Device의 하드웨어 Native System Software : Device에서 사용되는 OS와 각종 라이브러리들 MIDP Applications : CLDC와 MIDP에서 정의한 클래스만을 사용하여 개발된 자바 응용프로그램 OEM-Specific Applications : CLDC와 MIDP에 명시되지 않은 개발업체 및 서비스 사업자가 정의한 클래스를(OEM-specific Classes 또는 OEM-specific service API) 사용하여 개발된 자바 응용프로그램 Native Applications : J2ME와는 별도로 휴대폰 단말기 상에서 직접 개발된 응용프로그램으로 음성 관련 또는 이미지 decode 등이 포함
CLDC 라이브러리 • javax.microedition.io.* 패키지에 정의 • java.io, java.net 패키지의 네트워크 관련 클래스들을 일반화한 것 • 기본적인 데이터 타입 • byte, short, int, long, char, boolean • CLDC용 장치가 부동 소수점을 지원하지 않고, 부동 소수점을 지원하는 소프트웨어 비용이 엄청나기 때문에 float와 double은 지원하지 않는다
MIDP 라이브러리(1) • CLDC 라이브러리들이 장치에 독립적인 기능을 제공하는 반면, MIDP 라이브러리들은 장치에 한정적인 기능을 제공 • javax.microedition.midlet 패키지에 정의 • 모든 MIDP 애플리케이션들은 이 패키지의 MIDlet 클래스를 상속하고, startApp(), pauseApp(), destroyApp()의 3가지 추상 메소드를 구현해야 함
MIDP 라이브러리(2) • GUI • 장치의 이식성에 초점을 맞춘 상위 레벨의 API • 특정 장치에서 작동하는 그래픽 요소와 저수준의 입력 이벤트들에 초점을 맞춘 하위 레벨의 API • GUI와 이벤트 핸들링에 관련된 클래스들은 javax.microedition.lcdui 패키지에 정의
MIDP 라이브러리(3) • Persistent Storage • 데이터를 저장하고 삭제하고 업데이트할 수 있도록 해줌 • javax.microedition.rms 패키지에 정의 • Network • HttpConnection 인터페이스는 모든 MIDP 상에서 필수적으로 구현. 즉, 모든 MIDP용 장치에서 HTTP 통신이 가능 • javax.microedition.io 패키지에 정의
MIDlet • MIDP용 장치에서 사용한 애플리케이션 • 애플릿과 유사. main() 이 없는 대신 javax.microedition.MIDlet 클래스를 상속받아 startApp(), pauseApp(), destroyApp()를 구현해야 함 • MIDlet의 라이프 사이클
AMS(Application Management Software) • 사용자의 무선 장치에 시리얼 케이블이나 인터넷을 통해 MIDlet을 설치하거나 제거하는 기능을 제공 • MIDlet의 실행 환경을 제공. MIDlet이 초기화되면 AMS는 CLDC클래스나 MIDP 클래스, KVM 등 MIDlet에서 사용할 수 있는 시스템 자원을 확보함 • 애플리케이션을 설치하고 실행할 때 발생할 수 있는 모든 오류들을 시스템 충돌없이 처리