Introducing J2ME Polish

12,590 views

Published on

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

Published in: Business, Technology
0 Comments
5 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
12,590
On SlideShare
0
From Embeds
0
Number of Embeds
117
Actions
Shares
0
Downloads
311
Comments
0
Likes
5
Embeds 0
No embeds

No notes for slide

Introducing J2ME Polish

  1. 1. Introducing J2ME Polish: Overcoming the Device Fragmentation Barrier
  2. 2. Introduction Motivation Practice Concepts
  3. 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
  4. 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
  5. 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)
  6. 6. Customers ! More than 100 commercial licensees from around the world including:
  7. 7. Introduction Motivation Practice Concepts
  8. 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
  9. 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() ); }
  10. 10. Introduction Motivation Practice Concepts
  11. 11. Structure of J2ME Polish ! Device Database ! Build Framework Build Framework Client API ! Client API Device Database ! Further Components: – Tools – IDE Integration
  12. 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
  13. 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
  14. 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
  15. 15. Introduction Motivation Practice Concepts
  16. 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; }
  17. 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
  18. 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
  19. 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
  20. 20. Advanced GUI Elements
  21. 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
  22. 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
  23. 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
  24. 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( quot;AddressBookquot; ); } catch (IOException e) { // no contacts stored this.contacts = new Vector(); } } public void save throws IOException { this.storage.save( this.contacts, quot;AddressBookquot; ); } }
  25. 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=quot;java5quot; />
  26. 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=quot;floaterquot; />
  27. 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
  28. 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
  29. 29. Eclipse Integration ! Target device is selected from drop down
  30. 30. Eclipse Integration ! Syntax highlighting and marking of occurrences allow orientation in complex preprocessing code
  31. 31. Eclipse Integration ! Debug a project just by launching the debugger
  32. 32. Designer ! Available as standalone or embedded into the NetBeans IDE
  33. 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
  34. 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
  35. 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

×