모바일 자바 프로그래밍 MIDlet 프로그래밍 Pslab 오민경.

Slides:



Advertisements
Similar presentations
3. 메소드와 변수 SCJP 자격증 프로젝트 발표자 : 최선웅. 1. 메 소 드 개 념 2. 메 소 드 양 식 3. 메 소 드 변 수 4. 메 소 드 예 제 5. 참 고 문 헌 / 자 료 목 차.
Advertisements

SCJP. Garbage Collection  Garbage Collector( 이하 GC) 가 Heap 영역 에 할당된, 더 이상 사용되지 않는 메모리인 Garbage 를 다른 객체가 사용할 수 있도록 정리하는 것.  C++ 에서의 메모리 해제 int* v=new.
2008 년 11 월 20 일 실습.  실험제목 ◦ 데이터베이스 커넥션 풀  목표 ◦ 데이터베이스 커넥션 풀의 사용.
12 장 자바 애플릿. 2 Applet 개요 Applet 프로그램 – 웹 페이지에 포함되어 구동 된다. 웹 브라우저나 애 플릿뷰어 (appletviewer) 에서 실행되는 프로그램 – 웹 브라우저 내에 Applet 을 해석하여 실행할 수 있 도록 Applet 구동용 인터프리터가.
컴퓨터와 인터넷.
목 차 C# 언어 특징 .NET 프레임워크 C# 콘솔 프로그램 C# 윈도우 프로그램 실습 프로그래밍세미나 2.
클래스 class, 객체 object 생성자 constructor 접근 access 제어 이벤트 event 처리.
4강. Servlet 맛보기 Servlet 문서 작성 하기 web.xml에 서블릿 맵핑 어노테이션을 이용한 서블릿 맵핑
최윤정 Java 프로그래밍 클래스 상속 최윤정
Ch.07-5 xml-rpc 사용하기 김상엽.
작업 스케줄링 Lecture #8.
MIDP UI ps lab 김윤경.
CDC Connected Device Configuration CLDC보다 많은 리소스를 가진 시스템을 대상으로 설정
3. 자바에서 지원하는 패키지 자바에서 기본적으로 제공하는 패키지.
고수준 사용자 인터페이스 프로그래밍 Lecture #4.
Lesson 5. 레퍼런스 데이터형.
제 6장. 생성자와 소멸자 학기 프로그래밍언어및실습 (C++).
8.1 인터페이스 개요와 인터페이스 정의 8.2 인터페이스의 사용 8.3 인터페이스의 상속 8.4 인터페이스 참조
Java 기초 (Java JDK 설치 및 환경설정)
5장. 참조 타입.
제 3장. C보다 나은 C++ II.
모바일 자바 프로그래밍 MIDP 이벤트 & 그래픽 Ps lab 오민경.
Chap08 다중 스레드 8.1 스레드 개요 8.2 Thread 클래스와 스레드 생명주기 8.3 스레드 생성과 사용
11장. 포인터 01_ 포인터의 기본 02_ 포인터와 Const.
SqlParameter 클래스 선문 비트 18기 발표자 : 박성한.
자바 5.0 프로그래밍.
                              데이터베이스 프로그래밍 (소프트웨어 개발 트랙)                               퍼스널 오라클 9i 인스톨.
