Java Swing vs. Android App

11,409 views
11,038 views

Published on

This presents my experience with building Swing apps vs. Android apps in the past 10+ years. It is not intended to go into deep details of technology but rather highlighting the main aspects and differences between the 2 platforms

This presentation was given at The Ceara Java User Group meeting in Fortaleza, Ceara, Brasil December 9, 2011 by Johnny Hujol.

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

No Downloads
Views
Total views
11,409
On SlideShare
0
From Embeds
0
Number of Embeds
7
Actions
Shares
0
Downloads
68
Comments
0
Likes
4
Embeds 0
No embeds

No notes for slide

Java Swing vs. Android App

  1. 1. Disclaimer-  The views expressed in this presentation are my personal views.-  Any opinions, comments, solutions or other commentary expressed by me are based on my experience.-  This presentation is presented for educational purposes and is therefore supplementary and not to be considered exhaustive. Swing vs. Android - Johnny Hujol - CEJUG Fortaleza, Brasil - 2011/12/09
  2. 2. BuildingSwing vs. Android Applications By Johnny Hujol
  3. 3. Who am I-  A French leaving in Boston.-  Software Engineer for a US pharmaceuticals company.-  10+ years in Biotech/Pharmaceuticals sector developing scientific applications.-  10+ years in Java.-  1+ year in Android.-  Co-published book on Java called‘Java for Bioinformatics and Biomedical Applications’.•  10+ years kitesurfing •  4th time in Taiba, Ceara, Brasil. Swing vs. Android - Johnny Hujol - CEJUG Fortaleza, Brasil - 2011/12/09
  4. 4. Agenda-  History-  Swing Application-  Android Application-  Development Environment-  Comparison-  Building Applications-  Conclusion Swing vs. Android - Johnny Hujol - CEJUG Fortaleza, Brasil - 2011/12/09
  5. 5. History-  1995: Oak (Java) was released for Sun machines.-  1996: Java 1 initial release.-  1998: Swing part of JDK 1.2.-  September 23, 2008: Android 1.0.-  July 28, 2011: JSE 7.0.-  October 2011: Android 4.0 (Ice Cream Sandwich). Swing vs. Android - Johnny Hujol - CEJUG Fortaleza, Brasil - 2011/12/09
  6. 6. Swing App Swing vs. Android - Johnny Hujol - CEJUG Fortaleza, Brasil - 2011/12/09
  7. 7. Swing App - Anatomy-  JFrame, JButton, custom Java classes, events, exceptions, etc.-  Implement algorithms, business rules, etc.-  Connect to some storage to deal with data i.e. database, web service, file system, memory, etc.-  Might have multiple background tasks running.-  Offline or online app.-  Goal: help people to do things better. Swing vs. Android - Johnny Hujol - CEJUG Fortaleza, Brasil - 2011/12/09
  8. 8. Swing App - Life Cycle-  Main() method as starting point of program. Swing vs. Android - Johnny Hujol - CEJUG Fortaleza, Brasil - 2011/12/09
  9. 9. Swing App – Multi-Threaded-  A Swing application is multi-threaded by nature.-  Single thread model for Event Dispatching Thread (EDT).-  Importance of (EDT) for UI responsiveness.-  EventQueue.invokeLater(Runnable).-  SwingWorker doInBackground() and done(). Swing vs. Android - Johnny Hujol - CEJUG Fortaleza, Brasil - 2011/12/09
  10. 10. Swing App – Multi-Threaded Swing vs. Android - Johnny Hujol - CEJUG Fortaleza, Brasil - 2011/12/09
  11. 11. Swing App – Multi-Threaded-  Do heavy work in the background.-  More fine and advanced control with java.util.concurrent package.-  Executors to do background works to keep UI responsive.-  FutureTask (java.util.concurrent). Swing vs. Android - Johnny Hujol - CEJUG Fortaleza, Brasil - 2011/12/09
  12. 12. Swing App – Multi-Threaded Swing vs. Android - Johnny Hujol - CEJUG Fortaleza, Brasil - 2011/12/09
  13. 13. Swing App - More-  Exception handling policy based on requirements.-  Custom exceptions.-  Asynchronous messaging mechanism with java.awt.event i.e. event classes and listener classes.-  System events i.e. MouseEvent, KeyboardEvent, screen, etc.-  Semantic events i.e. ActionEvent, TextEvent, etc.-  Events are always fired in the EDT. Swing vs. Android - Johnny Hujol - CEJUG Fortaleza, Brasil - 2011/12/09
  14. 14. Swing App – And More-  Internationalization.-  2D/3D/OpenGL, Media APIs, etc…-  Debugging tools.-  Logging, Tests, Profiling APIs.-  Compilers, JVMs.-  Encryption.-  More… Swing vs. Android - Johnny Hujol - CEJUG Fortaleza, Brasil - 2011/12/09
  15. 15. Android Application Swing vs. Android - Johnny Hujol - CEJUG Fortaleza, Brasil - 2011/12/09
  16. 16. Android App - Anatomy-  Activity, TextView, custom Java classes, exceptions, etc.-  Implement algorithms, business rules, etc.-  Connect to some storage to deal with data i.e. database, web service, file system, SD card, etc.-  Might have multiple background tasks running.-  Offline or online app.-  Goal: help people to do things better. Swing vs. Android - Johnny Hujol - CEJUG Fortaleza, Brasil - 2011/12/09
  17. 17. Android App - Components-  Activity = UI.-  Service = background tasks.-  Content Provider: sharing data uniformly from multiple apps.-  Broadcast receiver = big announcer across components or apps i.e. a broader event mechanism. Swing vs. Android - Johnny Hujol - CEJUG Fortaleza, Brasil - 2011/12/09
  18. 18. Android App – Life Cycle-  Components Life Cycle well defined.-  Activity (UI) starts with onCreate() in UI thread.-  Visible lifetime between onStart() and onStop().-  Foreground lifetime between onResume() and onPause(). Swing vs. Android - Johnny Hujol - CEJUG Fortaleza, Brasil - 2011/12/09
  19. 19. Android App – Activity Swing vs. Android - Johnny Hujol - CEJUG Fortaleza, Brasil - 2011/12/09
  20. 20. Android App - Multi-Threaded-  Single thread model for UI toolkit.-  The Andoid UI toolkit is not thread-safe.-  Do not block the UI thread.-  Do not access the Android UI toolkit outside the UI thread. Swing vs. Android - Johnny Hujol - CEJUG Fortaleza, Brasil - 2011/12/09
  21. 21. Android App - Multi-Threaded-  Activity.runOnUiThread(Runnable)-  View.post(Runnable)-  View.postDelayed(Runnable, long) Swing vs. Android - Johnny Hujol - CEJUG Fortaleza, Brasil - 2011/12/09
  22. 22. Android App - Multi-Threaded-  AsyncTask similar to SwingWorker.-  Package java.util.concurrent for Executors, etc. Swing vs. Android - Johnny Hujol - CEJUG Fortaleza, Brasil - 2011/12/09
  23. 23. Android App - More-  Exception handling policy based on requirements.-  Custom exceptions.-  Separation of layout from UI logic with XML.-  Notifications with Toast, Status Bar and Progress.-  Listeners.-  Sensor APIs for GPS, camera, telephony, accelerometer, etc. Swing vs. Android - Johnny Hujol - CEJUG Fortaleza, Brasil - 2011/12/09
  24. 24. Android App – And More-  Internalionalization.-  2D/3D, OpenGL, etc.-  Database, SD card, FS access.-  Configuration for multiple device specs.-  Encryption.-  And More… Swing vs. Android - Johnny Hujol - CEJUG Fortaleza, Brasil - 2011/12/09
  25. 25. Questions so far? Swing vs. Android - Johnny Hujol - CEJUG Fortaleza, Brasil - 2011/12/09
  26. 26. Development Environment-  I use IntelliJ IDEA for Swing and Android apps.-  Ant.-  Android command line to build initial Android project.-  Adb for interacting with USB plugged devices.-  XML layout profiler with Hierarchy Viewer.-  Android project libraries to share between apps. Swing vs. Android - Johnny Hujol - CEJUG Fortaleza, Brasil - 2011/12/09
  27. 27. Development Environment-  LogCat.-  Junit for testing, logging APIs.-  Monkey and monkeyrunner.-  Emulator.-  SensorSimulator.-  AndroidScreencast. Swing vs. Android - Johnny Hujol - CEJUG Fortaleza, Brasil - 2011/12/09
  28. 28. Development Environment Swing vs. Android - Johnny Hujol - CEJUG Fortaleza, Brasil - 2011/12/09
  29. 29. Comparison – Life Cycle-  Life Cycle for Android is well defined.-  All Android activities changes through states the same way.-  Save/restore state in the foreground lifetime onResume() and onPause().-  Important to release resources and kill background tasks when going on onPause().-  Save state in onPause() needs to execute quickly. Swing vs. Android - Johnny Hujol - CEJUG Fortaleza, Brasil - 2011/12/09
  30. 30. Comparison – Life Cycle-  Cannot ‘quit’ an Android application.-  Allow fast switching to Android apps.-  Users use many apps back and forth.-  Similar to opening lots of apps on computer when working. Swing vs. Android - Johnny Hujol - CEJUG Fortaleza, Brasil - 2011/12/09
  31. 31. Comparison – Multi-Threaded-  Transfer knowledge of Swing multi-threaded apps.-  Less frequent cases on Android apps than Swing apps.-  Simpler Android apps = less synchronization.-  New methods runOnUiThread, AsyncTack (SwingWorker).-  Cancelling policy more important on Android apps.-  Does user allow background services. Swing vs. Android - Johnny Hujol - CEJUG Fortaleza, Brasil - 2011/12/09
  32. 32. Comparison – Storage-  API for local Database (DB) like SQLLite.-  API for Web Services like Amazon S3.-  File System (FS) on device or remote.-  Harder to test web services on the emulator. Swing vs. Android - Johnny Hujol - CEJUG Fortaleza, Brasil - 2011/12/09
  33. 33. Comparison – Storage-  Internal storage with Context class.-  External storage i.e. SD card. Swing vs. Android - Johnny Hujol - CEJUG Fortaleza, Brasil - 2011/12/09
  34. 34. Comparison – Device Resources-  Battery is the most precious resource on Android devices.-  Do not write intensive computation in the background.-  Screen size very small with 2 mode landscape & portrait.-  Memory because no ‘quit’ manage the listeners i.e. like GPS location manager, etc. Swing vs. Android - Johnny Hujol - CEJUG Fortaleza, Brasil - 2011/12/09
  35. 35. Comparison – Device Resources-  Code impact on memory.-  Extends listener instead of creating inner class.-  Use primitive int instead of Enum class = less memory. Swing vs. Android - Johnny Hujol - CEJUG Fortaleza, Brasil - 2011/12/09
  36. 36. Comparison – Network-  Checking availability. Swing vs. Android - Johnny Hujol - CEJUG Fortaleza, Brasil - 2011/12/09
  37. 37. Comparison – Development Cycle-  Emulator might not be consistent to real device.-  Test directly on device more than emulator.-  Faster release because less features.-  Simpler application architecture on Android.-  Send logging info to network.-  Once deployed on production harder to debug. Swing vs. Android - Johnny Hujol - CEJUG Fortaleza, Brasil - 2011/12/09
  38. 38. Comparison – Sensors-  Native support on Android devices.-  Available on Swing through integration.-  Can have different specs depending on device.-  Getting easier with WiFi-Direct, Bluetooth, etc.-  Location based application more natural on Android. Swing vs. Android - Johnny Hujol - CEJUG Fortaleza, Brasil - 2011/12/09
  39. 39. Questions so far? Swing vs. Android - Johnny Hujol - CEJUG Fortaleza, Brasil - 2011/12/09
  40. 40. Building Apps-  Mobile nature of Android apps.-  New mobile paradigms to manipulate UI.-  Swing will adopt mobile paradigms.-  Android devices, computers and the cloud.-  Component model of Android apps.-  Similarity between 2 platforms. Swing vs. Android - Johnny Hujol - CEJUG Fortaleza, Brasil - 2011/12/09
  41. 41. Building Apps - Architecture-  Importance of separation of UI, business logic and storage in design of an app.-  Can reuse non-UI logic from Swing i.e. Data Access Object, etc.-  Easier to build an Android app from a multi-tier Swing apps, no need to test business logic again.-  Allow offline vs. online mode.-  Develop and reuse libraries. Swing vs. Android - Johnny Hujol - CEJUG Fortaleza, Brasil - 2011/12/09
  42. 42. Building Apps - Software Engineering-  Get your users involved.-  Deploy often.-  Continuously testing the system.-  Design Patterns.-  Design for reusability and maintenance.-  Network back-end for intensive computation tasks.-  Use primitive int in Android apps. Swing vs. Android - Johnny Hujol - CEJUG Fortaleza, Brasil - 2011/12/09
  43. 43. Building Apps - Assurance Quality-  Mock, Unit Test, MonkeyTest (Android), etc.-  Code static analysis.-  Use code reviews.-  Performance on memory with profiler.-  Multi-threaded apps easier on Android.-  Use logging API. Swing vs. Android - Johnny Hujol - CEJUG Fortaleza, Brasil - 2011/12/09
  44. 44. Conclusion-  Easy transition from Swing to/from Android.-  Faster to develop Android app.-  Well defined Life Cycle of Android app.-  Keep a design of apps simple.-  Allow offline and online mode for apps.-  Design apps more in a mobile way.-  Cloud based applications. Swing vs. Android - Johnny Hujol - CEJUG Fortaleza, Brasil - 2011/12/09
  45. 45. Questions & Answers Swing vs. Android - Johnny Hujol - CEJUG Fortaleza, Brasil - 2011/12/09
  46. 46. References•  Android –  http://developer.android.com•  Screencast –  http://code.google.com/p/androidscreencast/•  SensorSimulator –  http://code.google.com/p/openintents/wiki/SensorSimulator•  Android Way on Multitasking -  http://developer.android.com/resources/articles/multitasking-android-way.html Swing vs. Android - Johnny Hujol - CEJUG Fortaleza, Brasil - 2011/12/09

×