35
Introducing J2ME Polish: Overcoming the Device Fragmentation Barrier

Introducing J2ME Polish

Embed Size (px)

DESCRIPTION

An introduction to J2ME Polish as presented at BarCamp London 3.

Citation preview

Page 1: Introducing J2ME Polish

Introducing J2ME Polish:Overcoming the Device Fragmentation Barrier

Page 2: Introducing J2ME Polish

Introduction Motivation

ConceptsPractice

Page 3: Introducing J2ME Polish

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

Page 4: Introducing J2ME Polish

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

Page 5: Introducing J2ME Polish

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)

Page 6: Introducing J2ME Polish

Customers

! More than 100 commercial licensees from around the world including:

Page 7: Introducing J2ME Polish

Introduction Motivation

ConceptsPractice

Page 8: Introducing J2ME Polish

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

Page 9: Introducing J2ME Polish

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() );

}

Page 10: Introducing J2ME Polish

Introduction Motivation

ConceptsPractice

Page 11: Introducing J2ME Polish

Structure of J2ME Polish

! Device Database! Build Framework! Client API

! Further Components:– Tools

– IDE Integration

Device Database

Build Framework Client API

Page 12: Introducing J2ME Polish

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

Page 13: Introducing J2ME Polish

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

Page 14: Introducing J2ME Polish

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

Page 15: Introducing J2ME Polish

Introduction Motivation

ConceptsPractice

Page 16: Introducing J2ME Polish

Designing Applications

! Design is specified outside of the application’s source code

! Customize the application just by modifying CSS! Example: title { font-color: green; }

Page 17: Introducing J2ME Polish

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

Page 18: Introducing J2ME Polish

GUI Effects

! Text Effects– bitmap (TTF), gradient, outline, rotate, shadow, ...

! Screen Transition Effects– cube, minimize, maximize, move, ...

! Further Animations– animated backgrounds, animation of elements

Page 19: Introducing J2ME Polish

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

Page 20: Introducing J2ME Polish

Advanced GUI Elements

Page 21: Introducing J2ME Polish

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

Page 22: Introducing J2ME Polish

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

Page 23: Introducing J2ME Polish

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

Page 24: Introducing J2ME Polish

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" ); }}

Page 25: Introducing J2ME Polish

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" />

Page 26: Introducing J2ME Polish

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" />

Page 27: Introducing J2ME Polish

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

Page 28: Introducing 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

Page 29: Introducing J2ME Polish

Eclipse Integration

! Target device is selected from drop down

Page 30: Introducing J2ME Polish

Eclipse Integration

! Syntax highlighting and marking of occurrences allow orientation in complex preprocessing code

Page 31: Introducing J2ME Polish

Eclipse Integration

! Debug a project just by launching the debugger

Page 32: Introducing J2ME Polish

Designer

! Available as standalone or embedded into the NetBeans IDE

Page 33: Introducing J2ME Polish

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

Page 34: Introducing J2ME Polish

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

Page 35: Introducing J2ME Polish

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: