390 likes | 640 Views
모바일 인터넷. 한신대학교 소프트웨어학과 류승택 2004 년 2 학기. 강의소개. 대상 : 한신대학교 소프트웨어학과 3 학년 기간 : 2004. 9. ~ 2004. 12. 시간 : 매주 수 6,7,8 교시 교재 주교재 : 모바일 플랫폼 천하통일 ! 위피 프로그래밍 ( 제우미디어 , 2004) 부교재 : 위피 (WIPI) 모바일 프로그래밍 ( 한빛미디어 , 2003) 클릭하세요 위피 (WIPI) ( 대림출판사 , 2004) 강의자료
E N D
모바일 인터넷 한신대학교 소프트웨어학과 류승택 2004년 2학기
강의소개 • 대상: 한신대학교 소프트웨어학과 3학년 • 기간: 2004. 9. ~ 2004. 12. • 시간: 매주 수 6,7,8교시 • 교재 • 주교재: • 모바일 플랫폼 천하통일! 위피 프로그래밍 (제우미디어, 2004) • 부교재: • 위피(WIPI) 모바일 프로그래밍 (한빛미디어, 2003) • 클릭하세요 위피(WIPI) (대림출판사, 2004) • 강의자료 • http://bluelancer.dnip.net/lectures.htm
강의 내용 • 모바일 프로그래밍 • WIPI의 시작 • 그래픽/데이터베이스 기능 • UI 컴포넌트 • Handset 패키지/ media 패키지 • 모바일 게임 제작
강의 평가 (Coursework) • 시험(Exam) : 50% • 중간(25%), 기말 (25%) • 과제(Programming Assignment) : 40% • 모바일 프로그램밍 예제 : 20% • 모바일 게임 제작 : 20% • 출석(Class Participation) : 10%
모바일 프로그래밍 한신대학교 소프트웨어학과 류승택
모바일 프로그래밍 초창기 • 모바일 환경의 대두 • 무선서비스 • 삐삐(Pager) • 휴대폰(cellular Phone) • 초창기: 음성통화 위주 • 현재: 인터넷과 연결 • 모바일 시장 형성 • 유비쿼터스 (Ubiquitous) • 언제, 어디서나, 이동 중에도 정보를 얻고 서비스를 이용 • 휴대 인터넷 • 유선인터넷은 장소, 무선 인터넷은 용량에 한계 • 장소 제한없이 대용량의 컨텐츠를 즐길 수 있음
모바일과 자바의 만남 • 모바일과 자바의 만남 • 모바일 애플리케이션에 적합한 언어 Java • 독립적인 플랫폼 • 모바일 장치의 하드웨어적 자원 매우 열악 • 쓰레기 수집(Garbage Collection) 기능 • 적은 메모리 메모리 관리 어려움 덜어줌 • 멀티쓰레드 지원 • 속도 향상 및 하드웨어 자원 적게 차지 • 객체지향(Object Orientation) • 예외 처리(Exception Handling)
Java의 현재 • Java 플랫폼 • 자바 가상 머신(JVM)과 표준 API의 집합으로 구성 • 서버급 java 플랫폼으로 개발 • 리소스가 제한적인 소형기기에 모두 적용할 수 없음 • Java를 3개의 Edition으로 나누어 개발 • J2SE (Java 2 Standard Edition) • 일반 자바 애플리케이션이나 Applet 그리고 component의 개발 및 운영 환경 • PC, Workstation 기반 • J2EE (Java 2 Enterprise Edition) • 서버 측면의 멀티미디어 엔터프라이즈 애플리케이션 개발과 배치를 실현하는 J2SE 기반 자바 플랫폼 • J2ME (Java 2 Micro Edition) • 임베디드 디바이스의 다양하고 제한된 환경에서 자바환경을 탑재하기 위한 플랫폼
J2ME 플랫폼 • J2ME 컨피규레이션과 프로파일 • 컨피규레이션(Configuration) • 자바 가상머신과 코어 API들에 대한 명세 • 통일성 • 요구사항이 동일한 디바이스들의 집합은 컨피규레이션으로 정의 • 프로파일(Profile) • 상위 클래스 라이브러리(표준 API 집합)에 대한 명세 • 다양성 • 각 디바이스의 기능, 시장 요구사항에 맞추어 프로파일 정의
J2ME 플랫폼 • J2ME 플랫폼: 다중 컨피규레이션 (메모리의 요구사항에 따라) • CDC (Connected Device Configuration) • 퍼스널 자바를 바탕 • 128K~512K의 메모리가 가용한 디바이스 • 22-bit CPU와 2MB 이상의 메모리 • 낮은 네트워크 전송률, 많은 리소스를 가진 시스템 • 장치마다 다를 수 있는 사용자 인터페이스 • Ex) TV 셋탑 박스, 인터넷 연결 스크린 폰 • CLDC (Connected, Limited Device Configuration) • 기본 가상 머신 : KVM(K Virtual Machine) • 성능이 제한된 CPU와 메모리 리소스를 가진 시스템을 대상으로 설정 • 16-bit, 32-bit CPU에 160KB~512KB의 메모리를 사용하는 기기를 대상 • 전력이나 배터리 파워 공급 제한적 • 낮은 네트워크 전송률, 사용자 인터페이스도 기본적으로 간단 • Ex) 휴대전화, 양방향 호출기, PDA등
J2ME 플랫폼 • KVM (K Virtual Machine) • CLDC의 기본 가상머신 • 작은 크기의 가상머신을 목표로 설계 • 킬로바이트단위의 경량급 가상머신 (K Kilobyte) • SUN, 모토롤라, NTT 도코모, 3Com • 메모리 풋프린트(footprint): 50K 이하 • 클래스 라이브러리 포함: 128K를 넘지 않는 것을 목표
무선 인터넷 환경의 세대별 변화 • 무선 인터넷 환경 • 제 1세대 • WAP (Wireless Application Protocol) • 마이크로 소프트의 ME • NTT 도코모사의 i-mode • 제 2세대 • 단말기 미들웨어 플랫폼 • VM (Virtual Machine) • 네이티브 바이너리 방식 • 제 3세대 • 무선인터넷 표준화 • 이동통신사 + 단말기 제조업체 + CP (Content Provider)
모바일 프로그래밍 혼란기 • 모바일 플랫폼의 난립
모바일 플랫폼 • WAP 방식 서비스 • 속도가 느리고 통신 비용이 많이 발생 • 다운로드 방식의 VM 등장 • 인터프리터(VM) • 데이터 스크립트를 다운로드 받아 실행하는 플러그인 형태 • 네이티브 바이너리 • 프로그램 전체의 실행 파일의 바이너리 다운로드 • 중간 해석 단계를 거치지 않아 빠른 속도로 서비스 제공 • 개발 프로그래밍 언어 • Java와 C 계열
모바일 플랫폼 • 모바일 플랫폼 • GVM (General Virtual Machine) • Mobile C를 이용하여 개발 • XVM (eXtended Virtual Machine) • Java 프로그램을 실행할 수 있는 환경을 위해 개발 • BREW (Binary Runtime Environment for Wireless) • Java에 대응하기 위해 퀄컴사가 개발 • J2ME보다 고속, C/C++로 개발 가능 • KVM (the K Virtual Machine) • 자원이 제약된 소형 디바이스를 목표로 개발 • C 언어로 개발 • MAP (Mobile Application S/W Plug-In) • C 언어 기반으로 작성된 프로그램을 다운로드 받아 실행
플랫폼 통합 • 모바일 서비스 • 플랫폼이 다르면 • 모바일 컨텐츠를 서비스할 수 없음 • 단말기 회사 • 각 플랫폼 별로 단말기 제작 • 컨텐츠 제공자 • 하나의 컨텐츠를 각각 플랫폼에 맞게 다시 제작 • 동일한 시간에 많은 양의 컨텐츠를 개발 할 수 없음 • 이동통신사 • 다양한 서비스 제공할 수 없음 • 플랫폼 통합의 필요성
플랫폼 표준과 무선망 개방 • 이동 통신망 • 독점적 서비스와 폐쇄성 • 이동통신 3사만 사용 • 정부의 무선망 개방 발표 (2003. 9) • 민간기업에 완전 개방 • 무선 인터넷 플랫폼 표준화 • 순수 국산 무선 인터넷 플랫폼 (2003. 4) • WIPI (Wireless Internet Platform for Interoperability)
무선 데이터 서비스 업체 • 무선 데이터 서비스 업체 • 기존 이동 통신 회사의 무선 포털 • ADSL 망을 통하여 초고속 유선 서비스를 실시하는 하나로 통신, 두루넷 • 대형 포탈 업체 (다음, 야후 등) • PC 통신 사업자들 (유니텔, 나우누리 등) • 엄청난 커뮤니티를 보유하고 있는 아이러브 스쿨, 프리챌 등의 사업자들 • 독립 무선 포털 사업자들 • 모바일 인터넷 데이터 센터를 하려고 하는 유선 통신 사업자들
세계 시장의 무선망 개방 추세 • 표준화의 필요성 인식 • 유럽진영 • 3GPP (3rd Generation Partner ship Project) • 한국, 미국등 CDMA 진영 • 3GPP2 • 실제망 개방 및 플랫폼 표준화를 추진하고 있는 나라는 유일하게 우리나라이다.
플랫폼 표준화 WIPI • 플랫폼 표준화 WIPI • (2001/5) 무선 인터넷 표준화 포럼 발족 • (2001/7) 무선 인터넷 플랫폼 특별분과 활동 시작 • (2001/10) 정보통신진흥원 모바일 표준 플랫폼 과제 공모 • (2002/1) 모바일 표준 플랫폼 규격안 추가 접수 • (2002/3) 표준 플랫폼 이름 공모 WIPI 선정 • (2002/5) 한국정보통신기술협회(TTA) 단체 표준으로 WIPI채택 • (2004/2) 위피 2.0 규격 발표
WIPI의 기본적인 기능 • WIPI의 기본적인 기능 • 응용프로그램 머신 코드 다운로드 • 다중 응용 프로그램 수행 • Java, C 언어 모두 지원 • API 및 디렉토리 보안 • API 추가/갱신 지원(동적 링킹 라이브러리) • 메모리 관리 • 응용프로그램 관리 • 다국어 지원(유니코드, 로케일) • 플랫폼 보안
표준 플랫폼 WIPI • 현재의 모바일 VM • C 언어 기반 VM • 적은 메모리의 사용과 빠른 처리 속도 • 보안성 취약, 보급형 단말기에만 적용 • Java 언어 기반 VM • 넓은 가입자 기반, 우수한 보안성 • 메모리 부담, 느린 처리 속도, 고급형 단말기 요구 • 표준 플랫폼 WIPI • 최소한의 API 셋 (HAL)만을 정의 • 하드웨어에 독립적으로 설계 (실행과 이식이 용이)
모바일 표준 플랫폼 규격 응용프로그램 개발자가 사용하는 플랫폼에서 지원하는 기본 API 모음 플랫폼 이식에 있어서 하드웨어 독립성을 지 원하기 위한 계층
WIPI의 계층 (1/2) • WIPI의 계층 • Handset Hardware • 단말기 기본 소프트웨어 • 각 제조사별 기본 소프트웨어 형식 포함 (단말기 운영체제, 기본 통신기능, 각종 디바이스) • HAL (Handset Adaptation Layer) : 하드웨어 추상 계층 • 단말기에 대한 추상화작업 • 하드웨어에 대한 플랫폼 독립성 유지 • 다양한 플랫폼 구현가능
WIPI의 계층 (2/2) • 기본 API 계층 • C / Java 언어로 작성된 응용 프로그램 실행을 위한 환경제공 • Java로 작성된 프로그램에 고속의 바이너리 코드 실행 환경제공 • 다중 응용 프로그램 동시 실행 및 통신 기능 제공 • 동적 API 추가 및 갱신 기능 • 고효율적인 메모리 관리 • 자동 메모리 해제, 메모리 압축 • 응용프로그램 머신 코드 규격 • 자바의 중간코드(바이트 코드) (게이트웨이를 통해) 머신코드 • 플랫폼/API 보안 • 디렉토리/서비스 보안 • 쓰레기 수집 (Garbage Collection)
단말기 최소 권장 사양 • 단말기 최소 권장 사양 • 디스플레이 • 스크린 크기: 96 X 54 이상 • 색상: 회색조 4가지 이상 또는 천연색 256가지 이상 • 입출력장치 • 입력장치: 키패드 • 사운드 장치: 진동 및 비프음 • 네트워크: 무선 및 시리얼을 통한 전송 • 비휘발성(Non-volatile) 메모리 • 플랫폼 라이브러리 사용 비휘발성 메모리: 600KB 이상 • 응용프로그램 사용 비휘발성 메모리: 400KB 이상 • 파일시스템 공간: 500KB 이상 • 휘발성(volatile) 메모리 • HEAP 영역: 300KB 이상 • 플랫폼 라이브러리 사용 가능 영역: 20KB 이상
WIPI의 개발 환경 구축 (JDK 1.4.2 설치) • Download: JDK (Java Development Kit) 1.4.2
WIPI의 개발 환경 구축 (JDK 1.4.2 설치) • 환경 변수 등록 • CLASSPATH C:\j2sdk1.4.2_04\lib\tools.jar
WIPI의 개발 환경 구축 (WIPI Emulator) • AROMA WIPI Emulator • Download: Aroma WIPI Emulator 1.1.1.8
WIPI의 개발 환경 구축 (WIPI Emulator) • WIPI 에뮬레이터 설정 옵션 • Jar Path • jar 파일이 포함되는 경로를 찾아 로드를 설정해주는 부분 • Jlet’s Name (Clet’s Name) • Jlet이 상속되는 클래스 이름 • Heap size (메모리 할당) • 최대 1024KB, 최소 90KB 까지 지원
WIPI의 개발 환경구축 (텍스트 에디터) • Edit Plus (Edit Plus 2.1.2 ) • 도구모음을 이용하여 • 컴파일 • Jar 파일 생성 • 위피 에뮬레이터 수행 을 한번에 할 수 있는 장점
WIPI의 개발 환경구축 (텍스트 에디터) • 도구 모음 이용 • 도구 사용자 도구 구성
WIPI의 개발 환경구축 (자동 실행) • [그룹이름] WIPI • Java Compiler 수행 설정 • [추가] “java compiler” 라고 입력 (메뉴제목) • [명령] C:\j2sdk1.4.2_04\bin\javac.exe -bootclasspath C:\AromaWIPI\JavaAppDemo\lib\classes.zip • 자바 컴파일러 수행경로 (:\j2sdk1.4.2_04\bin\javac.exe ) • WIPI 사용되는 클래스 적용 (-bootclasspath C:\...\classes.zip) • [인수] $(FileName) • 수행되는 자바 파일 이름 • [디렉토리] $(FileDir) • 클래스파일 생성 디렉토리
WIPI의 개발 환경구축 (자동 실행) • Jar 파일 생성하는 방법 (아카이브) • [추가] “Making Jar File” 라고 입력 (메뉴제목) • [명령] C:\j2sdk1.4.2_04\bin\jar.exe cvf • [인수] $(FileNameNoExt).jar *.class *.gif *.png *.bmp *.mid *.mmf • Jar 파일 이름 • [디렉토리] $(FileDir) • Jar 파일 생성 디렉토리
WIPI의 개발 환경구축 (자동 실행) • WIPI Emulator 수행 방법 • [추가] “Running WIPI Emulator” 라고 입력 (메뉴제목) • [명령] C:\AromaWIPI\Emulator\WIPIEmul.exe • [인수] -HEAPSIZE=1024 -classpath $(FIleDir)\$(FileNameNoExt).jar org.kwis.msp.lcdui.Main $(FileNameNoExt) • 전체 에뮬레이터에 적용되는 메모리 크기 (HEAPSIZE) • Jar 파일을 로드하는 역할 (classpath …) • Main 클래스 방식을 적용 (org.kwis.msp.lcdui.Main …) • [디렉토리] C:\AromaWIPI\Emulator