• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Introducing J2ME Polish

Introducing J2ME Polish



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

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



Total Views
Views on SlideShare
Embed Views



8 Embeds 108

http://adamcohenrose.blogspot.com 41
http://www.slideshare.net 40
http://greensspirit.blogspot.com 17
http://blog.cohen-rose.org 6 1
http://webcache.googleusercontent.com 1
http://www.techgig.com 1
http://www.linkedin.com 1



Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
Post Comment
Edit your comment

    Introducing J2ME Polish Introducing J2ME Polish Presentation Transcript

    • Introducing J2ME Polish: Overcoming the Device Fragmentation Barrier
    • Introduction Motivation Practice Concepts
    • 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 Practice Concepts
    • 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 Practice Concepts
    • Structure of J2ME Polish ! Device Database ! Build Framework Build Framework Client API ! Client API Device Database ! Further Components: – Tools – IDE Integration
    • Device Database ! Device definitions as the foundation Build Framework Client API ! Detailed information about J2ME capable Device Database devices - 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
    • Build Framework ! Automates necessary steps for creating J2ME apps Build Framework Client API ! Ant based Device Database ! Can be integrated into any IDE For every target device: Preprocess ! Extensible Compile Package Finalize Emulate
    • Client API ! GUI – compatible to MIDP 2.0 Build Framework Client API – Design outside of the Device Database application 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
    • Introduction Motivation Practice Concepts
    • 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( quot;AddressBookquot; ); } catch (IOException e) { // no contacts stored this.contacts = new Vector(); } } public void save throws IOException { this.storage.save( this.contacts, quot;AddressBookquot; ); } }
    • 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=quot;java5quot; />
    • 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=quot;floaterquot; />
    • 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 and launch of emulators – Mepose runs like J2ME Polish on any 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 Software Presented at BarCamp London 3 by: Robert Virkus Sögestr. 70 28195 Bremen Adam Cohen-Rose Lead Developer Germany Kizoom Ltd Zetland House Phone +49 - 421 - 8409 938 109-123 Clifton Street Fax +49 - 421 - 9988 132 London EC2A 4LD Mobile: +49 - 160 - 7788 203 http://www.kizoom.com Web http://www.enough.de http://adamcohenrose.blogspot.com Email info@enough.de