SlideShare a Scribd company logo
Java ME
User Interface Development




User Interface Development - “Flash Lite vs. JavaME”, Bologna 29-01-2007 - http://www.jmdf.org
Agenda


• Netbeans support for High level UI
  – Visual Designer
  – Fragmentation
  – Localization Support
• Graphics APIs CLDC based
  – LCDUI
  – Mobile 3D Graphics
  – SVG Support
• References

    User Interface Development - “Flash Lite vs. JavaME”, Bologna 29-01-2007 - http://www.jmdf.org
User Interface APIs - Today




    User Interface Development - “Flash Lite vs. JavaME”, Bologna 29-01-2007 - http://www.jmdf.org
Netbeans Mobile Visual Designer
High Level UI

   • Flow Designer
      – Map out navigation
      – Visually represents the different paths that can be
        taken between your application’s different screens
      – You can add or remove screens, as well as the
        transitions between them
   • Screen Designer
      – Simulates how the screen will appear on a real device
   • Corresponding code automatically generated
      – Hint: Plan out your entire application flow before diving
        into the code manually




     User Interface Development - “Flash Lite vs. JavaME”, Bologna 29-01-2007 - http://www.jmdf.org
Layout with Mobile Visual Designer

  • The Component Palette
     – Screens
     – Commands
     – Form Items
     – Elements
     – Resources
     – Custom Components
  • Special Components
     – Splash Screen
     – Table
     – Wait Screen
  • Inspector and Properties Windows


     User Interface Development - “Flash Lite vs. JavaME”, Bologna 29-01-2007 - http://www.jmdf.org
Netbeans Mobile Visual Designer




    User Interface Development - “Flash Lite vs. JavaME”, Bologna 29-01-2007 - http://www.jmdf.org
Demo


  • Visual Designer Demonstration:
     – creating Mobile Splash Screens
     – using the TableItem




   User Interface Development - “Flash Lite vs. JavaME”, Bologna 29-01-2007 - http://www.jmdf.org
Optimize The Application For Different Devices -
Configuration Manager



 • Writing a single application that will run on disparate
   platforms can be challenging:
    – screen size
    – free memory
    – software issues
    – available API’s
 • One configuration for each distribution JAR file you plan
   on building for your project
 • Existing configuration template
 • Customizable




      User Interface Development - “Flash Lite vs. JavaME”, Bologna 29-01-2007 - http://www.jmdf.org
Example of APIs support on Nokia
Devices




    User Interface Development - “Flash Lite vs. JavaME”, Bologna 29-01-2007 - http://www.jmdf.org
Multiple Device Configurations




     User Interface Development - “Flash Lite vs. JavaME”, Bologna 29-01-2007 - http://www.jmdf.org
Optimize The Application For Different Devices -
Resource Locations


 • Handling Project Resources
    – Use Different Resource Locations and match the resources
      to the configurations in Libraries & Resource panel
            /res/small/splashScreen.png
            /res/medium/splashScreen.png
            /res/large/splashScreen.png
        Image splashScreen = Image.createImage("splashScreen.png");

    – Using Configuration-Specific Code Blocks and Abilities




      User Interface Development - “Flash Lite vs. JavaME”, Bologna 29-01-2007 - http://www.jmdf.org
Defining and Using Preprocessor
Directives


  • Using Preprocessor Directives
  • Directive Syntax and Functions
     – Identifiers
     – Variables
     – Operators
     – Expressions
  • Compilation Based on Device Platform Versioning




    User Interface Development - “Flash Lite vs. JavaME”, Bologna 29-01-2007 - http://www.jmdf.org
Optimize The Application For Different Devices -
Preprocessor



 • Using the Preprocessor
    – CPP-like syntax
    – Example:
                   //#if mmedia
                       //#if nokia
                           //#if s60_ver=="1.0"
                           import com.nokia.mmapi.v1
                           //#elif s60_ver=="2.0"
                           import com.nokia.mmapi.v2
                           //#else
                           import com.nokia.mmapi.def
                           //#endif
                       //#else
                           import javax.microedition.mmapi
                       //#endif
                   //#endif



      User Interface Development - “Flash Lite vs. JavaME”, Bologna 29-01-2007 - http://www.jmdf.org
Optimize The Application For Different Devices -
Preprocessor




      User Interface Development - “Flash Lite vs. JavaME”, Bologna 29-01-2007 - http://www.jmdf.org