저수준 사용자 인터페이스 프로그래밍 Lecture #6.
모바일 자바 프로그래밍 JDBC / WAP Ps lab 오민경.
Lesson 7. 클래스와 메소드 - 1.
10장. 예외처리.
자바 5.0 프로그래밍.
1. MIDP란? 2. 하드웨어 사양 3. MIDlet 4. MIDlet Suite
CLDC와 MIDP PS LAB 김윤경.
속성과 리스너 초기화 파라미터 외 파라미터에 대해 이해한다. 리스너를 생성해보고 사용에 대해 이해한다.
CHAP 12. 리소스와 보안.
C#.
[INA470] Java Programming Youn-Hee Han
Method & library.
사용자 함수 사용하기 함수 함수 정의 프로그램에서 특정한 기능을 수행하도록 만든 하나의 단위 작업
자바 5.0 프로그래밍.
자바응용.
인터넷응용프로그래밍 JavaScript(Intro).
HTTP 프로토콜의 요청과 응답 동작을 이해한다. 서블릿 및 JSP 를 알아보고 역할을 이해한다.
Lesson 2. 기본 데이터형.
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
15장 컬렉션 프레임워크 Section 1 컬렉션 프레임워크의 개요 Section 2 리스트 Section 3 셋
자바 5.0 프로그래밍.
LabVIEW WiznTec 주임 박명대 1.
자바 가상 머신 프로그래밍 Chap 10. 자바 컴파일링의 안쪽 ② Pslab 오민경.
Power Java 제11장 상속.
9강. 클래스 실전 학사 관리 프로그램 만들기 프로그래밍이란 결국 데이터를 효율적으로 관리하기 위한 공구
15강. 폼 데이터 값 검증 Validator를 이용한 검증 ValidationUtils 클래스
JA A V W. 06.
CHAP 21. 전화, SMS, 주소록.
18강. 인터페이스 – II - 인터페이스와 다중상속 - 인터페이스를 통한 로봇 장남감 만들기 프로그래밍
.Net Web Application 2007 컴퓨터공학실험(Ⅰ)
제 8장. 클래스의 활용 학기 프로그래밍언어및실습 (C++).
안드로이드 앱 개발과정 Step1. 기초과정 강사 : 정 훈 희.
MIDP 네트워크 프로그래밍 ps lab 김윤경.
발표자 : 이지연 Programming Systems Lab.
구조체(struct)와 공용체(union)
Android -Data Base 윤수진 GyeongSang Univ. IT 1.
2.가상머신의 탐험 도구, Oolong에 대하여 ps lab 김윤경.
1. 지역변수와 전역변수 2. auto, register 3. static,extern 4. 도움말 사용법
29장. 템플릿과 STL 01_ 템플릿 02_ STL.
자바 객체 지향 프로그래밍 Ps lab 김윤경.
7 생성자 함수.
Wireless Java Programming
JAVA 프로그래밍 16장 JNLP.
Presentation transcript:

모바일 자바 프로그래밍 MIDlet 프로그래밍 Pslab 오민경

MIDlet 클래스 MIDlet은 이벤트 기반의 방식 사용 MIDlet 클래스 프로그래밍을 간편하게 하고, 코드를 줄이며, 명확한 Framework 제공. MIDlet 클래스 애플리케이션 관리자가 관계를 갖는 유일한 클래스. 애플리케이션 관리자는 이 클래스를 통해 MIDP 애플리케이션을 시작, 중지, 종료 시킨다. 애플리케이션 관리자가 필요로 하는 동작들을 미리 정의해둔 프레임 워크. 애플리케이션 개발 시, 이 MIDlet 클래스를 상속 받아서 사용.

MIDlet의 생명주기 이벤트 처리 주의!!! Start 이벤트 : startApp() 호출 Paused Destroyed Active MIDlet 시작 pauseApp() startApp() destroyApp() 이벤트 처리 Start 이벤트 : startApp() 호출 Pause 이벤트 : pauseApp() 호출 Destroy 이벤트 : destroyApp() 호출 주의!!! [종료] 버튼 : destroyApp() 호출 [Exit ] 버튼 : notifyDestroyed() 호출

리소스 파일 다루기 리소스는 JAR 파일내에 압축되어 있는 파일의 한가지 형태로 구성. 그러나 MIDP에는 파일 시스템이 정의되어 있지 않다. 따라서 Class 클래스의 getResourceAsStream을 사용한다. public InputStream getResourceAsStream(String name) 파라미터 : 리소스 파일의 경로와 이름. 리턴값 : 해당 리소스 파일의 내용을 얻을 수 있는 InputStream.

시스템 관련 클래스 java.lang 패키지의 System 클래스 java.lang 패키지의 Runtime 클래스 시스템 관련 정보를 제공하는 메소드를 가지고 있다. getProperty() 메소드 시스템과 관련된 정보를 애플리케이션이 알 수 있도록 제공되는 메소드 이 메소드를 통해서 특정 키에 대항하는 시스템의 속성을 얻을 수 있다. gc() 메소드 쓰레기 수집을 명시적으로 요청하여 수행하는 메소드 쓰레기 수집은 매우 부하가 큰 작업이므로 꼭 필요한 데서만 사용 exit() 메소드는 사용할 수 없다. 애플리케이션 고나리자가 미들릿을 실행하기 때문에 미들릿에서 직접 시스템을 종료시키는 것은 허용되지 않는다. 대신에 notifiedDestroyed 메소드를 사용하여 프로그램 종료 java.lang 패키지의 Runtime 클래스 메모리에 관련된 런타임 정보를 제공하는 메소드를 가지고 있다. getRuntime() 메소드 남은 메모리 양 등 런타임 정보를 제공하는 메소드

