Click here to load reader

김 명 호 , ( 주 ) 비트웹 기술이사 (toodull@hitel)

  • Upload
    nola

  • View
    49

  • Download
    0

Embed Size (px)

DESCRIPTION

Personal Java 로 모바일 자바 프로그램 방법 소개. 김 명 호 , ( 주 ) 비트웹 기술이사 ([email protected]). J2ME 와 PersonalJava PJAE API API 요소의 분류 최소 PJAE 의 정의 효율성을 고려한 PersonalJava 프로그램 설계. PJAE 를 위한 개발 지원 도구 JavaCheck 과 PJEE 주요 PJAE 구현사와 제품 PersonalJava 프로그래밍 프레임워크 e-Spider 프로그램 개발사례. 목 차. - PowerPoint PPT Presentation

Citation preview

  • , () ([email protected]) Personal Java

  • J2ME PersonalJavaPJAE APIAPI PJAE PersonalJava PJAE JavaCheck PJEE PJAE PersonalJava e-Spider

  • Micro & Mobile JavasJava2 Micro Edition (J2ME)Personal JavaEmbedded Java, JavaCard, JavaTV, ...

  • Personal Java Java Classic VM Java API API Truffle , PTimer

  • Embedded Java, ... Closed System J2ME

  • J2ME Personal Java Personal Java CDC Profile J2ME

  • J2ME Personal Java()PersonalJava ~ CDC + Personal Profile

    Personal Java CDC + Personal Profile

  • PJAE Personal Java Application Environment JDK 1.1.8 API , , Java 2 Security API PJAE API , , , PJAE- API API JDK 1.1.8 API PJAE

  • PJAE Java 2 API

    JDK 1.1.8 API

    Security API

    PJAE- API

  • PJAE APIJDK 1.1.8 API

  • PJAE APIPJAE PJAE JDK 1.1.8 API

  • PJAE API () com.sun.lang.UnsupportedOperationException java.lang.NoClassDefFoundError java.lang.NoClassDefFoundError com.sun.lang.UnsupportedOperationException

  • PJAE APIPJAE API , , PJAE

    java.lang.NoClassDefFoundError

  • PJAE APIJDK 1.1.8 PJAE , PJAE-, , PJAE-, JDK 1.1.8

  • PJAE APIPJAE JDK com.sun.lang com.sun.util.PTimer com.sun.awt input method java.awt.Component.isDoubleBuffered

  • PJAE //, PJAE

    Personal Java PJAE , !

  • PJAE API java.applet ()java.awt () Frame: Dialog: (modal) Window: FileDialogCheckboxMenuItem, Menu, MenuBar, MenuShortcut: Frame

  • PJAE API ()java.awt.datatransfer ()java.awt.event ()java.awt.iamge ()java.beans ()java.io () java.lang ()Java 2 Security API

  • PJAE API ()java.lang.reflect ()Java 2 Constructor, Field, Method java.lang.reflect.AccessibleObject java.math ()java.security

  • PJAE API ()java.net ()URL : HTTP 1.0 : SSL, Gofer, FTP, SMTP, File java.rmi ()java.security ()Java 2 Security API , java.security.acl ()java.security.cert/interfaces/spec ()

  • PJAE API ()java.sql ()java.math java.text () ISO 8859-1, Unicode,

  • PJAE API ()java.util () Java 2 Security API Java 2 Collection API java.util.jar, java.util.zip ()

  • PJAE API ()

  • PJAE API ()

  • PJAE PJAE GUI RMI, JDBC API HTTP ... , PJAE

  • Personal Java , Java (^^)Java !

  • Personal Java () String StringBuffer java.util.Vector, java.util.Hashtable ...

  • Personal Java () (lazy instantiation)

  • PJAE J2SE RAD PersonalJava Sun : javac + pjcc (PJAE compatibility classes): JavaCheck: PJEE (PersonalJava Emulation Environment), java Xrunhprof:cpu=samples MainClass

  • JavaCheck // SGML PJAE 1.1.0 PJAE JavaCheck : /Unsupported, /Optional: /Modified, /Unresolved, OK

  • JavaCheck java.awt.Frame ,

  • PJEE-Personal Java Emulation Environment PJAE

    PJAE ,

    PJAE + Touchable LAF

  • PJAE Sun Reference Implementation (http://java.sun.com/) : MIPS, SH3, SH4, ARM: Windows CE java.awt, java.io, java.math, java.rmi, java.sql, java.util.zip java.security

  • PJAE ()Insignia Jeode (http://www.insignia.com/)Sun (Jeode EVM) (Jeode Classes) : ARM, MIPS, x86, SH3, SH4, PowerPC: Win32, VxWorks, Linux, Nucleus, BSDi, pSOS PJAE 1.2

  • PJAE ()NSIcom JSCP/CrEme (http://www.nsicom.com)JSCP Sun Personal Java ,CrEme JSCP WinCE : 68k, Sparc, MIPS, ARM, x86, PowerPC, SH3: DOS, Win32, Linux, LynxOS, pSOS, VRTX, VxWorks

  • PJAE ()KadaSystems KadaVM (http://www.kadasystems.com/)Sun (Kada EVM) Palm Computing Platform, Win32 java.beans(), java.rmi(), java.security()

  • Personal Java Main(Frame)+Skeleton(Cards)+RatioLayout PJAE Skeleton , , RatioLayout Wire Server

  • Personal Java () Skeleton () , Skeleton Provider: initialize, execute, cleanup Caller: setup, fire , ,

  • Wire Wire = WebIDL Runtime Engine

    HTTP

    Wiring Protocol

    Wire Inspector

    Wire Server

    Wire

  • doc.table[3].a['*[*]*'].text doc.table[3].a['*[*]*'].href

  • Personal Java APIclass Connector Connector(String host, [int port], [boolean mode]); Binding request(String mod, String svc, Binding inputs) throws RequestFailureException; void quit();boolean TRANSIENT = false;boolean PERMANENT = (! TRANSIENT);

    class Binding WIDL BINDING

  • Personal Java e-SpiderPersonal Java Wire Server 65KB jar , , , , , , , , , ...

  • spider.util.Skeletonpackage spider.util;import spider.Spider;import wire.proto.*;import java.awt.*;import java.awt.event.*;

    public abstract class Skeleton extends Panel { public Skeleton(String ident, final String parent) { this.ident = ident; this.parent = parent; send = Spider.makeButton(""); exit = Spider.makeButton(""); send.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { fire(); }}); final Skeleton sk = this; exit.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { cleanup(); Spider.delete(sk); hide(); Spider.front(parent); }}); message = Spider.makeStrongLabel(" ", Label.LEFT); if (Spider.isColor()) message.setForeground(Color.red.darker()); } ...

  • spider.util.Skeleton ()public abstract class Skeleton extends Panel { public Skeleton setup() { setLayout(new RatioLayout()); initialize(); Spider.insert(ident, this); Spider.front(ident); return this; } public void fire() { StopWatch timer = new StopWatch(); try { timer.start(); execute(); } catch (Exception exc) { Spider.putMessage(exc.toString()); } finally { timer.finish(); } } protected abstract void initialize(); protected abstract void execute() throws Exception; protected void cleanup() { send = exit = null; message = null; }

    Button send, exit; Label message; ...}

  • package spider;import wire.proto.*; // Wire APIimport java.awt.*;import java.awt.event.*;

    class News extends spider.util.Skeleton { public News(String parent) { super(" ", parent); } protected void initialize() { titles = Spider.makeList( new ListAction() { public void fire(int index) { titles.select(index); new NewsView(titles.getItem(index), links[index]).fire(); }}); add(".02, .02; .96, .81", titles); // RatioLayout add(".02, .84; .48, .08", send); // Fields send, exit, and message from Skeleton add(".50, .84; .48, .08", exit); add(".02, .92; .96, .08", message); }

  • ()class News extends spider.util.Skeleton { ... protected void execute() throws Exception { // Connector Spider.wire() throws ConnectionFailureException; Binding os = Spider.wire().request("news", "top", null); // Wire Server stories = (String[])os.get("stories"); if (stories != null) for(int i = 0; i < stories.length; i++) titles.addItem(stories[i]); links = (String[])os.get("links"); } protected void cleanup() { if (titles != null) { titles.removeAll(); titles = null; } stories = links = null; super.cleanup(); } private java.awt.List titles; private String[] stories, links;}

    // News : (new News("e-Spider")).setup().fire();

  • e-Spider 3 Personal Java PJAE + i18n.jar( ) Java JDK1.1.8 Java http://210.217.5.110/demo.html

    e-Spider *is* a DONATION-ware!

  • e-Spider

  • AfterthoughtsPersonal Java PJAE

    Personal Java () !

  • - -