Abilities




    User Interface Development - “Flash Lite vs. JavaME”, Bologna 29-01-2007 - http://www.jmdf.org
Optimize The Application For Different Users -
Localization



  • Using the Localization Support Class
     LocalizationSupport.getMessage("PROPERTY_NAME")

  • The message.properties file
     PROPERTY_NAME=My Translatable Text String

  • This technique uses the microedition.locale property of
    the phone to determine which version of the
    message.properties file should be used
  • You can force a particular region to be used
     LocalizationSupport.initLocalizationSupport("en_US")




      User Interface Development - “Flash Lite vs. JavaME”, Bologna 29-01-2007 - http://www.jmdf.org
Overview of Graphics APIs


• LCDUI for MIDP
• JSR 184 - Mobile 3D Graphics API for J2ME
• JSR 226 - Scalable 2D Vector Graphics API for
  J2ME




    User Interface Development - “Flash Lite vs. JavaME”, Bologna 29-01-2007 - http://www.jmdf.org
LCDUI for MIDP - Canvas


•   Immediate mode API
•   All drawing done within a paint() callback
•   Can also draw to an off screen mutable image
•   Suited for event based interaction
•   High performance, low system overhead




      User Interface Development - “Flash Lite vs. JavaME”, Bologna 29-01-2007 - http://www.jmdf.org
LCDUI for MIDP - Game Canvas


•   Immediate mode synchronous drawing
•   Ideal for “platformer” games
•   Sprite and tiled background
•   Well suited for games
•   Only on MIDP 2.0




     User Interface Development - “Flash Lite vs. JavaME”, Bologna 29-01-2007 - http://www.jmdf.org
JSR 184 - Mobile 3D
Graphics API for J2ME


• 3D retained mode and immediate mode API
• Focus is retained mode (display list, scene
  graph)
• Defines standard file format—m3g
• Tools available to export graphics models in
  m3g format
• Easier to develop using 3D authoring tools
• Some animation support
• HW acceleration likely to be through OpenGL

     User Interface Development - “Flash Lite vs. JavaME”, Bologna 29-01-2007 - http://www.jmdf.org
JSR 184 – Mobile 3-D Graphics API

• Description:
  – Provide an efficient 3D Graphics API suitable for
    the J2ME platform, in particular CLDC/MIDP
• Key Features:
  – Scene graph API (high-level)
  – Immediate API (low-level, subset of OpenGL)
  – Importer functions for textures, meshes,
    animations, and scene hierarchies
  – Tight integration with MIDP



     User Interface Development - “Flash Lite vs. JavaME”, Bologna 29-01-2007 - http://www.jmdf.org
JSR 184 – Mobile 3-D Graphics API

• Dependencies:
   – CLDC 1.1 (requires floating point support)
• Resources:
   – http://developer.sonyericsson.com/site/global/newsande
     vents/campaigns/java_3d/p_java3d.jsp




     User Interface Development - “Flash Lite vs. JavaME”, Bologna 29-01-2007 - http://www.jmdf.org
Scalable Vector Graphics


 ● W3C recommendation on vector graphics
 ● Scalable


 ● Animated


 ● Interactive


 ● Lossless


 ● Compact




     User Interface Development - “Flash Lite vs. JavaME”, Bologna 29-01-2007 - http://www.jmdf.org
JSR 226


 • SVG provides functionality handsets need
 • JSR 226 brings scalability to Java ME apps
 • JSR 226 allows creation of programmable,
   dynamic SVG content
  – User interaction
  – Real time network data (traffic, weather)
  – Location-based information
 • JSR 226 unleashes the power of Java and SVG


    User Interface Development - “Flash Lite vs. JavaME”, Bologna 29-01-2007 - http://www.jmdf.org
JSR 226
Background and motivation


• Increasing demand for mobile multimedia
  (vector graphics) applications
• Mobile devices are diverse
   • Different screen sizes
   • Want to avoid re-authoring content
• Use cases
   • Map visualization
   • Rich animations
   • Simple UI applications
   • Enterprise applications


     User Interface Development - “Flash Lite vs. JavaME”, Bologna 29-01-2007 - http://www.jmdf.org