유틸리티 클래스들 MIDP 유틸리티 클래스들은 java.util 패키지에 포함되어 있다. 클래스 설 명 Calendar 설 명 Calendar 날짜 관련 연산을 제공하는 클래스 Date 특정 시간을 표현하기 위한 클래스 Enumeration 순차적인 원소 나열 형태의 객체에 접근하기 위한 인터페이스 Hashtable 한 쌍의 키와 데이터를 짝지어 다루기 위한 클래스 Random 임의의 무작위 정수 생성을 위한 클래스 Stack 데이터를 후입 선출에 따라 다루기 위한 클래스 Timer 스케줄에 따른 백그라운드 실행을 위한 클래스 TimerTask Timer에 의해 실행될 클래스의 인터페이스 정의를 위한 추상클래스 TimeZone 시간 출력 시 사용할 시간 구역을 표현하는 클래스 Vector 가변 길이 배열을 제공하는 클래스

작고 빠른 자바 프로그램 Object 타입 대신 될 수 있으면 기본형을 써라. 지역변수 : stack에 잡힘 Object 같이 new로 만들어진 변수 : heap에 잡힘 Heap에 잡히고, 해제되는 것이 적어야 빠른 프로그램을 만들 수 있다. Garbage Collector를 돕도록 안 쓰는 Object는 free시킨다. 자바 언어는 기본적으로 제공하는 automatic garbage collector가 있어서, 사용하지 않는 object는 자동으로 지워지게 된다. Object reference를 null로 만들어 주게 되면 금방 garbage collector에 의해 지워질 수가 있다. Exception은 될 수 있으면 줄인다. Exception은 기본적으로 Object이므로, Exception이 많으면 class file이 자동적으로 커지게 된다.

작고 빠른 자바 프로그램 (cont.) 될 수 있으면 local variable을 사용하자. Local variable을 사용하지 않으면 그만큼 memory access가 많아지고 수행속도는 늦어진다. 될 수 있으면 String Concatenation을 피하라. String에 어떤 조작을 하려면 내부에서 자동적으로 StringBuffer을 만든다. 이는 시스템에 많은 부하를 가져온다. 따라서 무엇인가 String 을 조가하고 싶다면 반드시 StringBuffer로 만들어 사용한다.

ResourceExampleMIDlet import java.io.*; import javax.microedition.midlet.*; import javax.microedition.lcdui.*; public class ResourceExampleMIDlet extends MIDlet implements CommandListener { private Display display; private Form form; private Command exitCommand; public ResourceExampleMIDlet() { // 컴포넌트를 생성한다. form = new Form("ResourceExample"); // 텍스트 리소스 파일을 읽어들인다. StringBuffer strbuf = new StringBuffer(300); try { InputStream is = getClass().getResourceAsStream("/text/sample.txt"); InputStreamReader reader = new InputStreamReader(is); int ch; while ((ch=reader.read())>=0) { strbuf.append((char)ch); } reader.close();

ResourceExampleMIDlet(cont.) } catch(IOException ex) { strbuf.setLength(0); } form.append(strbuf.toString()); // 이미지 리소스 파일을 읽어들인다. Image image = null; try { InputStream is = getClass().getResourceAsStream("/image/naver.png"); byte[] buf = new byte[50000]; // 최대 50KB int result = is.read(buf); if (result>0) { image = Image.createImage(buf, 0, result); is.close(); image = null; if (image!=null) form.append(image); // 좀 더 편리한 API 사용 image = Image.createImage("/image/hangame.png");

ResourceExampleMIDlet(cont.) image = null; } if (image!=null) form.append(image); exitCommand = new Command("Exit", Command.SCREEN, 1); form.addCommand(exitCommand); form.setCommandListener(this); public void startApp() { display = Display.getDisplay(this); display.setCurrent(form); public void pauseApp() { public void destroyApp(boolean unconditional) { public void commandAction(Command c, Displayable s) { if (c == exitCommand) { destroyApp(false); notifyDestroyed();

ResourceExampleMIDlet(cont.)