제1장 모바일과 JAVA 1. Mobile이라는 꿈과 혼돈의 세상 ... 42 Mobile, 꿈의 세상 ... 42 인터넷이 만든 세상 ... 42 핸드폰이 만든 세상 ... 43 Mobile이 꿈꾸는 세상 ... 43 Mobile, 혼돈의 세상 ... 44 Mobile VM(Virtual Machine) ... 44 2. Mobile이라는 작은 세상 ... 46 작은 세상의 한계 ... 46 메모리 ... 46 power ... 46 input ... 46 output ... 46 Size ... 46 Network ... 47 작은 세상에서의 프로그래밍 ... 47 가능하면 프로그램을 최대한 단순화시키고 작게 만들어라. ... 47 서버 컴퓨터의 이용성을 생각하라. ... 47 객체 이용에 효율성을 생각하라. ... 48 가비지 콜렉션의 효율성을 고려하라. ... 48 예외 처리의 효율성을 고려하라. ... 48 3. 왜 Java인가? ... 48 자바의 특징 ... 48 객체지향 언어 ... 48 플랫폼에 독립적이다. ... 49 멀티스레드를 지원한다. ... 50 가비지 컬렉션 ... 51 자바의 실행 환경 ... 51 자바 클래스 파일 ... 51 자바 가상 머신 ... 52 클래스 로더기 ... 52 클래스 검증기 ... 53 Native code interface ... 53 Runtime Library ... 53 자바 프로그래밍 종류 ... 53 Application ... 53 Applet ... 53 Servlet ... 54 Jsp(Java Server Pages) ... 54 JDBC ... 55 JFC(Java Foundation Class) ... 55 JMFC(Java Media Framework) ... 55 RMI(Remote Method Invocation) ... 56 4. Mobile에서의 Java ... 56 제2장 JAVA 프로그래밍 기초 1. JAVA 환경 설정 ... 60 JDK 설치 ... 61 win98에서의 JDK 환경 설정 ... 62 win2000에서의 JDK 환경 설정 ... 64 2. JAVA 프로그램 기본 구조 ... 65 package ... 65 import ... 66 class 선언문 ... 66 생성자 ... 67 variable member ... 67 method member ... 67 3. JAVA 실행 파일 ... 67 javac ... 68 java ... 68 appletviewer ... 69 javadoc ... 69 HelloWorld.java ... 70 javah ... 71 javap ... 72 4. 데이터 타입 ... 72 정수형 ... 73 실수형 ... 73 문자형 ... 74 논리형 ... 74 String ... 74 5. 연산자 ... 75 단항 연산자 ... 75 산술 연산자 ... 76 쉬프트 연산자 ... 76 ShiftTest.java ... 76 비교 연산자 ... 78 InstanceofTest.java ... 78 비트 연산자 ... 79 논리 연산자 ... 79 ShortCircuitTest.java ... 80 조건 연산자 ... 81 6. 문장 ... 81 if-else 문 ... 81 단일 if 문 ... 81 if-else 문 ... 81 else if 문 ... 82 switch 문 ... 82 while 문 ... 83 do-while 문 ... 83 for 문 ... 84 break 문 ... 84 continue 문 ... 84 7. 배열 ... 85 배열 선언 ... 85 배열 생성 ... 85 배열 초기화 ... 86 제3장 객체지향 기초 개념 JAVA 1. 객체지향 기술이란? ... 88 2. 객체지향 기본 개념 ... 89 객체 ... 89 속성과 행위 ... 89 캡슐화 ... 90 메시지 ... 90 클래스 ... 91 추상화 ... 91 상속 ... 91 다형성 ... 92 3. Java 프로그램의 3단계 ... 92 객체 모델링 ... 93 클래스 설계 ... 94 Grade.java ... 96 객체 생성과 이용 ... 97 객체 생성 ... 97 객체 이용 ... 98 GradeTest.java ... 98 제4장 자바 프로그래밍 핵심 개념 1. 생성자 ... 102 생성자 기본 개념 ... 102 생성자 실행 ... 103 2. 상속 ... 105 상속 기본 개념 ... 105 ExtendsTest.java ... 105 this와 super ... 107 ThisSuperTest.java ... 107 상속과 생성자 ... 108 InheritanceTest.java ... 110 3. 접근제한 ... 111 XY.java ... 112 PrivateTest.java ... 113 SayHello.java ... 114 Test.java ... 114 4. 다형성 ... 115 오버로딩 ... 115 오버라이딩 ... 116 OverridingTest.java ... 117 5. 추상형 ... 118 추상 클래스 ... 118 AbstractClassTest.java ... 119 인터페이스 ... 120 InterfaceTest.java ... 121 6. static & final ... 122 static ... 122 StaticTest.java ... 123 final ... 125 7. 가비지 컬렉션 ... 125 8. 예외 처리 ... 126 try-catch ... 127 ExceptionTest.java ... 128 throws-throw ... 129 제5장 자바와 무선 인터넷 프로그래밍(WAP) 1. WAP 소개 ... 132 2. WAP SEVER 환경 설정 ... 133 APACHE 웹 서버 환경 설정 ... 134 3. WAP 클라이언트 환경설정 ... 137 upsdkW401e.exe 설치하기 ... 137 me111_cp.exe 설치하기 ... 140 4. 011 핸드폰 무선 인터넷 프로그래밍(WML) ... 140 index.wml ... 141 menu.wml ... 141 text.wml ... 144 image.wml ... 146 input.wml ... 147 5. 016 핸드폰 무선 인터넷 프로그래밍(MHTML) ... 149 Image.html ... 150 metal1.html ... 152 metal2.html ... 152 metal3.html ... 154 6. 019핸드폰 무선 인터넷 프로그래밍(HDML) ... 155 index.hdml ... 155 text.hdml ... 157 image.hdml ... 158 input.hdml ... 159 7. WAP의 한계와 자바 ... 160 제6장 모바일 자바 J2ME 1. JAVA 표준 스펙들 ... 164 J2SE ... 166 J2EE ... 166 J2ME ... 166 2. J2ME란... ... 166 동적인 애플리케이션 다운로드(자동 업그레이드) ... 168 플랫폼 호환성에 대한 강력함을 제공 ... 168 비연결성 ... 168 보안 문제 ... 169 3. 모바일 가상 머신 KVM ... 169 4. J2ME 기본 구조 ... 170 5. 컨피그레이션 ... 172 6. 프로파일 ... 173 제7장 J2ME Configuration CLDC, CDC 1. CLDC(Connected Limited Device Configuration)란? ... 176 2. CLDC의 특성 ... 178 Java 언어의 기본 특징을 가지고 있다. ... 178 가상 머신 포함 ... 179 보안 모델의 정의 ... 179 J2SE에서 가져온 패키지들의 보유 ... 179 네트워킹과 입출력을 위한 J2ME 패키지들의 보유 ... 179 3. CLDC의 KVM과 일반 JVM과의 차이점 ... 180 부동 소수점을 지원하지 않는다. ... 180 사용자 정의 클래스 로더를 사용할 수 없다. ... 180 Reflection 패키지를 지원하지 않는다. ... 181 쓰레드 그룹(ThreadGroup)과 데몬 쓰레드 그룹(Demon Thread)을 지원하지 않는다. ... 181 에러 처리가 제한적이다. ... 181 클래스 검증 과정이 분리되어 있다. ... 181 4. CLDC의 보안 모델 ... 181 모든 응용 프로그램은 가상 머신 위에서만 실행되어져야 한다. ... 182 Preverify 및 Rumtime verify ... 182 5. CLDC와 MIDP와의 관계 ... 183 6. CLDC 라이브러리 ... 185 7. CDC(Connected Device Configuration)란? ... 187 8. CDC의 특성 ... 188 J2ME의 대부분 API를 지원한다. ... 189 JVM을 완벽하게 지원한다. ... 189 CDC는 CLDC의 모든 클래스 패키지를 가지고 있다. ... 189 9. CDC 라이브러리 ... 189 제8장 CLDC 개발툴의 설치 및 CLDC 프로그래밍 과정 1. 개발 툴의 설치 및 환경 설정 ... 192 j2me_cldc-1_0-src-winsol 환경 설정 ... 192 CLDC 환경 설정 ... 192 데모 프로그램 실행 ... 195 2. CLDC 프로그래밍 과정 및 프로그래밍 ... 197 CLDC 프로그램 실행 단계 ... 197 CLDC 실행 단계 ... 198 CLDC 프로그래밍1 - HelloSpotlet ... 200 HelloSpotlet.java ... 201 CLDC 프로그래밍2 - DrawTest ... 203 DrawTest.java ... 203 제9장 J2ME Profile MIDP 1. MIDP란? ... 210 MIDP 개요 ... 210 MIDP 역할 ... 212 2. MIDLET란? ... 212 3. JAM, MIDlet Suite, JAD, JAR, JAM(Java Application Manager) ... 215 JAM(Java Application Manager) ... 215 MIDlet Suite와 JAR ... 216 JAD(Java Application Descriptor)와 Manifest ... 217 응용 프로그램 개발에서 배포까지 ... 219 제10장 MIDP-fcs의 설치 및 실행 1. MIDP의 환경 ... 222 2. MIDP_fcs 소개 ... 223 3. JDKI.3.1 설치 ... 224 4. MIDP_fcs 설치 ... 224 MIDP-fcs 설치 ... 225 5. 예제 실행 테스트 ... 228 firstMIDlet.java ... 228 MIDP-fcs 환경에서의 midp 프로그램 실행 ... 229 6. 웹 서버 연동 테스트 ... 232 웹 서버 연동 테스트 ... 233 제11장 Wireless Toolkit의 설치 및 실행 1. Wireless Toolkit 소개 ... 240 2. Wireless Toolkit 설치 ... 241 Wireless Toolkit 설치 ... 241 3. Wireless Toolkit 실행 테스트 ... 245 Wireless Toolkit 실행 테스트 ... 245 제12장 Forte for Java CE 1. Forte For Java 소개 ... 254 2. Forte For Java CE 설치 ... 256 Forte For Java CE 설치 ... 257 3. Forte For Java CE에서의 MIDP 프로그램 테스트 ... 263 Forte for Java CE 환경에서의 MIDP 프로그램 ... 263 Test.java ... 265 제13장 무선 핸드폰 화면 구성 프로그래밍 소개 1. J2ME 기본 API ... 274 java.lang ... 276 java.io ... 277 java.util ... 278 2. MIDP 유저 인터페이스 개요 ... 278 3. Icdui의 구조 ... 280 4. Display 클래스 ... 282 5. Command 클래스 ... 284 6. Screen 클래스 ... 286 TickerTest.java ... 288 7. Canvas 클래스 ... 290 제14장 Screen 프로그래밍 1. TextBox ... 292 TextBoxTest.java ... 296 2. List ... 297 ListTest.java ... 298 3. Alert ... 300 AlertTest.java ... 303 4. Form ... 305 FormTest.java ... 307 FormTest2.java ... 309 제15장 Item 프로그래밍 1. Item ... 314 2. ChoiceGroup ... 315 ChoiceGroup.java ... 317 3. DateField ... 320 4. Date ... 321 Date FieldTest.java ... 322 5. Gauge ... 324 GaugeTest.java ... 325 6. TextField ... 327 TextFieldTest.java ... 328 제16장 MIDP 이벤트 프로그래밍 1. Item 상태 이벤트 ... 332 ItemStateTest.java ... 334 2. Canvas 이벤트 ... 336 키 이벤트와 키 코드 ... 336 GameActions 키 코드 ... 337 Canvas에서의 이벤트 ... 337 이벤트 관련 메서드 ... 339 제17장 MIDP 그래픽 프로그래밍 1. Graphics 클래스 ... 344 paint 관련 메서드 ... 345 앵커 포인트 ... 345 앵커 포인트 상수 ... 346 2. Image 클래스 ... 347 MoveAction.java ... 348 DrawTest.java ... 352 3. Font 클래스 ... 356 FontTest.java ... 358 제18장 MIDP 애니메이션 프로그래밍(thread/timer) 1. Thread 소개 ... 364 2. Thread를 이용한 애니메이션 프로그래밍 ... 368 doolyAnimation.java ... 368 doolyCanvas.java ... 370 3. Timer와 TimerTask 소개 ... 374 Timer ... 374 TimerTacker ... 375 4. Timer를 이용한 애니메이션 프로그래밍 ... 376 TimerTest.java ... 377 제19장 MIDP 네트워크 프로그래밍 1. MIDP 네트워크 프로그래밍 소개 ... 382 Connection 인터페이스와 Connector 클래스 ... 383 2. HttpConnection ... 384 3. page 가져오기 ... 387 Http Test.java ... 387 4. HTTP POST 요청 ... 390 postHttpConnection.java ... 390 제20장 MIDP 서버 연동 프로그래밍 1. 서버 환경 구축 ... 396 apache 웹 서버 설치 ... 396 jakarta-tomcat 설치 ... 397 tomcat 설치 ... 397 tomcat 환경 설정 ... 398 tomcat 환경 설정하기 ... 398 mysql 설치 ... 402 mysql 설치하기 ... 402 mysql 실행과 jdbc 환경 설정 ... 404 mysql 실행과 jdbc 환경 설정하기 ... 404 jdbc 연동 서블릿 프로그램 테스트 ... 409 jdbc 연동 서블릿 프로그램 테스트하기 ... 409 2. Post 방식을 통한 servlet 연동 ... 411 postHttpConnection2.java ... 412 ReplyServlet.java ... 416 3. get 방식을 통한 servlet 연동 ... 418 GetMIDletServlet.java ... 419 ParamServlet.java ... 422 4. jsp 연동을 통한 인증처리 ... 423 IdCheckClient.java ... 426 IdCheckServer.jsp ... 429 DBConnect.java ... 429 Id_Check.java ... 430 5. socket 방식을 통한 서버 연동 ... 433 SocketMIDlet.java ... 434 midpServer.java ... 437 제21장 RMS(Record Management System) 1. RMS(Record Management System) 개요 ... 442 RMS 패키지 ... 442 Record Store와 Record ... 443 Record Store와 Record의 삭제 ... 446 2. RMS 주요 API ... 448 3. Record Store의 생성과 레코드의 입력 ... 451 SimpleRMS.java ... 452 RMSMIDlet.java ... 454 4. 정렬과 필터링 작업 ... 457 RecordFilter와 RecordComparator를 통한 정렬과 필터링 작업 ... 457 MyComparator.java ... 461 SimpleRMS.java ... 463 RMSMIDlet.java ... 466 SimpleRMS.java ... 469 RMSMIDlet.java ... 471 5. 이메일 주소록 미들릿의 작성 ... 474 RecordForm.java ... 475 EmailSort.java ... 476 EmailBookRMS.java ... 480 제22장 상용 시스템 SK-VM 1. SK-VM 설치 ... 494 SK-VM 설치하기 ... 495 2. SK-VM SDK ... 499 SK-VM 플랫폼 SDK 개요 ... 499 SDK 설치 ... 499 SDK 제거 ... 499 에뮬레이터 실행 ... 499 버튼 기능 ... 499 자바 프로그램의 컴파일 ... 500 클래스 실행 ... 500 png2lbm 사용 ... 502 3. 컨테츠 개발 가이드 ... 503 컨텐츠 배포 ... 503 MSD 파일 포맷 ... 503 WML 페이지 연동 ... 506 메모리 ... 507 이미지 파일과 메모리 ... 508 PNG ... 509 LBM ... 509 칼라 단말기에서의 메모리 ... 510 파일 시스템 ... 510 파일 액세스 속도 ... 510 그래픽 ... 511 Clipping 기법 사용 ... 511 paint()할 때 Clipping Area 체크 ... 511 사운드 pause(), resume() ... 512 MMF 사운드 만드는 방법 ... 512 3D 기능 ... 512 구현상 유의해야 할 점 ... 513 MIDP에 추가된 부분 ... 514 구현자의 선택 사항 처리 방식 ... 515 프로그래밍 권고안 ... 515 XVM 에러 코드 ... 516 정상적인 에러 ... 516 비정상적인 에러 ... 516 GC(Garbage Collector) ... 517 1) system.gc()를 호출했을 때 ... 517 2) 할당하려고 하는 크기의 연속된 메모리 공간이 부족할 때 ... 518 3) 일정 메모리 할당 회수를 넘겼을 때 ... 518 제23장 상용 시스템(LGT JAVA STATION) 1. LGT JAVA STATION 개요 ... 522 디스플레이 ... 523 한글 입력 방식 ... 523 메모리 및 플래시 롬 ... 523 색상 ... 523 MIDI, Vibration, Backlight 지원 ... 523 MIDP Specification ... 524 JAD와 Manifest에서의 한글 사용 ... 524 2. OEM API ... 525 mmpp.microedition.lcdui 패키지 ... 525 GraphicsX 클래스 ... 525 TextFieldX 클래스 ... 526 mmpp.lang 패키지 ... 528 MathFP 클래스 ... 528 mmpp.media 패키지 ... 528 BackLight 클래스 ... 528 Beep 클래스 ... 528 MediaPlayer 클래스 ... 528 Vibration 클래스 ... 529 mmpp.phone 패키지 ... 529 Phone 클래스 ... 529 3. LGT JAVA STATION SDK의 설치 및 실행 ... 530 LGT JAVA STATION SDK 설치 및 실행 ... 530 JAD 파일과 manifest 파일의 속성 ... 532 4. LGT JAVA STATION를 이용한 미들릿 작성 ... 534 GraphicsXMIDlet.java ... 535 GraphicsXCanvax.java ... 537 제24장 SK-VM 기반의 만화 어플리케이션 1. 만화 어플리케이션의 흐름 ... 546 간단한 배치 파일 만들기 ... 546 디렉토리 구조 ... 546 실행 결과 화면 ... 547 Cartoon 애플리케이션의 전체 흐름 ... 547 2. 만화 어플리케이션 프로그래밍 ... 548 Cartoon.java ... 548 CartoonCanvas.java ... 552 제25장 SK-VM 기반의 야바위 게임 1. 야바위 게임 ... 568 test.java ... 569 제26장 SK-VM 기반의 스네이크 게임 1. 스네이크 게임 ... 582 Biam.java ... 583 BiamCanvas.java ... 584 Board.java ... 596 Score.java ... 604 제27장 MIDP 기반의 소코반 게임 분석 1. 소코반 게임 ... 608 Sokoban.java ... 609 Score.java ... 615 SokoCanvas.java ... 621 Board.java ... 633 SokoCanvas.java ... 645 제28장 MIDP-fcs 기반의 ManyBalls 게임 분석 1. ManyBalls 게임 ... 648 ManyBalls.java ... 650 ManyCanvas.java ... 654 SmallBall.java ... 658 About.java ... 664 제29장 LGT 기반의 Chicken And Cat 게임 1. Chicken And Cat 게임 ... 668 ChickenAndCat.java ... 673 ImageLoader.java ... 676 Chicken.java ... 677 Hen.java ... 679 Cat.java ... 682 GameCanvas.java ... 688 제30장 MIDP와 XML 연동 1. XML에 대해서 ... 689 Markup Language ... 698 Extendsible ... 699 well-formed XML ... 699 Valid XML ... 700 XML 파서 ... 701 wellCheck.xml ... 702 validCheck.xml ... 702 2. MIDP에서 XML 파싱하기 ... 707 kXML 파서 ... 708 MIDPXmlTest.java ... 709