Simple SVG Application - 1

 import javax.microedition.lcdui.Canvas;
 import javax.microedition.lcdui.Graphics;
 import javax.microedition.m2g.*;

 class MapApplication extends Canvas {
         private ScalableImage myMap;
         private ScalableGraphics gc;

     public MapApplication(InputStream stream) {
                 myMap = ScalableImage.createImage(stream, null);
                 gc = ScalableGraphics.createInstance();
          }

          public void paint(Graphics g) {
                  gc.bindTarget(g);                                 //Bind Target
                  gc.render(0, 0, myMap);                           //Render SVG document
                  gc.releaseTarget();                               //Release target
          }
 }



      User Interface Development - “Flash Lite vs. JavaME”, Bologna 29-01-2007 - http://www.jmdf.org
Simple SVG Application - 2

  // Create empty SVG Image, get root <svg> Element
  SVGImage myImage = SVGImage.createEmptyImage();
  Document myDoc = myImage.getDocument();
  SVGSVGElement root = (SVGSVGElement)
      myDoc.getDocumentElement();

  // Create new SVGElement
  SVGElement myRect = myDoc.createElementNS(SVGNS, "rect");

  // Set attributes and properties
  myRect.setId("button");
  myRect.setFloatTrait("x", 30.0f);
  myRect.setFloatTrait("y", 50.0f); // Also width, height
  SVGRGBColor myColor = root.createSVGRGBColor(100, 0, 0);
  myRect.setRGBColorTrait("fill", myColor);

  // Append to document
  root.appendChild(myRect);



    User Interface Development - “Flash Lite vs. JavaME”, Bologna 29-01-2007 - http://www.jmdf.org
References

 • Netbeans: http://www.netbeans.org

 • Sony-Ericsson 3D:
   http://developer.sonyericsson.com/site/global/newsandevents/campai
   gns/java_3d/p_java3d.jsp

 • JSR 184: http://jcp.org/en/jsr/detail?id=184

 • JSR 226: http://jcp.org/en/jsr/detail?id=226




    User Interface Development - “Flash Lite vs. JavaME”, Bologna 29-01-2007 - http://www.jmdf.org
Java ME
User Interface Development




User Interface Development - “Flash Lite vs. JavaME”, Bologna 29-01-2007 - http://www.jmdf.org
Speaker


  Edoardo Schepis
  Java ME Tech Lead at Funambol
  JMDF Founder

  email: edoardo.schepis@funambol.com
  weblog: http://www.edschepis.net
  Java Mobile Developers Forum: http://www.jmdf.org




     User Interface Development - “Flash Lite vs. JavaME”, Bologna 29-01-2007 - http://www.jmdf.org

More Related Content

What's hot (20)

PDF
Building software using Rich Clients Platforms Rikard Thulin
Rikard Thulin
 
PDF
Magnolia CMS on Jelastic
Edgar Vonk
 
PDF
WebWorks Development for BlackBerry PlayBook and Smartphones
Kyle McInnes
 
PPTX
GWT HJUG Presentation
Derrick Bowen
 
PDF
Architecture of a Modern Web App - SpringOne India
Jeremy Grelle
 
KEY
Magnolia CMS 5.0 - Overview
Philipp Bärfuss
 
PDF
Building a Next Generation Mobile Browser using Web technologies
n_adam_stanley
 
PDF
Sencha touchonbb10 bootcamp
n_adam_stanley
 
KEY
Magnolia CMS 5.0 - Architecture
Philipp Bärfuss
 
DOC
B.Karthik
KARTHIK B
 
PDF
Frontend Monoliths: Run if you can!
Jonas Bandi
 
PDF
Modern JavaScript Frameworks: Angular, React & Vue.js
Jonas Bandi
 
PDF
Migrating a Large AEM Project to Touch UI
Gregor Zurowski
 
PDF
AD107 Microsoft SharePoint meets IBM Lotus Domino
Stephan H. Wissel
 
PDF
AJAX vs. Flex, 2007
Evgenios Skitsanos
 
PPTX
Large-Scale Web Development with JavaScript
Navid Ahmadi
 
PPTX
Nashua Cloud .NET User Group - Basic WP8 App Dev With XAML and C#, April 2013
John Garland
 
PDF
Mozilla Project and Open Web
Channy Yun
 
PPTX
Amp by Google: The Present And Future Of Quick Content Delivery
Raunak Hajela
 
PDF
新版阿尔法城背后的前端MVC实践
Dexter Yang
 
Building software using Rich Clients Platforms Rikard Thulin
Rikard Thulin
 
Magnolia CMS on Jelastic
Edgar Vonk
 
WebWorks Development for BlackBerry PlayBook and Smartphones
Kyle McInnes
 
GWT HJUG Presentation
Derrick Bowen
 
