Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Developing for Nokia Asha

Attila Csipa
September 14, 2013

Developing for Nokia Asha

An introduction to the Nokia Asha platform, it's developer offering, tooling overview a bird's eye view of the UX development options, and finally advices for application development and deployment on resource constrained devices

Attila Csipa

September 14, 2013
Tweet

More Decks by Attila Csipa

Other Decks in Technology

Transcript

  1. Contents What is Nokia Asha Developer Offering Java ME apps

    Web apps Nokia Asha UX basics IDE/Tooling Nokia IDE for Java Emulator Performance optimization
  2. Series 40 (which is not Symbian nor S60) First device

    in 1999, the Nokia 7110 (but don’t worry, Linux is actually 8 years older) A Coca Cola company delivery truck in Knoxville, 1909.
  3. A few years later… - 1.5 billion devices by January

    2012 - 650 million active (plenty of even touch devices) - Freemium and ads DO work North London Derby between Arsenal and Tottenham Hotspur at Highbury, 1934
  4. Nokia Asha Developer Offering Nokia Asha SDK 1.0 (Java ME)

    Nokia Asha web app tools 3.0.0 Xpress Web App Builder 1.0
  5. One 3rd PARTY app running at a time! Roger Bannister

    becomes the first human to run a mile in under 4 minutes. 1954
  6. Nokia Asha SDK 1.0 Oracle® based Java ME implementation New

    Nokia Public APIs New emulator Bundled libraries instead of plugins: Here Maps for Java ME Nokia Notifications API LightWeight UI Toolkit (LWUIT) Tantalum On-Device Debugging
  7. Nokia Asha Software Platform 1.0 the Java ME story •

    Java ME MIDP 2.1, CLDC 1.1 • Optional JSRs • Nokia APIs • Max JAR file size: 5 Mb • Max Java Heap: 3 Mb • Screen Size: 240 x 320 • Series 40 Binary Compatibility
  8. Yes, this is a resource constrained environment Which also means

    that it rewards GOOD code instead of SLOPPY one
  9. JAD Editor NOKIA IDE FOR JAVA © 2012 Nokia Asha

    2013 technical briefing v1.2 November 14, 2012 Attila Csipa Device SDK Manager Integrated SDK + Toolchain App Templates App Templates JAD Editor
  10. Emulator: What can we do with it? - Speeds up

    development cycle - Use for screenshots! - Customize input - Keyboard/touch (pinch) - Sensors (accelerometers, network, location) - Multimedia (webcam) - Content is at - C:\Nokia\Devices\Nokia_Asha_SDK_1_0\bin\Storage\10000 - Needs emulator restart if filesystem updated directly - The number will increase (10002, etc) if multiple simultaneous emulators run
  11. On Device Debugging – for the nastiest bugs From Harvard

    Mark II electromechanical computer's log, featuring a dead moth: the first bug, 66 years ago
  12. The joy of the first successful run Annie Edison Taylor

    The first person to survive going over Niagara Falls in a barrel, in 1901
  13. 2 © Nokia 2013 LCDUI and LWUIT UI components in

    Nokia Asha.pptx v.1 2013-05-28 Jan Krebber THE VISUALIZATION CHANGED, BUT THE APIS REMAIN LARGELY COMPATIBLE.
  14. API offering: extending the platform CLDC 1.1 (JSR-139) MIDP 2.1

    (JSR-118) File Connection and PIM API (JSR-75) Bluetooth and OBEX API (JSR-82) Wireless Messaging API 1.0 (JSR-120) Wireless Messaging API 2.0 (JSR-205) Mobile Media API (JSR-135) Web Services API (JSR-172) SATSA-CRYPTO API (JSR-177) Location API (JSR-179) Mobile 3D Graphics API v1.0 (JSR-184) Content Handler API (JSR-211) Scalable Vector Graphics API (JSR-226) Advanced Multimedia Supplements (JSR-234) Mobile Sensor API (JSR-256) com.nokia.mid.medi a com.nokia.mid.ui com.nokia.mid.ui frameanimator com.nokia.mid.ui gestures com.nokia.mid.ui locale com.nokia.mid.ui orientation com.nokia.mid.ui categorybar Mobile Internationalization (JSR-238) File Select API Image Scaling API Network State API Phone Info API Contact API Nokia Notification API (NNA) Nokia In-App Payment
  15. New Nokia Asha Java APIs Contact File select Network state

    Phone settings Moving from Service APIs to a PUBLIC PLATFORM OFFERING
  16. What if your app is not running/awake? Before alarm clocks

    were affordable, 'knocker-ups' were used to wake people early in the morning. UK, around 1900
  17. Nokia in-app payment Device range Reach Security Simplicity Sign up

    to the invitational beta: http://developer.nokia.com/Distribute/In-app_payment/
  18. Broadest reach • Operator billing live with - 158 operators

    - in 59 countries Live Operators ▪ Full Country coverage ▪ Partial Country coverage (status in April 2013)
  19. 3 © Nokia 2013 LCDUI and LWUIT UI components in

    Nokia Asha.pptx v.1 2013-05-28 Jan Krebber THE VISUALIZATION CHANGED, BUT THE APIS REMAIN COMPATIBLE.
  20. The key is a native look and feel 3 ©

    2013 Nokia DevelopingForTheNewAshaPlatform.pptx v. 0.2
  21. LCDUI High-level components Nokia UI API Asha look & feel

    No customizability (except CustomItem)
  22. LCDUI is based on few view types 3 © Nokia

    2013 LCDUI and LWUIT UI components in Nokia Asha.pptx v.1 2013-05-28 Jan Krebber Displayable Screen Canvas With chrome Full screen Alert List Form TextBox Choice Group Date Field Text Field Gauge String Item Image Item Custom Item Spacer Implicit choice Exclusive choice Multiple choice
  23. LWUIT for Nokia Asha Software Platform 1.0 • New port

    of LWUIT, targeting specifically new Asha platform • Based on the LWUIT for Series 40 v1.0 • Adds Nokia Asha Software Platform 1.0 Theme • Adds 8 new components • Changes and adaptations of existing components to new Asha platform • Improved performance especially in themes memory usage. • 24 Examples in SDK • Double-check you’re including the right JAR!
  24. Nokia Asha web apps - Tools Xpress-Browser powered Requires a

    data connection Web apps != HTML5 (!!!) Nokia Asha web app tools 3.0 Backwards compatible with Series 40 web apps Simulator support for Nokia Asha 1.0 devices USB deployment of web apps on Nokia Asha 1.0 devices
  25. Remote Device Access • Free for Nokia Developer users •

    Deploy & Test apps www.developer.nokia.com/Devices/Remote_device_access/ • Now with the Asha 501(s)!
  26. Why Optimize Most of the development tasks for the typical

    mobile application can be done in many different ways. Different implementation techniques lead to different application performance and essentially different responsiveness of user interface. Responsiveness of UI is one of the important factors for application success.
  27. • 0.1 second is about the limit for having the

    user feel that the system is reacting instantaneously, meaning that no special feedback is necessary except to display the result. • 1.0 second is about the limit for the user's flow of thought to stay uninterrupted, even though the user will notice the delay. Normally, no special feedback is necessary during delays of more than 0.1 but less than 1.0 second, but the user does lose the feeling of operating directly on the data. • 10 seconds is about the limit for keeping the user's attention focused on the dialogue. For longer delays, users will want to perform other tasks while waiting for the computer to finish, so they should be given feedback indicating when the computer expects to be done. Feedback during the delay is especially important if the response time is likely to be highly variable, since users will then not know what to expect. Miller, R. B. (1968) Response time in man-computer conversational transactions. Proc. AFIPS Fall Joint Computer Conference Vol. 33, 267-277
  28. Perception of speed • Responsiveness – what you believe is

    more important than what you actually see • Visual updates to acknowledge input • Draw when you can, not when ready • Speed != throughput
  29. Parallelize! (concurrency) • 1 core != 1 system • Threading

    is needed to unleash maximum potential • You need to do it Right TM • Typical failure to do so: slow, unresponsive Uis • On Ashas, you will want 4-5 threads, depending on use- case
  30. Threading pitfalls - Too many long running threads - Hard

    to debug - Complexity The last four couples standing in a dance marathon. Chicago, c. 1930
  31. File io: make it a habit Write files as you

    go …in a Worker thread… …flush occasionally... …don’t do it byte by byte (do outputStream.write(byte[] buffer) Don’t wait for it to pile up (especially for cases of destroyApp())
  32. That pesky 5mb jar size limit • Obfuscate. Always. •

    Reduce image quality/size • Use large(r) images and clip them (w Sprite class) • Keep text strings in separate files – they compress better • Keep data in RMS • Treat your store JAR as an online installer (runs on it’s own, maybe bundle with first few levels, download rest as needed) • Silver lining: Small JARs mean less failed DLs User gets to interact with your app sooner
  33. Architecture Changes • Carefully consider architecture of your drawing loop

    and user input loops and decouple them whenever possible. • Explore WeakReference introduced in CLDC 1.1 for memory management.
  34. How much memory do we REALLY need? • 1024 items

    • 1KB per item • Minimum memory required: 1MB 8KB!
  35. WeakReference object Caching • Best pattern for using all available

    heap memory, but never running into the dreaded OutOfMemoryError. • CLDC 1.1 WeakReference • When an object is referenced by a WeakReference, and not using traditional Object pointers, this is a signal to the garbage collector that is has permission to collect the object if memory is running low. • You have to maintain own HashTable of Objects • To understand this pattern better look at Tantalum Mobile: • https://github.com/TantalumMobile/
  36. Treat the garbage collector as a friend, not as a

    slave • Pay attention to scoping • Set variables to null manually when they are no longer needed • Be careful with hidden references (inner classes on EDT or workers) • If you are calling System.gc(), you’re doing it wrong
  37. Render Caching • One of the common performance needs is

    to make your application paint, in particular scroll, smoothly and quickly. • You can paint items each into their own Image, keeping that pre-painted Image in a cache, and reusing it as the object moves around the screen. Essentially, WeakReference cache of pre-painted Images. • To understand this pattern better look at Tantalum Mobile: • http://projects.developer.nokia.com/Tantalum
  38. File System (Flash Memory) Caching • Flash memory is slow,

    but faster then Web. • Cache downloaded data from previous session. Improve startup time of app, by loading from disk cache instead of new Web requests. • RMS and File System (JSR-75) same speed, but with RMS no security prompts. • Underwater stones: still remember, Flash memory is slow. • Architect your application to use asynchronous loading /saving of data from / to disk cache.
  39. Performance summary •Work with your interaction designer to find and/or

    make cheat zones −Hide activity not just behind splash screens, but also dialogs, alerts −Predict user activity to appear “instant-ready”
  40. Summary • Huge untapped market, plenty of devices even if

    you count only touch enabled ones • (Surprisingly?) Java ME with Canvas, LCDUI or LWUIT UIs paired with a reasonable amount of APIs allows for rich functionality • Coding for Asha will make you more aware of resources, UX, and thus make you a better developer for all the other platforms, too
  41. Thank you! Questions? Attila Csipa @achipa All images were from

    @HistoricalPics or WikiMedia Commons under CC BY-SA