SlideShare a Scribd company logo
1 of 71
Java™ Platform, Micro Edition Part 1 – Introduction to Java ME, CLDC and MIDP v3.0b – 25 April 2009 1 Andreas Jakl, 2009
Disclaimer These slides are provided free of charge at http://www.symbianresources.com and are used during Java ME courses at the University of Applied Sciences in Hagenberg, Austria at the Mobile Computing department ( http://www.fh-ooe.at/mc ) Respecting the copyright laws, you are allowed to use them: for your own, personal, non-commercial use in the academic environment In all other cases (e.g. for commercial training), please contact andreas.jakl@fh-hagenberg.at The correctness of the contents of these materials cannot be guaranteed. Andreas Jakl is not liable for incorrect information or damage that may arise from using the materials. This document contains copyright materials which are proprietary to Sun or various mobile device manufacturers, including Nokia, SonyEricsson and Motorola. Sun, Sun Microsystems, the Sun Logo and the Java™ Platform, Micro Edition are trademarks or registered trademarks of Sun Microsystems, Inc. in the United States and other countries.  Andreas Jakl, 2009 2
About me: Andreas Jakl Assistant Professor at the University ofApplied Sciences, Hagenberg since 2006 Teaching: Introduction to Software Development (1st semester BSc) Java ME (2nd semester BSc) Qt / Symbian OS (3rd semester BSc) Bachelor Thesis Seminar (5th semester BSc) Mobile Operating Systems (1st semester MSc) Interaction Technology (2nd semester MSc) Andreas Jakl, 2008 3
About me: Andreas Jakl Experience: Forum Nokia Champion (2007, 2008, 2009) Founded company “Mopius” in 2004 Internship, Master‘s Thesis and summer jobs at Siemens / BenQ Mobile (Munich, R&D) Studied Bachelor & Master of Digital Media in Hagenberg / Austria (2001 – 06) Contact: Office A.005a (FH1, lower floor) andreas.jakl@fh-hagenberg.at Andreas Jakl, 2009 4
Java Platform What is it all about? 5 Andreas Jakl, 2009
The Java Platform, Part 1 / 3 Javaprogramming language Compared to C++: No pointers Automatic garbage collection Interfaces instead of multiple inheritance Comes with an extensive library Andreas Jakl, 2009 6
The Java Platform, Part 2 / 3 Virtual Machine (JVM) Executes compiled Java bytecode (.class) Available for many systems Controls the code (security) Often used for mobile phones: Kilobyte Virtual Machine (KVM) Memory footprint starting at only 60 kB (+) Now being replaced by Hotspot JVMs. Andreas Jakl, 2009 7
The Java Platform, Part 3 / 3 ApplicationProgramming Interfaces (APIs) Manifoldlibraries e.g. UI, network, 3D, locationbasedservices, etc. Andreas Jakl, 2009 8
Java? In numbers: > 6 Billion Java-enabled devices 2.6 Billion Java-enabled phones(8 out of 10 shipped in 2008) 3.5 Billion Java Cards 20 Million Java set-top boxes 800 Million Java desktops 180 Operators deploying Java content 6 Million developers Andreas Jakl, 2009 9
Java Editions Andreas Jakl, 2009 10 MSA … 	Mobile Service Architecture (JSRs 248 and 249) JTWI …	 Java Technology for the Wireless Industry, JSR 185 MIDP …	Mobile Information Device Profile CDC …	Connected Device Configuration CLDC …	Connected Limited Device Configuration Servers & enterprise computers Servers & personal computers High-end PDAs, TV set-top boxes, embedded devices Mobile phones & entry-level PDAs Smart cards Optional Packages Optional Packages Java 2 Platform, Enterprise Edition (J2EE) Optional Packages Java 2 Platform, Standard Edition (J2SE) Personal Profile Optional Packages Personal Basis Profile MSA JTWI Foundation Profile MIDP CDC CLDC Java Card Java Platform, Micro Edition (Java ME)
Java ME Going Mobile Andreas Jakl, 2009 11
Differences J2SE / Java ME (MIDP) Java ME is mainly a subset of J2SE But different UI- and event handling functionality Less utility classes (only Vector and Hashtable, no LinkedLists, …) Code runs on both platforms?  general algorithms: yes But the whole application needs porting Andreas Jakl, 2009 12
Name: J2ME or Java ME? Official name: Java Platform, Micro Edition (Java ME) Former name: J2ME Andreas Jakl, 2009 13
Configuration Defines Java Platform for different device classes: CLDC Limited user interface Low computing power (usually with a battery) Network with low bandwidth CDC Network connection with high bandwidth, possibly persistent Larger memory requirements Andreas Jakl, 2009 14
CDC Equivalent to Java SE 1.4.2 when combined with: Foundation Profile (FP) Extends CDC to Java SE 1.4.2, without graphics and UI Personal Basis Profile (PBP) Lightweight GUI support (AWT subset) Personal Profile (PP) Extends PBP with AWT components and Appled support Foundation for Java-based platforms: (few) smartphones, Blu-Ray, Set-top boxes, etc. Andreas Jakl, 2009 15
CLDC Currentlyavailable in twoversions: 1.0 In devicesuntil ~ 2005 (atthelatest) 1.1 Currentstandard Supports floatingpoint(but mostly in software slow) Important e.g. for GPS coordinatehandling! Usedfor: Phones (!) Consumer andentertainmentdevices Embedded platforms, controllers, sensors Sun SPOTs Andreas Jakl, 2009 16
Profiles Extension and more detailed specification for a configuration Contains APIs for UI, event handling, data storage, networks, timers, … Minimum requirements for devices (screen size, input possibilities, ...) For mobile phones:Mobile Information Device Profile (MIDP) Andreas Jakl, 2009 17
Profiles – Major Differences MIDP 1.0 Hardly any sound support, limited graphics Only HTTP, no Sockets  Many vendor-specific extensions (bad!) MIDP 2.0 Game API Better network and multimedia support MIDP 2.1 Tries to improve fragmentation problems (different version for every phone…) Stricter specifications for packages MIDP 3.0 (JSR 271) Multiple MIDlets can run concurrently or in the background, auto-launch More detailed specifications More possibilities for the UI, support of secondary displays Andreas Jakl, 2009 18
Sample Architectureof a Phone Andreas Jakl, 2009 19 Profile: MIDP 2.0 Configuration: CLDC 1.1 Virtual Machine: HotSpot Operating System
Java ME – Examples MotorolaMOTORAZR V3 CLDC 1.0 MIDP 2.0 Andreas Jakl, 2009 20
Java ME – Examples Nokia N70 CLDC 1.1 MIDP 2.0 Andreas Jakl, 2009 21
Java ME – Examples SonyEricsson P990i CLDC 1.1 MIDP 2.0 CDC 1.0 Personal Profile Andreas Jakl, 2009 22
Java ME – Examples Nokia N86 8MP CLDC 1.1 MIDP 2.1 MSA (Subset) Andreas Jakl, 2009 23
Java ME – Examples  Andreas Jakl, 2009 24 Amazon Kindle 2 CDC
JSRs (Java Specification Requests) JSR = CLDC, MIDP or libraries for additional features Defined through:Java Community Process (JCP) Examples: JSR 82: Bluetooth APIs JSR 179: Location API JSR 184: Mobile 3D API JSR 226: Scalable 2D Vector Graphics API Andreas Jakl, 2009 25
JSRs – How Many? Sample: supported JSRs of Nokia N86 8MP Andreas Jakl, 2009 26
JSRs – Games? A racing game could require: JSR 184 (3D Graphics) 3D world JSR 135 (Mobile Media) Sound JSR 82 (Bluetooth) P2P Gaming JSR 180 (SIP) P2P over the network JSR 229 (Payment) New forms of payment Andreas Jakl, 2009 27 Asphalt 4: Elite Racing HD© Gameloft
JSRs – Mapping Applications? A mapping application could require: JSR 226 (Vector Graphics) Map visualization JSR 179 (Location) Where am I? JSR 172 (Web Services) Requesting data JSR 75 (File and PIM) Map an address JSR 238 (Internationalization) Global software Andreas Jakl, 2009 28 Google Maps Mobile© Google
„Write Once, Run Anywhere™“ ? Problems: Different screen sizes Bugs in manufacturers implementations (!) Different hardware performance Which JSRs are supported? Bluetooth? SVG? Web services?… MIDP 2.0 isn’t strict enough: Different key codes for every manufacturer (softkeys, ...) Are socket connections available? Which sound files are playable? Supported image formats? Is double buffering supported? Andreas Jakl, 2009 29
JTWI – Fragmentation Solution? Java Technology for the Wireless Industry (JSR 185) First try of defining full API stack to reduce fragmentation Clarification of component JSR specifications However: too small, too few APIs included Bad licensing politics  Failed Andreas Jakl, 2009 30
Mobile Service Architecture(MSA, JSR 248) Goal? “Umbrella” specification, replace JTWI Define a unified platform for majority of handsets Spec leds: Nokia, Vodafone. Others heavily involved Devices started to ship in 2007 With at least subset of MSA Andreas Jakl, 2009 31
Features in MSA for CLDC Andreas Jakl, 2009 32 Application Environment Virtual Machine JSR 185JTWI JSR 118MIDP 2.0 JSR 238I18N JSR 139CLDC 1.1 Conditional APIs JTWI APIs
MIDP 3.0 High-level goals Add much-requested functionality over MIDP 2 Rework security model to support CLDC and CDC Enables support of MIDP 3 on CDC Clarify spec and increase implementation consistency Andreas Jakl, 2009 33
MIDP 3.0 Functional Enhancements Concurrency (Multiple MIDlets at the same time) Shared libraries (LIBlets) Auto-start MIDlets Idle screen MIDlets Inter-MIDlet communication Record store interchange format User Interface improvements ...  Andreas Jakl, 2009 34
Mobile Service Architecture v2 Dynamic Environment Download new APIs to the handset Place custom middleware on handset Next revision of MSA 248 Supports both CLDC and CDC Builds upon and requires MIDP 3.0 Adds multi-tasking and on-device service framework Adds competitive user interface toolkit Adds device segments: entry, standard, advanced No final release date yet Andreas Jakl, 2009 35
JavaFX JavaFX(http://javafx.com – integrated in NetBeans 6.5+) New UI libraries (graphics, media, web services) Consistent experience across mobile, desktop, browser, TV, etc Plus: use any Java library in JavaFX Integrated with Java Runtime JavaFX Script Simple declarative language, easier to learn e.g., for artists to change sprite animation, without needing software developer Advantage to JavaScript / ActionScript: integration with Java – reuse any Java library Andreas Jakl, 2009 36
JavaFX Mobile Runs on Java ME (plus Android) Mobile content with same tools as Java FX Availability? JavaFX Mobile Runtime needs to be pre-installed on the phone No phones released yet Currently endorsed by: SonyEricsson, LG Andreas Jakl, 2009 37
Blu-Ray Disc Java: BD-J Based on Java ME Personal Basis Profile & earlier Java TV spec GUI environment suitable for consumer electronics (no keyboard / mouse) Strong media support Applications? Dynamic menu systems Downloading additional content (subtitles, movie previews, etc.) Games and other bonus material Andreas Jakl, 2009 38
Java ME – Applications Internals Andreas Jakl, 2009 39
Runtime environment (KVM) IDE Code  Application Andreas Jakl, 2009 40 Source code (.java) Runtime verification Interpreter Compile(javac) .jar-file (MIDlet Suite) .class-files Packaging Preverification .class-files
Preverification Verification: check the integrity of the byte code at runtime  Too much for mobile devices, therefore: pre-verification at compile time: Takes care of resource demanding checks Simplifies runtime verification Adds additional attributes to the .class file (5 – 15% increase in size) Andreas Jakl, 2009 41
MIDlet Suite Andreas Jakl, 2009 42 MIDlet Suite (.jar-Archiv): - Defines access rights - Possibility to share data (Record Stores) - Shared static variables MIDlet 1 MIDlet 3 MIDlet 2
MIDlet-Suite Andreas Jakl, 2009 43 .jar-archive(MIDlet Suite) Preverified .class-file(s) Resources (icons, graphics – optional) .jadfile(Applicationdescriptor, optional) Manifest Information about .jar
Manifest Text file “MANIFEST.MF” Contains meta information Andreas Jakl, 2009 44 Manifest-Version: 1.0 MIDlet-Name: RealReplay MIDlet-Description: RealReplay MIDlet-Vendor: Mopius MIDlet-Info-URL: http://www.mopius.com/ MIDlet-Version: 0.96.20 MIDlet-Icon: /res/icon.png MIDlet-1: RealReplay,/res/icon.png,com.mopius.realreplay.RealReplayMIDlet MicroEdition-Profile: MIDP-2.0 MicroEdition-Configuration: CLDC-1.1
ApplicationDescriptor (.jad) Information about .jarcontents Allowsto check compatibilitybeforedownloading .jar Andreas Jakl, 2009 45 MIDlet-Name: RealReplay MIDlet-Description: RealReplay MIDlet-Vendor: Mopius MIDlet-Info-URL: http://www.mopius.com/ MIDlet-Version: 0.96.20 MIDlet-Icon: /res/icon.png MIDlet-1: RealReplay,/res/icon.png,com.mopius.realreplay.RealReplayMIDlet MicroEdition-Profile: MIDP-2.0 MicroEdition-Configuration: CLDC-1.1 MIDlet-Jar-Size: 114185 MIDlet-Jar-URL: http://realreplay.mopius.com/files/realreplay.jar Add.
Signing Access to some telephone functionality (e.g. socket connections, SMS) restricted: warning is displayed every time Solution: Sign the checksum of .jar in .jad-file with an own key (certificate) Own certificate is signed with root certificate of a trusted certificate authority Andreas Jakl, 2009 46
Why OTA for Deployment? Some phones (Samsung, Sagem, BREW,...) do not support installing MIDlets through the PC or Bluetooth Only alternative: Download directly through mobile phone 	 Over-the-Air (OTA) delivery Andreas Jakl, 2009 47
Over-the-Air Andreas Jakl, 2009 48 HTTP Web Server Mobile Device AMS (Application Management Software) JAD-Server JAR-Server Notification Server GET /midlet.jad GET /midlet.jar POST /install-notify (900 Success) 200 OK 200 OK 200 OK
Optimization – Obfuscation Original intention: Make reverse engineering more difficult Code more difficult to read after de-compilation Renames classes to “a.class, b.class, …” Removes unused methods, variables, classes  Significant size reduction Over-the-Air = expensive! MIDlet size restrictions in many phones Improves speed (less code to load / parse) Andreas Jakl, 2009 49
Obfuscation Original archive79,2 kB Obfuscated42,9 kB = 45% smaller! Andreas Jakl, 2009 50
Developing for JavaME Highest priority: memory usage and speed  often very few classes, object orientation reduced to a minimum, frequent use of static variables But: today’s phones have got more memory Andreas Jakl, 2009 51 Example:Winter Sports from Digiment Open Source (GPL)
Tools How to develop: 52 Andreas Jakl, 2009
IDEs: Sun NetBeans NetBeans (+ Mobility Pack) Andreas Jakl, 2009 53
IDEs: NetBeans Very good integration for mobile projects: Localisation Conditional compilation Packaging UI-Designer, game builder, … Relatively high system requirements Andreas Jakl, 2009 54
IDEs: Eclipse Eclipse + Plugin: EclipseME / MTJ (officialplug-in) Andreas Jakl, 2009 55 Is integrated in
IDEs: Eclipse Very good IDE Helps a lot with programming errors ME integration through Eclipse ME is average Few Java ME specific tools / support – just pure Java Andreas Jakl, 2009 56
Emulators Sun Java Wireless Toolkit for CLDC (2.5.2 / 3.0 EA) Tools for compiling, packaging and executing Emulator: Debugging Error handling Text output through console Allows performance analysis Simulates internet access and GPS Download: http://java.sun.com/javame/downloads/index.jsp Andreas Jakl, 2009 57
Sun WTK Andreas Jakl, 2009 58 Sample applicationofNetBeans in the WTK emulator
Manufacturer-Specific Emulators Different Java ME implementations  Every device manufacturer has its own emulator: Nokia:www.forum.nokia.com/Resources_and_Information/Tools/IDEs/ Sony Ericsson SDK for the Java ME Platformdeveloper.sonyericsson.com/site/global/docstools/java/p_java.jsp Samsunginnovator.samsungmobile.com/ Motoroladeveloper.motorola.com/docstools/sdks/ Andreas Jakl, 2009 59
J2ME Polish Tools suite to address Java ME shortcomings: Own UI classes for custom, graphical UI Build system, creates adapted version for specific handsets Allows porting Java ME to Android Licensing: Free for GPL products 1 commercial app: €990 Unlimited commercial apps: €14,990 http://www.j2mepolish.org/ Andreas Jakl, 2009 60
Event-Handling Commands Andreas Jakl, 2009 61
Events – The Big Picture Andreas Jakl, 2009 * Requires registering the MIDlet 62
Listener Implement the Listener-Interface to get informed: CommandListener: commandAction()Notification when e.g. a menu item has been selected ItemCommandListener: commandAction()Used for events for individual items ItemStateListener: itemStateChanged()When an UI element has been changed Andreas Jakl, 2009 63
Recap: Interfaces? Interface: implemented by 1+ classes Defines abstract methods and constants But doesn’t contain the implementation! Implementing class has to override all defined methods Important for generic development! Caller does not need to know exact class type and name, but can work with the interface type More information at: http://en.wikipedia.org/wiki/Interface_(Java) Andreas Jakl, 2009 64 Interface definition: Interface implementation: publicinterfacePredator {booleanchasePrey(Prey p);voideatPrey(Prey p);} publicclassCatimplementsPredator { publicbooleanchasePrey(Prey p) {// programmingtochaseprey p (specificallyfor a cat)     }publicvoideatPrey (Prey p) {// programmingtoeatprey p (specificallyfor a cat)     }}
Commands Command = semantic information about an action ( how can an action be executed?) But no actual implementation of the action! Contains: Short label Long label (optional) Type Priority Andreas Jakl, 2009 One of them will be displayed on the screen / in the menu, depending on the available space “Intention” of the command – e.g. for special placement on the device For the order of commands, if more are mapped to the same softkey. The lower the priority, the more important it is. 65
Command-Types Andreas Jakl, 2009 66
Exit Class HelloWorldMIDlet: … implements CommandListener Define new command (member variable): private Command cmdExit; Create it in the constructor: cmdExit = new Command(“Exit”, Command.EXIT, 1);frmMain.addCommand(cmdExit);frmMain.setCommandListener(this); Andreas Jakl, 2009 Implementation e.g. like in the “Hello World”-Exercise 67
Command Handling Method defined in the base class CommandListener: public void commandAction (Command c, Displayable d){if (c == cmdExit)    {destroyApp(true);notifyDestroyed();    }} Andreas Jakl, 2009 true: forces shutdown, you have to free resources!false:shtudown can be prevented by the MIDlet if necessary. ... mainly important if the framework wants / has to close down the app. Inform the app. manager that ourMIDlet wants to be shut down.  68
Exit Softkey Andreas Jakl, 2009 69
2 Softkeys, 3 Commands? Commands in themenu – placementdepends on thephone: Andreas Jakl, 2009 NokiaSeries 40 WTK 2.5 Nokia S60 70
Thanks for your attention That’s it! Andreas Jakl, 2009 71

More Related Content

What's hot

Android unveiled (I)
Android unveiled (I)Android unveiled (I)
Android unveiled (I)denian00
 
Introduction To Android
Introduction To AndroidIntroduction To Android
Introduction To Androidma-polimi
 
TOMOYO Linux on Android (Taipei, 2009)
TOMOYO Linux on Android (Taipei, 2009)TOMOYO Linux on Android (Taipei, 2009)
TOMOYO Linux on Android (Taipei, 2009)Toshiharu Harada, Ph.D
 
'Hear' & Now: Software Integration for the Qualcomm Snapdragon Audio Feature
'Hear' & Now: Software Integration for the Qualcomm Snapdragon Audio Feature 'Hear' & Now: Software Integration for the Qualcomm Snapdragon Audio Feature
'Hear' & Now: Software Integration for the Qualcomm Snapdragon Audio Feature Qualcomm Developer Network
 
Http Jaoo.Com.Au Sydney 2008 File Path= Jaoo Aus2008 Slides Dave Thomas Lif...
Http   Jaoo.Com.Au Sydney 2008 File Path= Jaoo Aus2008 Slides Dave Thomas Lif...Http   Jaoo.Com.Au Sydney 2008 File Path= Jaoo Aus2008 Slides Dave Thomas Lif...
Http Jaoo.Com.Au Sydney 2008 File Path= Jaoo Aus2008 Slides Dave Thomas Lif...qedanne
 

What's hot (6)

Android unveiled (I)
Android unveiled (I)Android unveiled (I)
Android unveiled (I)
 
Introduction To Android
Introduction To AndroidIntroduction To Android
Introduction To Android
 
TOMOYO Linux on Android (Taipei, 2009)
TOMOYO Linux on Android (Taipei, 2009)TOMOYO Linux on Android (Taipei, 2009)
TOMOYO Linux on Android (Taipei, 2009)
 
'Hear' & Now: Software Integration for the Qualcomm Snapdragon Audio Feature
'Hear' & Now: Software Integration for the Qualcomm Snapdragon Audio Feature 'Hear' & Now: Software Integration for the Qualcomm Snapdragon Audio Feature
'Hear' & Now: Software Integration for the Qualcomm Snapdragon Audio Feature
 
Http Jaoo.Com.Au Sydney 2008 File Path= Jaoo Aus2008 Slides Dave Thomas Lif...
Http   Jaoo.Com.Au Sydney 2008 File Path= Jaoo Aus2008 Slides Dave Thomas Lif...Http   Jaoo.Com.Au Sydney 2008 File Path= Jaoo Aus2008 Slides Dave Thomas Lif...
Http Jaoo.Com.Au Sydney 2008 File Path= Jaoo Aus2008 Slides Dave Thomas Lif...
 
Android
AndroidAndroid
Android
 

Viewers also liked

Java ME - 06 - Record Stores, Distribution and Localization
Java ME - 06 - Record Stores, Distribution and LocalizationJava ME - 06 - Record Stores, Distribution and Localization
Java ME - 06 - Record Stores, Distribution and LocalizationAndreas Jakl
 
Java ME - 08 - Mobile 3D Graphics
Java ME - 08 - Mobile 3D GraphicsJava ME - 08 - Mobile 3D Graphics
Java ME - 08 - Mobile 3D GraphicsAndreas Jakl
 
Java ME - 03 - Low Level Graphics E
Java ME - 03 - Low Level Graphics EJava ME - 03 - Low Level Graphics E
Java ME - 03 - Low Level Graphics EAndreas Jakl
 
Java ME - 05 - Game API
Java ME - 05 - Game APIJava ME - 05 - Game API
Java ME - 05 - Game APIAndreas Jakl
 
Java ME - 07 - Generic Connection Framework, HTTP and Sockets
Java ME - 07 - Generic Connection Framework, HTTP and SocketsJava ME - 07 - Generic Connection Framework, HTTP and Sockets
Java ME - 07 - Generic Connection Framework, HTTP and SocketsAndreas Jakl
 
Java ME - 04 - Timer, Tasks and Threads
Java ME - 04 - Timer, Tasks and ThreadsJava ME - 04 - Timer, Tasks and Threads
Java ME - 04 - Timer, Tasks and ThreadsAndreas Jakl
 
Java ME - 02 - High Level UI
Java ME - 02 - High Level UIJava ME - 02 - High Level UI
Java ME - 02 - High Level UIAndreas Jakl
 
Java Micro Edition (ME) 8 Deep Dive
Java Micro Edition (ME) 8 Deep DiveJava Micro Edition (ME) 8 Deep Dive
Java Micro Edition (ME) 8 Deep Diveterrencebarr
 
Session 3 J2ME Mobile Information Device Profile(MIDP) API
Session 3 J2ME Mobile Information Device Profile(MIDP)  APISession 3 J2ME Mobile Information Device Profile(MIDP)  API
Session 3 J2ME Mobile Information Device Profile(MIDP) APImuthusvm
 

Viewers also liked (9)

Java ME - 06 - Record Stores, Distribution and Localization
Java ME - 06 - Record Stores, Distribution and LocalizationJava ME - 06 - Record Stores, Distribution and Localization
Java ME - 06 - Record Stores, Distribution and Localization
 
Java ME - 08 - Mobile 3D Graphics
Java ME - 08 - Mobile 3D GraphicsJava ME - 08 - Mobile 3D Graphics
Java ME - 08 - Mobile 3D Graphics
 
Java ME - 03 - Low Level Graphics E
Java ME - 03 - Low Level Graphics EJava ME - 03 - Low Level Graphics E
Java ME - 03 - Low Level Graphics E
 
Java ME - 05 - Game API
Java ME - 05 - Game APIJava ME - 05 - Game API
Java ME - 05 - Game API
 
Java ME - 07 - Generic Connection Framework, HTTP and Sockets
Java ME - 07 - Generic Connection Framework, HTTP and SocketsJava ME - 07 - Generic Connection Framework, HTTP and Sockets
Java ME - 07 - Generic Connection Framework, HTTP and Sockets
 
Java ME - 04 - Timer, Tasks and Threads
Java ME - 04 - Timer, Tasks and ThreadsJava ME - 04 - Timer, Tasks and Threads
Java ME - 04 - Timer, Tasks and Threads
 
Java ME - 02 - High Level UI
Java ME - 02 - High Level UIJava ME - 02 - High Level UI
Java ME - 02 - High Level UI
 
Java Micro Edition (ME) 8 Deep Dive
Java Micro Edition (ME) 8 Deep DiveJava Micro Edition (ME) 8 Deep Dive
Java Micro Edition (ME) 8 Deep Dive
 
Session 3 J2ME Mobile Information Device Profile(MIDP) API
Session 3 J2ME Mobile Information Device Profile(MIDP)  APISession 3 J2ME Mobile Information Device Profile(MIDP)  API
Session 3 J2ME Mobile Information Device Profile(MIDP) API
 

Similar to Java ME - 01 - Overview

Symbian OS - Quick Start
Symbian OS - Quick StartSymbian OS - Quick Start
Symbian OS - Quick StartAndreas Jakl
 
Symbian OS - Platform Security
Symbian OS - Platform SecuritySymbian OS - Platform Security
Symbian OS - Platform SecurityAndreas Jakl
 
Introduction to Mobile Application Development
Introduction to Mobile Application DevelopmentIntroduction to Mobile Application Development
Introduction to Mobile Application DevelopmentSenthil Kanth
 
MOBILE APPs DEVELOPMENT PLATFORMS
MOBILE APPs DEVELOPMENT PLATFORMSMOBILE APPs DEVELOPMENT PLATFORMS
MOBILE APPs DEVELOPMENT PLATFORMSSenthil Kanth
 
010118565.pdf
010118565.pdf010118565.pdf
010118565.pdfEidTahir
 
Introduction to Android
Introduction to Android Introduction to Android
Introduction to Android Ranjith Kumar
 
Android internals
Android internalsAndroid internals
Android internalsrabah3
 
Christchurch Embedded .NET User Group - Introduction to Microsoft Embedded pl...
Christchurch Embedded .NET User Group - Introduction to Microsoft Embedded pl...Christchurch Embedded .NET User Group - Introduction to Microsoft Embedded pl...
Christchurch Embedded .NET User Group - Introduction to Microsoft Embedded pl...christopherfairbairn
 
Java ME CLDC MIDP
Java ME CLDC MIDPJava ME CLDC MIDP
Java ME CLDC MIDPSMIJava
 
Mobile Tools for Java - Current Project Status
Mobile Tools for Java - Current Project StatusMobile Tools for Java - Current Project Status
Mobile Tools for Java - Current Project Statusgustavoeliano
 
Symbian OS - Client Server Framework
Symbian OS - Client Server FrameworkSymbian OS - Client Server Framework
Symbian OS - Client Server FrameworkAndreas Jakl
 
Android seminar-report-body.doc
Android seminar-report-body.docAndroid seminar-report-body.doc
Android seminar-report-body.docDeepak Yadav
 
J2ME mobile app development
J2ME mobile app developmentJ2ME mobile app development
J2ME mobile app developmentMuthu Kumar
 
Android..overwiew
Android..overwiewAndroid..overwiew
Android..overwiewSai Teja
 
Mobile Application Development MAD J2ME
Mobile Application Development  MAD J2MEMobile Application Development  MAD J2ME
Mobile Application Development MAD J2MEPallepati Vasavi
 

Similar to Java ME - 01 - Overview (20)

Mobile Java
Mobile JavaMobile Java
Mobile Java
 
Symbian OS - Quick Start
Symbian OS - Quick StartSymbian OS - Quick Start
Symbian OS - Quick Start
 
Symbian OS - Platform Security
Symbian OS - Platform SecuritySymbian OS - Platform Security
Symbian OS - Platform Security
 
Introduction to Mobile Application Development
Introduction to Mobile Application DevelopmentIntroduction to Mobile Application Development
Introduction to Mobile Application Development
 
MOBILE APPs DEVELOPMENT PLATFORMS
MOBILE APPs DEVELOPMENT PLATFORMSMOBILE APPs DEVELOPMENT PLATFORMS
MOBILE APPs DEVELOPMENT PLATFORMS
 
010118565.pdf
010118565.pdf010118565.pdf
010118565.pdf
 
Introduction to Android
Introduction to Android Introduction to Android
Introduction to Android
 
Android internals
Android internalsAndroid internals
Android internals
 
Christchurch Embedded .NET User Group - Introduction to Microsoft Embedded pl...
Christchurch Embedded .NET User Group - Introduction to Microsoft Embedded pl...Christchurch Embedded .NET User Group - Introduction to Microsoft Embedded pl...
Christchurch Embedded .NET User Group - Introduction to Microsoft Embedded pl...
 
Java ME CLDC MIDP
Java ME CLDC MIDPJava ME CLDC MIDP
Java ME CLDC MIDP
 
Mobile Tools for Java - Current Project Status
Mobile Tools for Java - Current Project StatusMobile Tools for Java - Current Project Status
Mobile Tools for Java - Current Project Status
 
Symbian OS - Client Server Framework
Symbian OS - Client Server FrameworkSymbian OS - Client Server Framework
Symbian OS - Client Server Framework
 
J2ME
J2MEJ2ME
J2ME
 
Android seminar-report-body.doc
Android seminar-report-body.docAndroid seminar-report-body.doc
Android seminar-report-body.doc
 
J2ME mobile app development
J2ME mobile app developmentJ2ME mobile app development
J2ME mobile app development
 
Android..overwiew
Android..overwiewAndroid..overwiew
Android..overwiew
 
Mobile Platform
Mobile PlatformMobile Platform
Mobile Platform
 
Android Anatomy
Android  AnatomyAndroid  Anatomy
Android Anatomy
 
Java ME MSA
Java ME MSAJava ME MSA
Java ME MSA
 
Mobile Application Development MAD J2ME
Mobile Application Development  MAD J2MEMobile Application Development  MAD J2ME
Mobile Application Development MAD J2ME
 

More from Andreas Jakl

Create Engaging Healthcare Experiences with Augmented Reality
Create Engaging Healthcare Experiences with Augmented RealityCreate Engaging Healthcare Experiences with Augmented Reality
Create Engaging Healthcare Experiences with Augmented RealityAndreas Jakl
 
AR / VR Interaction Development with Unity
AR / VR Interaction Development with UnityAR / VR Interaction Development with Unity
AR / VR Interaction Development with UnityAndreas Jakl
 
Android Development with Kotlin, Part 3 - Code and App Management
Android Development with Kotlin, Part 3 - Code and App ManagementAndroid Development with Kotlin, Part 3 - Code and App Management
Android Development with Kotlin, Part 3 - Code and App ManagementAndreas Jakl
 
Android Development with Kotlin, Part 2 - Internet Services and JSON
Android Development with Kotlin, Part 2 - Internet Services and JSONAndroid Development with Kotlin, Part 2 - Internet Services and JSON
Android Development with Kotlin, Part 2 - Internet Services and JSONAndreas Jakl
 
Android Development with Kotlin, Part 1 - Introduction
Android Development with Kotlin, Part 1 - IntroductionAndroid Development with Kotlin, Part 1 - Introduction
Android Development with Kotlin, Part 1 - IntroductionAndreas Jakl
 
Android and NFC / NDEF (with Kotlin)
Android and NFC / NDEF (with Kotlin)Android and NFC / NDEF (with Kotlin)
Android and NFC / NDEF (with Kotlin)Andreas Jakl
 
Basics of Web Technologies
Basics of Web TechnologiesBasics of Web Technologies
Basics of Web TechnologiesAndreas Jakl
 
Bluetooth Beacons - Bluetooth 5, iBeacon, Eddystone, Arduino, Windows 10 & More
Bluetooth Beacons - Bluetooth 5, iBeacon, Eddystone, Arduino, Windows 10 & MoreBluetooth Beacons - Bluetooth 5, iBeacon, Eddystone, Arduino, Windows 10 & More
Bluetooth Beacons - Bluetooth 5, iBeacon, Eddystone, Arduino, Windows 10 & MoreAndreas Jakl
 
Which new scenarios are enabled by Windows 10 for NFC, Bluetooth LE & Beacons?
Which new scenarios are enabled by Windows 10 for NFC, Bluetooth LE & Beacons?Which new scenarios are enabled by Windows 10 for NFC, Bluetooth LE & Beacons?
Which new scenarios are enabled by Windows 10 for NFC, Bluetooth LE & Beacons?Andreas Jakl
 
Mobile Test Automation
Mobile Test AutomationMobile Test Automation
Mobile Test AutomationAndreas Jakl
 
Qt App Development - Cross-Platform Development for Android, iOS, Windows Pho...
Qt App Development - Cross-Platform Development for Android, iOS, Windows Pho...Qt App Development - Cross-Platform Development for Android, iOS, Windows Pho...
Qt App Development - Cross-Platform Development for Android, iOS, Windows Pho...Andreas Jakl
 
WinJS, Apache Cordova & NFC - HTML5 apps for Android and Windows Phone
WinJS, Apache Cordova & NFC - HTML5 apps for Android and Windows PhoneWinJS, Apache Cordova & NFC - HTML5 apps for Android and Windows Phone
WinJS, Apache Cordova & NFC - HTML5 apps for Android and Windows PhoneAndreas Jakl
 
Nokia New Asha Platform Developer Training
Nokia New Asha Platform Developer TrainingNokia New Asha Platform Developer Training
Nokia New Asha Platform Developer TrainingAndreas Jakl
 
Windows Phone 8 NFC Quickstart
Windows Phone 8 NFC QuickstartWindows Phone 8 NFC Quickstart
Windows Phone 8 NFC QuickstartAndreas Jakl
 
Windows (Phone) 8 NFC App Scenarios
Windows (Phone) 8 NFC App ScenariosWindows (Phone) 8 NFC App Scenarios
Windows (Phone) 8 NFC App ScenariosAndreas Jakl
 
Windows 8 Platform NFC Development
Windows 8 Platform NFC DevelopmentWindows 8 Platform NFC Development
Windows 8 Platform NFC DevelopmentAndreas Jakl
 
NFC Development with Qt - v2.2.0 (5. November 2012)
NFC Development with Qt - v2.2.0 (5. November 2012)NFC Development with Qt - v2.2.0 (5. November 2012)
NFC Development with Qt - v2.2.0 (5. November 2012)Andreas Jakl
 
06 - Qt Communication
06 - Qt Communication06 - Qt Communication
06 - Qt CommunicationAndreas Jakl
 
05 - Qt External Interaction and Graphics
05 - Qt External Interaction and Graphics05 - Qt External Interaction and Graphics
05 - Qt External Interaction and GraphicsAndreas Jakl
 

More from Andreas Jakl (20)

Create Engaging Healthcare Experiences with Augmented Reality
Create Engaging Healthcare Experiences with Augmented RealityCreate Engaging Healthcare Experiences with Augmented Reality
Create Engaging Healthcare Experiences with Augmented Reality
 
AR / VR Interaction Development with Unity
AR / VR Interaction Development with UnityAR / VR Interaction Development with Unity
AR / VR Interaction Development with Unity
 
Android Development with Kotlin, Part 3 - Code and App Management
Android Development with Kotlin, Part 3 - Code and App ManagementAndroid Development with Kotlin, Part 3 - Code and App Management
Android Development with Kotlin, Part 3 - Code and App Management
 
Android Development with Kotlin, Part 2 - Internet Services and JSON
Android Development with Kotlin, Part 2 - Internet Services and JSONAndroid Development with Kotlin, Part 2 - Internet Services and JSON
Android Development with Kotlin, Part 2 - Internet Services and JSON
 
Android Development with Kotlin, Part 1 - Introduction
Android Development with Kotlin, Part 1 - IntroductionAndroid Development with Kotlin, Part 1 - Introduction
Android Development with Kotlin, Part 1 - Introduction
 
Android and NFC / NDEF (with Kotlin)
Android and NFC / NDEF (with Kotlin)Android and NFC / NDEF (with Kotlin)
Android and NFC / NDEF (with Kotlin)
 
Basics of Web Technologies
Basics of Web TechnologiesBasics of Web Technologies
Basics of Web Technologies
 
Bluetooth Beacons - Bluetooth 5, iBeacon, Eddystone, Arduino, Windows 10 & More
Bluetooth Beacons - Bluetooth 5, iBeacon, Eddystone, Arduino, Windows 10 & MoreBluetooth Beacons - Bluetooth 5, iBeacon, Eddystone, Arduino, Windows 10 & More
Bluetooth Beacons - Bluetooth 5, iBeacon, Eddystone, Arduino, Windows 10 & More
 
Which new scenarios are enabled by Windows 10 for NFC, Bluetooth LE & Beacons?
Which new scenarios are enabled by Windows 10 for NFC, Bluetooth LE & Beacons?Which new scenarios are enabled by Windows 10 for NFC, Bluetooth LE & Beacons?
Which new scenarios are enabled by Windows 10 for NFC, Bluetooth LE & Beacons?
 
Mobile Test Automation
Mobile Test AutomationMobile Test Automation
Mobile Test Automation
 
Qt App Development - Cross-Platform Development for Android, iOS, Windows Pho...
Qt App Development - Cross-Platform Development for Android, iOS, Windows Pho...Qt App Development - Cross-Platform Development for Android, iOS, Windows Pho...
Qt App Development - Cross-Platform Development for Android, iOS, Windows Pho...
 
WinJS, Apache Cordova & NFC - HTML5 apps for Android and Windows Phone
WinJS, Apache Cordova & NFC - HTML5 apps for Android and Windows PhoneWinJS, Apache Cordova & NFC - HTML5 apps for Android and Windows Phone
WinJS, Apache Cordova & NFC - HTML5 apps for Android and Windows Phone
 
Nokia New Asha Platform Developer Training
Nokia New Asha Platform Developer TrainingNokia New Asha Platform Developer Training
Nokia New Asha Platform Developer Training
 
Windows Phone 8 NFC Quickstart
Windows Phone 8 NFC QuickstartWindows Phone 8 NFC Quickstart
Windows Phone 8 NFC Quickstart
 
Windows (Phone) 8 NFC App Scenarios
Windows (Phone) 8 NFC App ScenariosWindows (Phone) 8 NFC App Scenarios
Windows (Phone) 8 NFC App Scenarios
 
Windows 8 Platform NFC Development
Windows 8 Platform NFC DevelopmentWindows 8 Platform NFC Development
Windows 8 Platform NFC Development
 
NFC Development with Qt - v2.2.0 (5. November 2012)
NFC Development with Qt - v2.2.0 (5. November 2012)NFC Development with Qt - v2.2.0 (5. November 2012)
NFC Development with Qt - v2.2.0 (5. November 2012)
 
06 - Qt Communication
06 - Qt Communication06 - Qt Communication
06 - Qt Communication
 
05 - Qt External Interaction and Graphics
05 - Qt External Interaction and Graphics05 - Qt External Interaction and Graphics
05 - Qt External Interaction and Graphics
 
04 - Qt Data
04 - Qt Data04 - Qt Data
04 - Qt Data
 

Recently uploaded

Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxLoriGlavin3
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningLars Bell
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxLoriGlavin3
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 

Recently uploaded (20)

Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 

Java ME - 01 - Overview

  • 1. Java™ Platform, Micro Edition Part 1 – Introduction to Java ME, CLDC and MIDP v3.0b – 25 April 2009 1 Andreas Jakl, 2009
  • 2. Disclaimer These slides are provided free of charge at http://www.symbianresources.com and are used during Java ME courses at the University of Applied Sciences in Hagenberg, Austria at the Mobile Computing department ( http://www.fh-ooe.at/mc ) Respecting the copyright laws, you are allowed to use them: for your own, personal, non-commercial use in the academic environment In all other cases (e.g. for commercial training), please contact andreas.jakl@fh-hagenberg.at The correctness of the contents of these materials cannot be guaranteed. Andreas Jakl is not liable for incorrect information or damage that may arise from using the materials. This document contains copyright materials which are proprietary to Sun or various mobile device manufacturers, including Nokia, SonyEricsson and Motorola. Sun, Sun Microsystems, the Sun Logo and the Java™ Platform, Micro Edition are trademarks or registered trademarks of Sun Microsystems, Inc. in the United States and other countries. Andreas Jakl, 2009 2
  • 3. About me: Andreas Jakl Assistant Professor at the University ofApplied Sciences, Hagenberg since 2006 Teaching: Introduction to Software Development (1st semester BSc) Java ME (2nd semester BSc) Qt / Symbian OS (3rd semester BSc) Bachelor Thesis Seminar (5th semester BSc) Mobile Operating Systems (1st semester MSc) Interaction Technology (2nd semester MSc) Andreas Jakl, 2008 3
  • 4. About me: Andreas Jakl Experience: Forum Nokia Champion (2007, 2008, 2009) Founded company “Mopius” in 2004 Internship, Master‘s Thesis and summer jobs at Siemens / BenQ Mobile (Munich, R&D) Studied Bachelor & Master of Digital Media in Hagenberg / Austria (2001 – 06) Contact: Office A.005a (FH1, lower floor) andreas.jakl@fh-hagenberg.at Andreas Jakl, 2009 4
  • 5. Java Platform What is it all about? 5 Andreas Jakl, 2009
  • 6. The Java Platform, Part 1 / 3 Javaprogramming language Compared to C++: No pointers Automatic garbage collection Interfaces instead of multiple inheritance Comes with an extensive library Andreas Jakl, 2009 6
  • 7. The Java Platform, Part 2 / 3 Virtual Machine (JVM) Executes compiled Java bytecode (.class) Available for many systems Controls the code (security) Often used for mobile phones: Kilobyte Virtual Machine (KVM) Memory footprint starting at only 60 kB (+) Now being replaced by Hotspot JVMs. Andreas Jakl, 2009 7
  • 8. The Java Platform, Part 3 / 3 ApplicationProgramming Interfaces (APIs) Manifoldlibraries e.g. UI, network, 3D, locationbasedservices, etc. Andreas Jakl, 2009 8
  • 9. Java? In numbers: > 6 Billion Java-enabled devices 2.6 Billion Java-enabled phones(8 out of 10 shipped in 2008) 3.5 Billion Java Cards 20 Million Java set-top boxes 800 Million Java desktops 180 Operators deploying Java content 6 Million developers Andreas Jakl, 2009 9
  • 10. Java Editions Andreas Jakl, 2009 10 MSA … Mobile Service Architecture (JSRs 248 and 249) JTWI … Java Technology for the Wireless Industry, JSR 185 MIDP … Mobile Information Device Profile CDC … Connected Device Configuration CLDC … Connected Limited Device Configuration Servers & enterprise computers Servers & personal computers High-end PDAs, TV set-top boxes, embedded devices Mobile phones & entry-level PDAs Smart cards Optional Packages Optional Packages Java 2 Platform, Enterprise Edition (J2EE) Optional Packages Java 2 Platform, Standard Edition (J2SE) Personal Profile Optional Packages Personal Basis Profile MSA JTWI Foundation Profile MIDP CDC CLDC Java Card Java Platform, Micro Edition (Java ME)
  • 11. Java ME Going Mobile Andreas Jakl, 2009 11
  • 12. Differences J2SE / Java ME (MIDP) Java ME is mainly a subset of J2SE But different UI- and event handling functionality Less utility classes (only Vector and Hashtable, no LinkedLists, …) Code runs on both platforms?  general algorithms: yes But the whole application needs porting Andreas Jakl, 2009 12
  • 13. Name: J2ME or Java ME? Official name: Java Platform, Micro Edition (Java ME) Former name: J2ME Andreas Jakl, 2009 13
  • 14. Configuration Defines Java Platform for different device classes: CLDC Limited user interface Low computing power (usually with a battery) Network with low bandwidth CDC Network connection with high bandwidth, possibly persistent Larger memory requirements Andreas Jakl, 2009 14
  • 15. CDC Equivalent to Java SE 1.4.2 when combined with: Foundation Profile (FP) Extends CDC to Java SE 1.4.2, without graphics and UI Personal Basis Profile (PBP) Lightweight GUI support (AWT subset) Personal Profile (PP) Extends PBP with AWT components and Appled support Foundation for Java-based platforms: (few) smartphones, Blu-Ray, Set-top boxes, etc. Andreas Jakl, 2009 15
  • 16. CLDC Currentlyavailable in twoversions: 1.0 In devicesuntil ~ 2005 (atthelatest) 1.1 Currentstandard Supports floatingpoint(but mostly in software slow) Important e.g. for GPS coordinatehandling! Usedfor: Phones (!) Consumer andentertainmentdevices Embedded platforms, controllers, sensors Sun SPOTs Andreas Jakl, 2009 16
  • 17. Profiles Extension and more detailed specification for a configuration Contains APIs for UI, event handling, data storage, networks, timers, … Minimum requirements for devices (screen size, input possibilities, ...) For mobile phones:Mobile Information Device Profile (MIDP) Andreas Jakl, 2009 17
  • 18. Profiles – Major Differences MIDP 1.0 Hardly any sound support, limited graphics Only HTTP, no Sockets  Many vendor-specific extensions (bad!) MIDP 2.0 Game API Better network and multimedia support MIDP 2.1 Tries to improve fragmentation problems (different version for every phone…) Stricter specifications for packages MIDP 3.0 (JSR 271) Multiple MIDlets can run concurrently or in the background, auto-launch More detailed specifications More possibilities for the UI, support of secondary displays Andreas Jakl, 2009 18
  • 19. Sample Architectureof a Phone Andreas Jakl, 2009 19 Profile: MIDP 2.0 Configuration: CLDC 1.1 Virtual Machine: HotSpot Operating System
  • 20. Java ME – Examples MotorolaMOTORAZR V3 CLDC 1.0 MIDP 2.0 Andreas Jakl, 2009 20
  • 21. Java ME – Examples Nokia N70 CLDC 1.1 MIDP 2.0 Andreas Jakl, 2009 21
  • 22. Java ME – Examples SonyEricsson P990i CLDC 1.1 MIDP 2.0 CDC 1.0 Personal Profile Andreas Jakl, 2009 22
  • 23. Java ME – Examples Nokia N86 8MP CLDC 1.1 MIDP 2.1 MSA (Subset) Andreas Jakl, 2009 23
  • 24. Java ME – Examples Andreas Jakl, 2009 24 Amazon Kindle 2 CDC
  • 25. JSRs (Java Specification Requests) JSR = CLDC, MIDP or libraries for additional features Defined through:Java Community Process (JCP) Examples: JSR 82: Bluetooth APIs JSR 179: Location API JSR 184: Mobile 3D API JSR 226: Scalable 2D Vector Graphics API Andreas Jakl, 2009 25
  • 26. JSRs – How Many? Sample: supported JSRs of Nokia N86 8MP Andreas Jakl, 2009 26
  • 27. JSRs – Games? A racing game could require: JSR 184 (3D Graphics) 3D world JSR 135 (Mobile Media) Sound JSR 82 (Bluetooth) P2P Gaming JSR 180 (SIP) P2P over the network JSR 229 (Payment) New forms of payment Andreas Jakl, 2009 27 Asphalt 4: Elite Racing HD© Gameloft
  • 28. JSRs – Mapping Applications? A mapping application could require: JSR 226 (Vector Graphics) Map visualization JSR 179 (Location) Where am I? JSR 172 (Web Services) Requesting data JSR 75 (File and PIM) Map an address JSR 238 (Internationalization) Global software Andreas Jakl, 2009 28 Google Maps Mobile© Google
  • 29. „Write Once, Run Anywhere™“ ? Problems: Different screen sizes Bugs in manufacturers implementations (!) Different hardware performance Which JSRs are supported? Bluetooth? SVG? Web services?… MIDP 2.0 isn’t strict enough: Different key codes for every manufacturer (softkeys, ...) Are socket connections available? Which sound files are playable? Supported image formats? Is double buffering supported? Andreas Jakl, 2009 29
  • 30. JTWI – Fragmentation Solution? Java Technology for the Wireless Industry (JSR 185) First try of defining full API stack to reduce fragmentation Clarification of component JSR specifications However: too small, too few APIs included Bad licensing politics  Failed Andreas Jakl, 2009 30
  • 31. Mobile Service Architecture(MSA, JSR 248) Goal? “Umbrella” specification, replace JTWI Define a unified platform for majority of handsets Spec leds: Nokia, Vodafone. Others heavily involved Devices started to ship in 2007 With at least subset of MSA Andreas Jakl, 2009 31
  • 32. Features in MSA for CLDC Andreas Jakl, 2009 32 Application Environment Virtual Machine JSR 185JTWI JSR 118MIDP 2.0 JSR 238I18N JSR 139CLDC 1.1 Conditional APIs JTWI APIs
  • 33. MIDP 3.0 High-level goals Add much-requested functionality over MIDP 2 Rework security model to support CLDC and CDC Enables support of MIDP 3 on CDC Clarify spec and increase implementation consistency Andreas Jakl, 2009 33
  • 34. MIDP 3.0 Functional Enhancements Concurrency (Multiple MIDlets at the same time) Shared libraries (LIBlets) Auto-start MIDlets Idle screen MIDlets Inter-MIDlet communication Record store interchange format User Interface improvements ... Andreas Jakl, 2009 34
  • 35. Mobile Service Architecture v2 Dynamic Environment Download new APIs to the handset Place custom middleware on handset Next revision of MSA 248 Supports both CLDC and CDC Builds upon and requires MIDP 3.0 Adds multi-tasking and on-device service framework Adds competitive user interface toolkit Adds device segments: entry, standard, advanced No final release date yet Andreas Jakl, 2009 35
  • 36. JavaFX JavaFX(http://javafx.com – integrated in NetBeans 6.5+) New UI libraries (graphics, media, web services) Consistent experience across mobile, desktop, browser, TV, etc Plus: use any Java library in JavaFX Integrated with Java Runtime JavaFX Script Simple declarative language, easier to learn e.g., for artists to change sprite animation, without needing software developer Advantage to JavaScript / ActionScript: integration with Java – reuse any Java library Andreas Jakl, 2009 36
  • 37. JavaFX Mobile Runs on Java ME (plus Android) Mobile content with same tools as Java FX Availability? JavaFX Mobile Runtime needs to be pre-installed on the phone No phones released yet Currently endorsed by: SonyEricsson, LG Andreas Jakl, 2009 37
  • 38. Blu-Ray Disc Java: BD-J Based on Java ME Personal Basis Profile & earlier Java TV spec GUI environment suitable for consumer electronics (no keyboard / mouse) Strong media support Applications? Dynamic menu systems Downloading additional content (subtitles, movie previews, etc.) Games and other bonus material Andreas Jakl, 2009 38
  • 39. Java ME – Applications Internals Andreas Jakl, 2009 39
  • 40. Runtime environment (KVM) IDE Code  Application Andreas Jakl, 2009 40 Source code (.java) Runtime verification Interpreter Compile(javac) .jar-file (MIDlet Suite) .class-files Packaging Preverification .class-files
  • 41. Preverification Verification: check the integrity of the byte code at runtime  Too much for mobile devices, therefore: pre-verification at compile time: Takes care of resource demanding checks Simplifies runtime verification Adds additional attributes to the .class file (5 – 15% increase in size) Andreas Jakl, 2009 41
  • 42. MIDlet Suite Andreas Jakl, 2009 42 MIDlet Suite (.jar-Archiv): - Defines access rights - Possibility to share data (Record Stores) - Shared static variables MIDlet 1 MIDlet 3 MIDlet 2
  • 43. MIDlet-Suite Andreas Jakl, 2009 43 .jar-archive(MIDlet Suite) Preverified .class-file(s) Resources (icons, graphics – optional) .jadfile(Applicationdescriptor, optional) Manifest Information about .jar
  • 44. Manifest Text file “MANIFEST.MF” Contains meta information Andreas Jakl, 2009 44 Manifest-Version: 1.0 MIDlet-Name: RealReplay MIDlet-Description: RealReplay MIDlet-Vendor: Mopius MIDlet-Info-URL: http://www.mopius.com/ MIDlet-Version: 0.96.20 MIDlet-Icon: /res/icon.png MIDlet-1: RealReplay,/res/icon.png,com.mopius.realreplay.RealReplayMIDlet MicroEdition-Profile: MIDP-2.0 MicroEdition-Configuration: CLDC-1.1
  • 45. ApplicationDescriptor (.jad) Information about .jarcontents Allowsto check compatibilitybeforedownloading .jar Andreas Jakl, 2009 45 MIDlet-Name: RealReplay MIDlet-Description: RealReplay MIDlet-Vendor: Mopius MIDlet-Info-URL: http://www.mopius.com/ MIDlet-Version: 0.96.20 MIDlet-Icon: /res/icon.png MIDlet-1: RealReplay,/res/icon.png,com.mopius.realreplay.RealReplayMIDlet MicroEdition-Profile: MIDP-2.0 MicroEdition-Configuration: CLDC-1.1 MIDlet-Jar-Size: 114185 MIDlet-Jar-URL: http://realreplay.mopius.com/files/realreplay.jar Add.
  • 46. Signing Access to some telephone functionality (e.g. socket connections, SMS) restricted: warning is displayed every time Solution: Sign the checksum of .jar in .jad-file with an own key (certificate) Own certificate is signed with root certificate of a trusted certificate authority Andreas Jakl, 2009 46
  • 47. Why OTA for Deployment? Some phones (Samsung, Sagem, BREW,...) do not support installing MIDlets through the PC or Bluetooth Only alternative: Download directly through mobile phone  Over-the-Air (OTA) delivery Andreas Jakl, 2009 47
  • 48. Over-the-Air Andreas Jakl, 2009 48 HTTP Web Server Mobile Device AMS (Application Management Software) JAD-Server JAR-Server Notification Server GET /midlet.jad GET /midlet.jar POST /install-notify (900 Success) 200 OK 200 OK 200 OK
  • 49. Optimization – Obfuscation Original intention: Make reverse engineering more difficult Code more difficult to read after de-compilation Renames classes to “a.class, b.class, …” Removes unused methods, variables, classes  Significant size reduction Over-the-Air = expensive! MIDlet size restrictions in many phones Improves speed (less code to load / parse) Andreas Jakl, 2009 49
  • 50. Obfuscation Original archive79,2 kB Obfuscated42,9 kB = 45% smaller! Andreas Jakl, 2009 50
  • 51. Developing for JavaME Highest priority: memory usage and speed  often very few classes, object orientation reduced to a minimum, frequent use of static variables But: today’s phones have got more memory Andreas Jakl, 2009 51 Example:Winter Sports from Digiment Open Source (GPL)
  • 52. Tools How to develop: 52 Andreas Jakl, 2009
  • 53. IDEs: Sun NetBeans NetBeans (+ Mobility Pack) Andreas Jakl, 2009 53
  • 54. IDEs: NetBeans Very good integration for mobile projects: Localisation Conditional compilation Packaging UI-Designer, game builder, … Relatively high system requirements Andreas Jakl, 2009 54
  • 55. IDEs: Eclipse Eclipse + Plugin: EclipseME / MTJ (officialplug-in) Andreas Jakl, 2009 55 Is integrated in
  • 56. IDEs: Eclipse Very good IDE Helps a lot with programming errors ME integration through Eclipse ME is average Few Java ME specific tools / support – just pure Java Andreas Jakl, 2009 56
  • 57. Emulators Sun Java Wireless Toolkit for CLDC (2.5.2 / 3.0 EA) Tools for compiling, packaging and executing Emulator: Debugging Error handling Text output through console Allows performance analysis Simulates internet access and GPS Download: http://java.sun.com/javame/downloads/index.jsp Andreas Jakl, 2009 57
  • 58. Sun WTK Andreas Jakl, 2009 58 Sample applicationofNetBeans in the WTK emulator
  • 59. Manufacturer-Specific Emulators Different Java ME implementations  Every device manufacturer has its own emulator: Nokia:www.forum.nokia.com/Resources_and_Information/Tools/IDEs/ Sony Ericsson SDK for the Java ME Platformdeveloper.sonyericsson.com/site/global/docstools/java/p_java.jsp Samsunginnovator.samsungmobile.com/ Motoroladeveloper.motorola.com/docstools/sdks/ Andreas Jakl, 2009 59
  • 60. J2ME Polish Tools suite to address Java ME shortcomings: Own UI classes for custom, graphical UI Build system, creates adapted version for specific handsets Allows porting Java ME to Android Licensing: Free for GPL products 1 commercial app: €990 Unlimited commercial apps: €14,990 http://www.j2mepolish.org/ Andreas Jakl, 2009 60
  • 62. Events – The Big Picture Andreas Jakl, 2009 * Requires registering the MIDlet 62
  • 63. Listener Implement the Listener-Interface to get informed: CommandListener: commandAction()Notification when e.g. a menu item has been selected ItemCommandListener: commandAction()Used for events for individual items ItemStateListener: itemStateChanged()When an UI element has been changed Andreas Jakl, 2009 63
  • 64. Recap: Interfaces? Interface: implemented by 1+ classes Defines abstract methods and constants But doesn’t contain the implementation! Implementing class has to override all defined methods Important for generic development! Caller does not need to know exact class type and name, but can work with the interface type More information at: http://en.wikipedia.org/wiki/Interface_(Java) Andreas Jakl, 2009 64 Interface definition: Interface implementation: publicinterfacePredator {booleanchasePrey(Prey p);voideatPrey(Prey p);} publicclassCatimplementsPredator { publicbooleanchasePrey(Prey p) {// programmingtochaseprey p (specificallyfor a cat) }publicvoideatPrey (Prey p) {// programmingtoeatprey p (specificallyfor a cat) }}
  • 65. Commands Command = semantic information about an action ( how can an action be executed?) But no actual implementation of the action! Contains: Short label Long label (optional) Type Priority Andreas Jakl, 2009 One of them will be displayed on the screen / in the menu, depending on the available space “Intention” of the command – e.g. for special placement on the device For the order of commands, if more are mapped to the same softkey. The lower the priority, the more important it is. 65
  • 67. Exit Class HelloWorldMIDlet: … implements CommandListener Define new command (member variable): private Command cmdExit; Create it in the constructor: cmdExit = new Command(“Exit”, Command.EXIT, 1);frmMain.addCommand(cmdExit);frmMain.setCommandListener(this); Andreas Jakl, 2009 Implementation e.g. like in the “Hello World”-Exercise 67
  • 68. Command Handling Method defined in the base class CommandListener: public void commandAction (Command c, Displayable d){if (c == cmdExit) {destroyApp(true);notifyDestroyed(); }} Andreas Jakl, 2009 true: forces shutdown, you have to free resources!false:shtudown can be prevented by the MIDlet if necessary. ... mainly important if the framework wants / has to close down the app. Inform the app. manager that ourMIDlet wants to be shut down. 68
  • 69. Exit Softkey Andreas Jakl, 2009 69
  • 70. 2 Softkeys, 3 Commands? Commands in themenu – placementdepends on thephone: Andreas Jakl, 2009 NokiaSeries 40 WTK 2.5 Nokia S60 70
  • 71. Thanks for your attention That’s it! Andreas Jakl, 2009 71