Architecture of a Modern Web App - SpringOne India
Jeremy Grelle
 
Magnolia CMS 5.0 - Overview
Philipp Bärfuss
 
Building a Next Generation Mobile Browser using Web technologies
n_adam_stanley
 
Sencha touchonbb10 bootcamp
n_adam_stanley
 
Magnolia CMS 5.0 - Architecture
Philipp Bärfuss
 
B.Karthik
KARTHIK B
 
Frontend Monoliths: Run if you can!
Jonas Bandi
 
Modern JavaScript Frameworks: Angular, React & Vue.js
Jonas Bandi
 
Migrating a Large AEM Project to Touch UI
Gregor Zurowski
 
AD107 Microsoft SharePoint meets IBM Lotus Domino
Stephan H. Wissel
 
AJAX vs. Flex, 2007
Evgenios Skitsanos
 
Large-Scale Web Development with JavaScript
Navid Ahmadi
 
Nashua Cloud .NET User Group - Basic WP8 App Dev With XAML and C#, April 2013
John Garland
 
Mozilla Project and Open Web
Channy Yun
 
Amp by Google: The Present And Future Of Quick Content Delivery
Raunak Hajela
 
新版阿尔法城背后的前端MVC实践
Dexter Yang
 

Viewers also liked (15)

DOCX
готовий проект 7
Adel1na
 
PPTX
презентация Microsoft office power point
Максим Чёрный
 
PDF
Lean Business and Grow
Wisnu Dewobroto
 
ODP
Scrumbuts - Italian Agile Day 2010
Edoardo Schepis
 
PPTX
Tutorial como hacer mapas conceptuales en bubbl.us
TICS & Partners
 
PDF
JMDF Introduction - JMDF 2005
Edoardo Schepis
 
PDF
Plangere rl
cbwcbw
 
PPTX
Evidencias fotográficas mapa de regiones naturales y áreas protegidas
Natalie Lizarraga
 
PDF
JavaME Deploy and Test - JMDF 2005
Edoardo Schepis
 
PPT
El Cmaptool Herramienta de aprendizaje virtual
guest87ccd5
 
DOC
Test
cheijmen
 
PPTX
Autores dominicanos
nayely santana
 
PPT
Focus Group Open Source 09.05.2011 Filippo Sorbello
Roberto Galoppini
 
PDF
Impact of employee absences in employer cost
Genalyn Patlunag
 
PDF
estructuras de almacenamiento y diferentes medios de almacenamiento de datos.
Esther Cesar
 
готовий проект 7
Adel1na
 
презентация Microsoft office power point
Максим Чёрный
 
Lean Business and Grow
Wisnu Dewobroto
 
Scrumbuts - Italian Agile Day 2010
Edoardo Schepis
 
Tutorial como hacer mapas conceptuales en bubbl.us
TICS & Partners
 
JMDF Introduction - JMDF 2005
Edoardo Schepis
 
Plangere rl
cbwcbw
 
Evidencias fotográficas mapa de regiones naturales y áreas protegidas
Natalie Lizarraga
 
JavaME Deploy and Test - JMDF 2005
Edoardo Schepis
 
El Cmaptool Herramienta de aprendizaje virtual
guest87ccd5
 
Test
cheijmen
 
Autores dominicanos
nayely santana
 
Focus Group Open Source 09.05.2011 Filippo Sorbello
Roberto Galoppini
 
Impact of employee absences in employer cost
Genalyn Patlunag
 
estructuras de almacenamiento y diferentes medios de almacenamiento de datos.
Esther Cesar
 
Ad

Similar to JavaME UI - JMDF 2007 (20)

PDF
dan_labrecque_web_resume
Dan Labrecque
 
PDF
Seven Versions of One Web Application
Yakov Fain
 
PDF
JavaME Development Workflow - JMDF 2007
Edoardo Schepis
 
PPT
MyMobileWeb Certification Part I
crdlc
 
PDF
openMIC barcamp 11.02.2010
Patrick Lauke
 
PPTX
Cloudy with a Dash of Universal Apps
Shahed Chowdhuri
 
PDF
Google App Engine overview (GAE/J)
Moch Nasrullah Rahmani
 
PPTX
Silverlight
pradeepfdo
 
PPT
Silver Light for every one by Subodh
Subodh Pushpak
 
PDF
Anatomy of an HTML 5 mobile web app
Ivano Malavolta
 
