introducing j2me polish
DESCRIPTION
An introduction to J2ME Polish as presented at BarCamp London 3.TRANSCRIPT
Introducing J2ME Polish:Overcoming the Device Fragmentation Barrier
Introduction Motivation
ConceptsPractice
Enough Software
! Enough Software offers a highly popular open source suite for mobile software development– Incorporation: end of 2004 in Bremen, Germany
– Open Source dual licensing model
– Over 300,000 downloads of open source version of J2ME Polish developer tool
– “Pro J2ME Polish” book published by Apress (New York)
– Strong know-how base in Mobile Applications, J2ME and UI Development
Business Units
! Mobile Development Tools– J2ME Polish: Java development framework
– Charon: Textmessaging application framework
! Mobile Services– Support, Consulting & Training
– Application Development
– Porting of Applications
– Designing Applications
– J2ME Polish Extensions
! Mobile Solutions– OTA Server & Hosting
J2ME Polish
! Enough Software provides mobile developers with software development tools that...– overcome mobile device fragmentation,
– “polish” the look and feel of mobile applications
! J2ME Polish contains a flexible and powerful library for adapting and designing mobile applications
! Multiple Platforms– J2ME / JavaME
– BlackBerry
– DoJa
– WIPI
– .NET Compact Framework (forthcoming)
Customers
! More than 100 commercial licensees from around the world including:
Introduction Motivation
ConceptsPractice
Motivation: Fragmentation
! Mobile device fragmentation limits mobile application adoption and thereby Carriers’ ARPU growth– Different hardware
– Different API Support
– Different interpretations of standards
– Device bugs
Motivation: Design
! The mobile Java standard only allows limited design of application, unless every detail is drawn by the application itself – Standard implementations do not allow to
influence the CI and look and feel of the application
– Adapting designs to different environments or customers difficult
– Design changes require changing the source code of applications
public void paint( Graphics g ) {Font font = Font.getDefaultFont();g.setFont( font );g.setColor( 0x000000 );g.drawText( “Hello World”, x, y, Graphics.LEFT | Graphics.TOP );g.setStroke( Graphics.SOLID );g.setColor( 0xFF0000 );g.drawLine( x, y + font.getHeight(), x + 200, y + font.getFontHeight() );
}
Introduction Motivation
ConceptsPractice
Structure of J2ME Polish
! Device Database! Build Framework! Client API
! Further Components:– Tools
– IDE Integration
Device Database
Build Framework Client API
Device Database
! Device definitions asthe foundation
! Detailed informationabout J2ME capabledevices - APIs, certificates, screen resolutions, known issues, ...
! Used by the Build Framework and the Client API! XML based: easy extensible! From J2ME Polish 2.1 onwards:
– interactive Web 2.0 database
– using SysInfo for collecting device information
Device Database
Build Framework Client API
Build Framework
! Automates necessary stepsfor creating J2ME apps
! Ant based! Can be integrated into
any IDE! Extensible
For every
target device: Preprocess
Compile
Package
Finalize
Emulate
Device Database
Build Framework Client API
Client API
! GUI– compatible to MIDP 2.0
– Design outside of theapplication using CSS
– Non standard screens and items
– Uses Device Database and Build Framework for adapting and customizing
! IO– Serialization & Storage
! Utilities– ArrayList, HashMap, IntHashMap, Locale, RgbImage,
ImageUtil, TextUtil, ...
! Text to Speech converter
Device Database
Build Framework Client API
Introduction Motivation
ConceptsPractice
Designing Applications
! Design is specified outside of the application’s source code
! Customize the application just by modifying CSS! Example: title { font-color: green; }
Standard Components
! ChoiceGroup– Specify the look and feel of each
ChoiceGroup
! Gauge– Depending on the mode many different
visualizations are possible for Gauges
! TextFields– Input modes: Native vs. Direct
– Support for predictive text input
GUI Effects
! Text Effects– bitmap (TTF), gradient, outline, rotate, shadow, ...
! Screen Transition Effects– cube, minimize, maximize, move, ...
! Further Animations– animated backgrounds, animation of elements
Advanced GUI Elements
! Screens– TabbedForm, FramedForm, SplashCanvas, TabbedList,
FilteredList
! Items– ListItem, TreeItem, SpriteItem, BrowserItem, ChartItem,
PictureBrowser, FilteredChoiceGroup, ContainerViews like Carousels, Tables and animated arrangements. Unlimited flexibility by using ItemViews which are responsible for rendering and animation of items.
! Menu– Subcommands
Advanced GUI Elements
GUI: BrowserItem (1/2)
! The BrowserItem combines the advantages of server side contents and client side interactive applications
! Server side contents can be changed dynamically and administered centrally
! Client side application allow to interact with the user as well as device services such a bluetooth, the storage system or messaging
! The J2ME Polish BrowserItem allows you embed and interact with HTML or XML based contents in any application
GUI: BrowserItem (2/2)
! Extend the BrowserItem by implementing your own protocol handlers (like navigate://search=Bondstreet&city=London), tag handlers or micro format parsers
! Integrate complex components such as charts within the shown data
Serialization Framework
! The serialization framework of J2ME Polish allows you to easily store and read data
! Just implement Serializable:import de.enough.polish.io.Serializable;public class Contact implements Serializable { String name; Vector friends; Image picture;}
! For full control you can implement Externalizable as well - just like on JavaSE and JavaEE.
! Use de.enough.polish.io.Serializer for reading and writing serializable classes to input/output streams, e.g. streams from HTTP connections
RmsStorage
! Use RmsStorage for saving and loading data from the Recordstore Management System:import de.enough.polish.io.RmsStorage;public class AddressBook { Vector contacts; RmsStorage storage; public AddressBook { this.storage = new RmsStorage(); try { this.contacts = (Vector) this.storage.read( "AddressBook" ); } catch (IOException e) { // no contacts stored this.contacts = new Vector(); } } public void save throws IOException { this.storage.save( this.contacts, "AddressBook" ); }}
Java 5 Syntax Support
! Java 5 SE introduced syntax improvements to ensure the type safety of applications during the compilation phase:– Generics: Vector<Integer> numbers;
– Enum constants: enum Weekday { MONDAY, TUESDAY, WEDNESDAY, ... };
– Autoboxing: numbers.add( 12 );
! J2ME Polish allows you to use these improvements for J2ME applications as well, just by adding a postcompiler tag to the build.xml script:<postcompiler name="java5" />
Floating Point Support for CLDC 1.0
! The “floater” extension allows you to use normal floating points operations as well as java.lang.Math functions on CLDC 1.0 devices
! Activate the extension in the build.xml:<postcompiler name="floater" />
Migration
! Migration of existing J2ME projects is easy:– J2ME Polish is compatible to the MIDP 2.0 standard,
therefore no changes are required on the source code level
– Create or adapt a sample build.xml script
– Use #style preprocessing directives for applying individual styles to screens or GUI elements
– Create a polish.css textfile for designing the UI of the application
– Run J2ME Polish
Eclipse Integration
! The J2ME Polish plugin for Eclipse (Mepose) eases the development of mobile applications– select target device from drop down
– debugging
– emulating
– preprocessing syntax highlighting
– preprocessing code completion
– the J2ME Polish build and emulator framework is used for building applications andlaunch of emulators
– Mepose runs like J2ME Polish onany OS: Windows, OS X, Linux
Eclipse Integration
! Target device is selected from drop down
Eclipse Integration
! Syntax highlighting and marking of occurrences allow orientation in complex preprocessing code
Eclipse Integration
! Debug a project just by launching the debugger
Designer
! Available as standalone or embedded into the NetBeans IDE
Roadmap
! J2ME Polish 2.0: Q4/2007– Screen change effects, text
effects, view types
– new UI elements, e.g. ChartItem, BrowserItem, FilteredList
– Serialization Framework
– RMI
– Floater
– Java 5 Syntax
– Predictive Text Input
– Animation Framework
– Eclipse Plugin
Roadmap
! J2ME Polish 2.1: Q1/2008– Interactive Device Database
– NetBeans Plugin
– WYSIWYG Design
! J2ME Polish 2.2: Q2/2008– Convert MIDlets to native .NET Compact Framework
applications
– Support for MIDP 3.0
Contact
Enough SoftwareRobert Virkus
Sögestr. 7028195 Bremen
Germany
Phone +49 - 421 - 8409 938Fax +49 - 421 - 9988 132
Mobile: +49 - 160 - 7788 203
Web http://www.enough.deEmail [email protected]
Adam Cohen-Rose
Lead Developer
Kizoom Ltd
Zetland House
109-123 Clifton Street
London
EC2A 4LD
http://www.kizoom.com
http://adamcohenrose.blogspot.com
Presented at BarCamp London 3 by: