1 / 25

Introduction to Java 2 Micro Edition

Introduction to Java 2 Micro Edition. Mark Balbes, Ph.D. Senior Software Engineer Jeff Brown Senior Software Engineer. What is J2ME. Java platform for small devices A subset of Java 2 Standard Edition Complementary technology to WAP/WML For programming the Palm

aneko
Download Presentation

Introduction to Java 2 Micro Edition

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Introduction to Java 2 Micro Edition Mark Balbes, Ph.D. Senior Software Engineer Jeff Brown Senior Software Engineer

  2. What is J2ME • Java platform for small devices • A subset of Java 2 Standard Edition • Complementary technology to WAP/WML • For programming the Palm • For programming wireless devices (e.g mobile phones)

  3. J2ME-Enabled Devices • Motorola • i85s and i50sx iDen phones • Applications are downloaded and installed via a special cable http://commerce.motorola.com/iupdatephone/main/j2me_softcat.cfm • NTT DoCoMo • Japanese phone company • ~80% of wireless internet users are in Japan • iMode and iAppli support • Research In Motion • CLDC and MIDP compliant • http://www.rim.net/ • Palm and compatibles • WinCE devices i85s P503i RIM BlackBerry

  4. Configurations and Profiles • CDC - Connected Device Configuration • CLDC - Connected Limited Device Configuration • MIDP - Mobile Information Device Profile • PDAP - Personal Digital Assistant Profile • Personal Profile Personal MIDP PDAP kJava CDC CLDC JVM KVM Host Operating System

  5. CLDCConnected Limited Device Configuration • Specification Version 1.0 • Hardware Requirements • 160 - 512 kB of memory • 16 or 32 bit processor • network connectivity (possibly wireless) • No floating point support • Deliver applications dynamically

  6. CLDC(Cont’d)Connected Limited Device Configuration • CLDC addresses • Java languages and virtual machine features • Core Java libraries • Input/output • Networking • Security • Internationalization

  7. CLDC(Cont’d)Connected Limited Device Configuration • CLDC does not address • Application life-cycle management • User interface functionality • Event handling • High-level application model • These can be addressed in profiles

  8. CLDCWhat’s been removed • Floating point • Java Native Interface • User-defined class loaders • Reflection • Thread groups and daemon threads • Finalization • Weak references

  9. CLDC Security • Less memory-consuming than J2SE model • Sandbox • No user-defined class loaders • Classes loaded at native level • No native method calls except from JVM • System classes cannot be overridden by programmer

  10. Programming the Palm • Development Environment • J2ME CLDC API • Contains a subset of the standard J2SE classes • J2ME KJava API • GUI components • Access to Palm database • Access to IR port • JBuilder Handheld Express • POSE Palm Emulator Already superceded. Not supported!

  11. Programming the Palm CLDC Packages • io • InputStream, OutputStream, Reader, Writer • lang - No floating point support • util • Enumeration, Calendar, Date, Hashtable, Random, Stack, TimeZone, Vector • javax.microedition.io • Connection, Datagram, InputConnection, OutputConnection, Connector

  12. Programming the Palm KJava GUI Components • Spotlet • Container for other components • Handles events • All events go to the spotlet. • Spotlet must send events to the contained components. • Only one spotlet can be registered • The registered spotlet is displayed. • The registered spotlet receives all events from keys and screen.

  13. Programming the Palm HelloSpotlet public class HelloSpotlet extends Spotlet { private Graphics g; private Button quitButton; private String message = "Hello Spotlet!"; public HelloSpotlet() { g = Graphics.getGraphics(); g.clearScreen(); quitButton = new Button("Quit", 5, 125); quitButton.paint(); g.drawString(message, 5, 5, Graphics.PLAIN); } Graphics must be managed manually! Cannot specify the size of the button.

  14. Programming the Palm HelloSpotlet (Cont’d) public void penDown(int x, int y){ if (quitButton.pressed(x, y)) { System.exit(0); } } public static void main(String[] args) { new HelloSpotlet().register(Spotlet.NO_EVENT_OPTIONS); } } Pass screen events to the button Register for screen events only. No key events

  15. Programming the Palm Deploy & Test HelloSpotlet • Use JBuilder Wizard to create .prc file • Command line java palm.database.MakePalmApp • Install into POSE • No debugger

  16. Programming the Palm KAWT Project • Implementation of the AWT classes • Can make GUIs that work in J2ME & J2SE • Open source • Not part of J2ME • Lightweight • Clean-room implementation

  17. Building the Conduit • Synchronizes data with desktop • Java Conduit Development Kit • Claims to require Visual Café • MS Windows • Supports generic conduits

  18. What is MIDP? • Provides APIs for building software on mobile devices with limited resources. • Works on top of the Connected Limited Device Configuration (CLDC)

  19. Where does MIDP fit in the Java platforms? • Works with CLDC • Runs in the KVM • Examples of devices: mobile phones pagers BlackBerry devices personal digital assistants From http://java.sun.com/products/midp/

  20. HelloMIDLet import javax.microedition.midlet.*; import javax.microedition.lcdui.*; public class HelloMIDlet extends MIDlet implements CommandListener { private Command exitCommand; private Display display; public HelloMIDlet() { display = Display.getDisplay(this); exitCommand = new Command("Exit", Command.SCREEN, 2); } public void startApp() { TextBox t = new TextBox("Hello MIDlet", "Hello World!", 256, 0); t.addCommand(exitCommand); t.setCommandListener(this); display.setCurrent(t); } public void pauseApp() {} public void destroyApp(boolean unconditional) {} public void commandAction(Command c, Displayable s) { if (c == exitCommand) { destroyApp(false); notifyDestroyed(); } } } Make TextBox the current screen Signals the MIDlet to terminate and enter the Destroyed state. Notify the application manager that the MIDlet has entered the Destroyed state

  21. J2ME Wireless Toolkit • J2ME Wireless Toolkit 1.01 • http://java.sun.com/products/j2mewtoolkit/ • Integrates with Sun Forte IDE • J2ME Wireless Toolkit 1.02 • adds debugging capabilities • adds new emulators • early access version available (as of 6/3/01)

  22. J2ME Wireless Toolkit Emulators

  23. Final thoughts It’s back with J2ME for Palm! • What happened to write-once, run anywhere. Now there are different configurations and profiles to write to. • How many developers can actually write for phones? Access may be controlled by the phone companies. • CLDC & KJava provides a more familiar development paradigm. Wireless SIG

  24. Wireless SIG • A joint special interest group of the St. Louis Web Developers Organization and the St. Louis Java User’s Group • http://www.stlwebdev.org • First meeting is on Tuesday, July 24 at 6:30 p.m. in this auditorium. • I will be talking about J2ME MIDP • Contact Mark Balbes (me) to be a speaker at mark@balbes.com

  25. References • CLDC Specification http://java.sun.com/aboutJava/communityprocess/final/jsr030/index.html • MIDP Specification http://java.sun.com/aboutJava/communityprocess/final/jsr037/index.html • J2ME Archive http://www.billday.com/j2me/index.html • http://www.kvmworld.com/ • Palm Emulator (POSE) http://www.palmos.com/dev/tech/tools/emulator/ • J2ME Wireless Toolkit http://java.sun.com/products/j2mewtoolkit/ • Conduit Development Kit - Windows Java Edition http://www.palmos.com/dev/tech/tools/cdk/java

More Related