PDF
Philipe Riand - Building Social Applications using the Social Business Toolki...
LetsConnect
 
PPTX
Building Mobile Web Apps with jQM and Cordova on Azure
Brian Lyttle
 
PPTX
Wintellect - Devscovery - Enterprise JavaScript Development 2 of 2
Jeremy Likness
 
PDF
Flutter vs Java Graphical User Interface Frameworks - text
Toma Velev
 
PDF
Software Engineering 2014
Shuichi Kurabayashi
 
PPT
Android Introduction
aswapnal
 
PPTX
Overview of Adroid Architecture.pptx
debasish duarah
 
PDF
Dojo (QCon 2007 Slides)
Eugene Lazutkin
 
PDF
Apache cordova
Carlo Bernaschina
 
PDF
Mobile Vue.js – From PWA to Native
MartinSotirov
 
dan_labrecque_web_resume
Dan Labrecque
 
Seven Versions of One Web Application
Yakov Fain
 
JavaME Development Workflow - JMDF 2007
Edoardo Schepis
 
MyMobileWeb Certification Part I
crdlc
 
openMIC barcamp 11.02.2010
Patrick Lauke
 
Cloudy with a Dash of Universal Apps
Shahed Chowdhuri
 
Google App Engine overview (GAE/J)
Moch Nasrullah Rahmani
 
Silverlight
pradeepfdo
 
Silver Light for every one by Subodh
Subodh Pushpak
 
Anatomy of an HTML 5 mobile web app
Ivano Malavolta
 
Philipe Riand - Building Social Applications using the Social Business Toolki...
LetsConnect
 
Building Mobile Web Apps with jQM and Cordova on Azure
Brian Lyttle
 
Wintellect - Devscovery - Enterprise JavaScript Development 2 of 2
Jeremy Likness
 
Flutter vs Java Graphical User Interface Frameworks - text
Toma Velev
 
Software Engineering 2014
Shuichi Kurabayashi
 
Android Introduction
aswapnal
 
Overview of Adroid Architecture.pptx
debasish duarah
 
Dojo (QCon 2007 Slides)
Eugene Lazutkin
 
Apache cordova
Carlo Bernaschina
 
Mobile Vue.js – From PWA to Native
MartinSotirov
 
Ad

More from Edoardo Schepis (7)

PDF
Openshift Enterprise
Edoardo Schepis
 
ODP
Joomla in the cloud with Openshift
Edoardo Schepis
 
PDF
Intro jbug milano
Edoardo Schepis
 
PDF
Funambol: introducing SCRUM in software product development - AgileDay Italia
Edoardo Schepis
 
PDF
Funambol JavaME Messaging Client: Lessons Learned - JavaONE 2008
Edoardo Schepis
 
PDF
JavaME Overview - JMDF 2007
Edoardo Schepis
 
PDF
Alla ricerca della User Story perduta
Edoardo Schepis
 
Openshift Enterprise
Edoardo Schepis
 
Joomla in the cloud with Openshift
Edoardo Schepis
 
Intro jbug milano
Edoardo Schepis
 
Funambol: introducing SCRUM in software product development - AgileDay Italia
Edoardo Schepis
 
Funambol JavaME Messaging Client: Lessons Learned - JavaONE 2008
Edoardo Schepis
 
JavaME Overview - JMDF 2007
Edoardo Schepis
 
Alla ricerca della User Story perduta
Edoardo Schepis
 

Recently uploaded (20)

PPTX
AVL ( audio, visuals or led ), technology.
Rajeshwri Panchal
 
PDF
Peak of Data & AI Encore - Real-Time Insights & Scalable Editing with ArcGIS
Safe Software
 
PDF
Tea4chat - another LLM Project by Kerem Atam
a0m0rajab1
 
PDF
MASTERDECK GRAPHSUMMIT SYDNEY (Public).pdf
Neo4j
 
PPTX
AI Code Generation Risks (Ramkumar Dilli, CIO, Myridius)
Priyanka Aash
 
PDF
Data_Analytics_vs_Data_Science_vs_BI_by_CA_Suvidha_Chaplot.pdf
CA Suvidha Chaplot
 
PDF
Make GenAI investments go further with the Dell AI Factory
Principled Technologies
 
PDF
Presentation about Hardware and Software in Computer
snehamodhawadiya
 
PDF
How Open Source Changed My Career by abdelrahman ismail
a0m0rajab1
 
PDF
Trying to figure out MCP by actually building an app from scratch with open s...
Julien SIMON
 
