Slideshow transcript
Slide 1: Introducing J2ME Polish: Overcoming the Device Fragmentation Barrier
Slide 2: Introduction Motivation Practice Concepts
Slide 3: 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
Slide 4: 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
Slide 5: 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)
Slide 6: Customers ! More than 100 commercial licensees from around the world including:
Slide 7: Introduction Motivation Practice Concepts
Slide 8: 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
Slide 9: 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() ); }
Slide 10: Introduction Motivation Practice Concepts
Slide 11: Structure of J2ME Polish ! Device Database ! Build Framework Build Framework Client API ! Client API Device Database ! Further Components: – Tools – IDE Integration
Slide 12: 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
Slide 13: 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
Slide 14: 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
Slide 15: Introduction Motivation Practice Concepts
Slide 16: Designing Applications ! Design is specified outside of the application’s source code ! Customize the application just by modifying CSS ! Example: title { font-color: green; }
Slide 17: 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
Slide 18: GUI Effects ! Text Effects – bitmap (TTF), gradient, outline, rotate, shadow, ... ! Screen Transition Effects – cube, minimize, maximize, move, ... ! Further Animations – animated backgrounds, animation of elements
Slide 19: 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
Slide 20: Advanced GUI Elements
Slide 21: 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
Slide 22: 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
Slide 23: 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
Slide 24: 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" ); } }
Slide 25: 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" />
Slide 26: 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" />
Slide 27: 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
Slide 28: 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
Slide 29: Eclipse Integration ! Target device is selected from drop down
Slide 30: Eclipse Integration ! Syntax highlighting and marking of occurrences allow orientation in complex preprocessing code
Slide 31: Eclipse Integration ! Debug a project just by launching the debugger
Slide 32: Designer ! Available as standalone or embedded into the NetBeans IDE
Slide 33: 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
Slide 34: 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
Slide 35: 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



Add a comment on Slide 1
If you have a SlideShare account, login to comment; else you can comment as a guest- Favorites & Groups
Showing 1-50 of 0 (more)