모바일 인터넷
DESCRIPTION
모바일 인터넷. 한신대학교 소프트웨어학과 류승택 2004 년 2 학기. 강의소개. 대상 : 한신대학교 소프트웨어학과 3 학년 기간 : 2004. 9. ~ 2004. 12. 시간 : 매주 수 6,7,8 교시 교재 주교재 : 모바일 플랫폼 천하통일 ! 위피 프로그래밍 ( 제우미디어 , 2004) 부교재 : 위피 (WIPI) 모바일 프로그래밍 ( 한빛미디어 , 2003) 클릭하세요 위피 (WIPI) ( 대림출판사 , 2004) 강의자료 - PowerPoint PPT PresentationTRANSCRIPT
모바일 인터넷
한신대학교 소프트웨어학과류승택
2004 년 2 학기
강의소개
대상 : 한신대학교 소프트웨어학과 3 학년 기간 : 2004. 9. ~ 2004. 12. 시간 : 매주 수 6,7,8 교시 교재
주교재 : • 모바일 플랫폼 천하통일 ! 위피 프로그래밍 ( 제우미디어 , 200
4) 부교재 :
• 위피 (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)
– 임베디드 디바이스의 다양하고 제한된 환경에서 자바환경을 탑재하기 위한 플랫폼
Java 플랫폼
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)
모바일 프로그래밍 혼란기
모바일 플랫폼의 난립
추진사 플랫폼 개발언어 수행방식
LG( 썬 ) KVM Java 인터프리터 (VM)
LG( 아로마소프트 ) 키티호크 Java 인터프리터 (VM)
SK 텔레콤 SK-VM Java 인터프리터 (VM)
SK 텔레콤 (신지소프트 )
GVM C/C++ 인터프리터 (VM)
SK 텔레콤 WITOP Java, C/C++ 인터프리터 (VM)
KTF( 모빌탑 ) MAP C/C++ 바이너리 ( 네이티브 )
KTF( 퀄컴 ) Brew C/C++ 바이너리 ( 네이티브 )
모바일 플랫폼
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 의 개발 환경 구축 (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