PPTX
cloud computing vai.pptx for the project
vaibhavdobariyal79
 
PDF
Per Axbom: The spectacular lies of maps
Nexer Digital
 
PPTX
AI and Robotics for Human Well-being.pptx
JAYMIN SUTHAR
 
PPTX
Agile Chennai 18-19 July 2025 | Workshop - Enhancing Agile Collaboration with...
AgileNetwork
 
PDF
introduction to computer hardware and sofeware
chauhanshraddha2007
 
PDF
Economic Impact of Data Centres to the Malaysian Economy
flintglobalapac
 
PDF
State-Dependent Conformal Perception Bounds for Neuro-Symbolic Verification
Ivan Ruchkin
 
PDF
RAT Builders - How to Catch Them All [DeepSec 2024]
malmoeb
 
PDF
The Future of Artificial Intelligence (AI)
Mukul
 
PDF
CIFDAQ's Market Wrap : Bears Back in Control?
CIFDAQ
 
AVL ( audio, visuals or led ), technology.
Rajeshwri Panchal
 
Peak of Data & AI Encore - Real-Time Insights & Scalable Editing with ArcGIS
Safe Software
 
Tea4chat - another LLM Project by Kerem Atam
a0m0rajab1
 
MASTERDECK GRAPHSUMMIT SYDNEY (Public).pdf
Neo4j
 
AI Code Generation Risks (Ramkumar Dilli, CIO, Myridius)
Priyanka Aash
 
Data_Analytics_vs_Data_Science_vs_BI_by_CA_Suvidha_Chaplot.pdf
CA Suvidha Chaplot
 
Make GenAI investments go further with the Dell AI Factory
Principled Technologies
 
Presentation about Hardware and Software in Computer
snehamodhawadiya
 
How Open Source Changed My Career by abdelrahman ismail
a0m0rajab1
 
Trying to figure out MCP by actually building an app from scratch with open s...
Julien SIMON
 
cloud computing vai.pptx for the project
vaibhavdobariyal79
 
Per Axbom: The spectacular lies of maps
Nexer Digital
 
AI and Robotics for Human Well-being.pptx
JAYMIN SUTHAR
 
Agile Chennai 18-19 July 2025 | Workshop - Enhancing Agile Collaboration with...
AgileNetwork
 
introduction to computer hardware and sofeware
chauhanshraddha2007
 
Economic Impact of Data Centres to the Malaysian Economy
flintglobalapac
 
State-Dependent Conformal Perception Bounds for Neuro-Symbolic Verification
Ivan Ruchkin
 
RAT Builders - How to Catch Them All [DeepSec 2024]
malmoeb
 
The Future of Artificial Intelligence (AI)
Mukul
 
CIFDAQ's Market Wrap : Bears Back in Control?
CIFDAQ
 

JavaME UI - JMDF 2007

  • 1. Java ME User Interface Development User Interface Development - “Flash Lite vs. JavaME”, Bologna 29-01-2007 - http://www.jmdf.org
  • 2. Agenda • Netbeans support for High level UI – Visual Designer – Fragmentation – Localization Support • Graphics APIs CLDC based – LCDUI – Mobile 3D Graphics – SVG Support • References User Interface Development - “Flash Lite vs. JavaME”, Bologna 29-01-2007 - http://www.jmdf.org
  • 3. User Interface APIs - Today User Interface Development - “Flash Lite vs. JavaME”, Bologna 29-01-2007 - http://www.jmdf.org
  • 4. Netbeans Mobile Visual Designer High Level UI • Flow Designer – Map out navigation – Visually represents the different paths that can be taken between your application’s different screens – You can add or remove screens, as well as the transitions between them • Screen Designer – Simulates how the screen will appear on a real device • Corresponding code automatically generated – Hint: Plan out your entire application flow before diving into the code manually User Interface Development - “Flash Lite vs. JavaME”, Bologna 29-01-2007 - http://www.jmdf.org
  • 5. Layout with Mobile Visual Designer • The Component Palette – Screens – Commands – Form Items – Elements – Resources – Custom Components • Special Components – Splash Screen – Table – Wait Screen • Inspector and Properties Windows User Interface Development - “Flash Lite vs. JavaME”, Bologna 29-01-2007 - http://www.jmdf.org
  • 6. Netbeans Mobile Visual Designer User Interface Development - “Flash Lite vs. JavaME”, Bologna 29-01-2007 - http://www.jmdf.org
  • 7. Demo • Visual Designer Demonstration: – creating Mobile Splash Screens – using the TableItem User Interface Development - “Flash Lite vs. JavaME”, Bologna 29-01-2007 - http://www.jmdf.org
  • 8. Optimize The Application For Different Devices - Configuration Manager • Writing a single application that will run on disparate platforms can be challenging: – screen size – free memory – software issues – available API’s • One configuration for each distribution JAR file you plan on building for your project • Existing configuration template • Customizable User Interface Development - “Flash Lite vs. JavaME”, Bologna 29-01-2007 - http://www.jmdf.org
  • 9. Example of APIs support on Nokia Devices User Interface Development - “Flash Lite vs. JavaME”, Bologna 29-01-2007 - http://www.jmdf.org
  • 10. Multiple Device Configurations User Interface Development - “Flash Lite vs. JavaME”, Bologna 29-01-2007 - http://www.jmdf.org
  • 11. Optimize The Application For Different Devices - Resource Locations • Handling Project Resources – Use Different Resource Locations and match the resources to the configurations in Libraries & Resource panel /res/small/splashScreen.png /res/medium/splashScreen.png /res/large/splashScreen.png Image splashScreen = Image.createImage("splashScreen.png"); – Using Configuration-Specific Code Blocks and Abilities User Interface Development - “Flash Lite vs. JavaME”, Bologna 29-01-2007 - http://www.jmdf.org
  • 12. Defining and Using Preprocessor Directives • Using Preprocessor Directives • Directive Syntax and Functions – Identifiers – Variables – Operators – Expressions • Compilation Based on Device Platform Versioning User Interface Development - “Flash Lite vs. JavaME”, Bologna 29-01-2007 - http://www.jmdf.org
  • 13. Optimize The Application For Different Devices - Preprocessor • Using the Preprocessor – CPP-like syntax – Example: //#if mmedia //#if nokia //#if s60_ver=="1.0" import com.nokia.mmapi.v1 //#elif s60_ver=="2.0" import com.nokia.mmapi.v2 //#else import com.nokia.mmapi.def //#endif //#else import javax.microedition.mmapi //#endif //#endif User Interface Development - “Flash Lite vs. JavaME”, Bologna 29-01-2007 - http://www.jmdf.org
  • 14. Optimize The Application For Different Devices - Preprocessor User Interface Development - “Flash Lite vs. JavaME”, Bologna 29-01-2007 - http://www.jmdf.org
  • 15. Abilities User Interface Development - “Flash Lite vs. JavaME”, Bologna 29-01-2007 - http://www.jmdf.org
  • 16. Optimize The Application For Different Users - Localization • Using the Localization Support Class LocalizationSupport.getMessage("PROPERTY_NAME") • The message.properties file PROPERTY_NAME=My Translatable Text String • This technique uses the microedition.locale property of the phone to determine which version of the message.properties file should be used • You can force a particular region to be used LocalizationSupport.initLocalizationSupport("en_US") User Interface Development - “Flash Lite vs. JavaME”, Bologna 29-01-2007 - http://www.jmdf.org
  • 17. Overview of Graphics APIs • LCDUI for MIDP • JSR 184 - Mobile 3D Graphics API for J2ME • JSR 226 - Scalable 2D Vector Graphics API for J2ME User Interface Development - “Flash Lite vs. JavaME”, Bologna 29-01-2007 - http://www.jmdf.org
  • 18. LCDUI for MIDP - Canvas • Immediate mode API • All drawing done within a paint() callback • Can also draw to an off screen mutable image • Suited for event based interaction • High performance, low system overhead User Interface Development - “Flash Lite vs. JavaME”, Bologna 29-01-2007 - http://www.jmdf.org
  • 19. LCDUI for MIDP - Game Canvas • Immediate mode synchronous drawing • Ideal for “platformer” games • Sprite and tiled background • Well suited for games • Only on MIDP 2.0 User Interface Development - “Flash Lite vs. JavaME”, Bologna 29-01-2007 - http://www.jmdf.org
  • 20. JSR 184 - Mobile 3D Graphics API for J2ME • 3D retained mode and immediate mode API • Focus is retained mode (display list, scene graph) • Defines standard file format—m3g • Tools available to export graphics models in m3g format • Easier to develop using 3D authoring tools • Some animation support • HW acceleration likely to be through OpenGL User Interface Development - “Flash Lite vs. JavaME”, Bologna 29-01-2007 - http://www.jmdf.org
  • 21. JSR 184 – Mobile 3-D Graphics API • Description: – Provide an efficient 3D Graphics API suitable for the J2ME platform, in particular CLDC/MIDP • Key Features: – Scene graph API (high-level) – Immediate API (low-level, subset of OpenGL) – Importer functions for textures, meshes, animations, and scene hierarchies – Tight integration with MIDP User Interface Development - “Flash Lite vs. JavaME”, Bologna 29-01-2007 - http://www.jmdf.org
  • 22. JSR 184 – Mobile 3-D Graphics API • Dependencies: – CLDC 1.1 (requires floating point support) • Resources: – http://developer.sonyericsson.com/site/global/newsande vents/campaigns/java_3d/p_java3d.jsp User Interface Development - “Flash Lite vs. JavaME”, Bologna 29-01-2007 - http://www.jmdf.org
  • 23. Scalable Vector Graphics ● W3C recommendation on vector graphics ● Scalable ● Animated ● Interactive ● Lossless ● Compact User Interface Development - “Flash Lite vs. JavaME”, Bologna 29-01-2007 - http://www.jmdf.org
  • 24. JSR 226 • SVG provides functionality handsets need • JSR 226 brings scalability to Java ME apps • JSR 226 allows creation of programmable, dynamic SVG content – User interaction – Real time network data (traffic, weather) – Location-based information • JSR 226 unleashes the power of Java and SVG User Interface Development - “Flash Lite vs. JavaME”, Bologna 29-01-2007 - http://www.jmdf.org
  • 25. JSR 226 Background and motivation • Increasing demand for mobile multimedia (vector graphics) applications • Mobile devices are diverse • Different screen sizes • Want to avoid re-authoring content • Use cases • Map visualization • Rich animations • Simple UI applications • Enterprise applications User Interface Development - “Flash Lite vs. JavaME”, Bologna 29-01-2007 - http://www.jmdf.org
  • 26. Simple SVG Application - 1 import javax.microedition.lcdui.Canvas; import javax.microedition.lcdui.Graphics; import javax.microedition.m2g.*; class MapApplication extends Canvas { private ScalableImage myMap; private ScalableGraphics gc; public MapApplication(InputStream stream) { myMap = ScalableImage.createImage(stream, null); gc = ScalableGraphics.createInstance(); } public void paint(Graphics g) { gc.bindTarget(g); //Bind Target gc.render(0, 0, myMap); //Render SVG document gc.releaseTarget(); //Release target } } User Interface Development - “Flash Lite vs. JavaME”, Bologna 29-01-2007 - http://www.jmdf.org
  • 27. Simple SVG Application - 2 // Create empty SVG Image, get root <svg> Element SVGImage myImage = SVGImage.createEmptyImage(); Document myDoc = myImage.getDocument(); SVGSVGElement root = (SVGSVGElement) myDoc.getDocumentElement(); // Create new SVGElement SVGElement myRect = myDoc.createElementNS(SVGNS, "rect"); // Set attributes and properties myRect.setId("button"); myRect.setFloatTrait("x", 30.0f); myRect.setFloatTrait("y", 50.0f); // Also width, height SVGRGBColor myColor = root.createSVGRGBColor(100, 0, 0); myRect.setRGBColorTrait("fill", myColor); // Append to document root.appendChild(myRect); User Interface Development - “Flash Lite vs. JavaME”, Bologna 29-01-2007 - http://www.jmdf.org
  • 28. References • Netbeans: http://www.netbeans.org • Sony-Ericsson 3D: http://developer.sonyericsson.com/site/global/newsandevents/campai gns/java_3d/p_java3d.jsp • JSR 184: http://jcp.org/en/jsr/detail?id=184 • JSR 226: http://jcp.org/en/jsr/detail?id=226 User Interface Development - “Flash Lite vs. JavaME”, Bologna 29-01-2007 - http://www.jmdf.org
  • 29. Java ME User Interface Development User Interface Development - “Flash Lite vs. JavaME”, Bologna 29-01-2007 - http://www.jmdf.org
  • 30. Speaker Edoardo Schepis Java ME Tech Lead at Funambol JMDF Founder email: [email protected] weblog: http://www.edschepis.net Java Mobile Developers Forum: http://www.jmdf.org User Interface Development - “Flash Lite vs. JavaME”, Bologna 29-01-2007 - http://www.jmdf.org