SlideShare a Scribd company logo
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
Building
Swing vs. Android
  Applications
                    By Johnny Hujol
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
Agenda

-  History

-  Swing Application

-  Android Application

-  Development Environment

-  Comparison

-  Building Applications

-  Conclusion

                           Swing vs. Android - Johnny Hujol - CEJUG Fortaleza, Brasil - 2011/12/09
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
Swing App




            Swing vs. Android - Johnny Hujol - CEJUG Fortaleza, Brasil - 2011/12/09
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
Swing App - Life Cycle

-  Main() method as starting point of program.




                           Swing vs. Android - Johnny Hujol - CEJUG Fortaleza, Brasil - 2011/12/09
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
Swing App – Multi-Threaded




                Swing vs. Android - Johnny Hujol - CEJUG Fortaleza, Brasil - 2011/12/09
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
Swing App – Multi-Threaded




                Swing vs. Android - Johnny Hujol - CEJUG Fortaleza, Brasil - 2011/12/09
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
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
Android Application




                 Swing vs. Android - Johnny Hujol - CEJUG Fortaleza, Brasil - 2011/12/09
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
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
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
Android App – Activity




                 Swing vs. Android - Johnny Hujol - CEJUG Fortaleza, Brasil - 2011/12/09
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
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
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
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
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
Questions so far?




      Swing vs. Android - Johnny Hujol - CEJUG Fortaleza, Brasil - 2011/12/09
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
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
Development Environment




               Swing vs. Android - Johnny Hujol - CEJUG Fortaleza, Brasil - 2011/12/09
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
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
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
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
Comparison – Storage

-  Internal storage with Context class.



-  External storage i.e. SD card.




                            Swing vs. Android - Johnny Hujol - CEJUG Fortaleza, Brasil - 2011/12/09
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
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
Comparison – Network

-  Checking availability.




                            Swing vs. Android - Johnny Hujol - CEJUG Fortaleza, Brasil - 2011/12/09
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
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
Questions so far?




      Swing vs. Android - Johnny Hujol - CEJUG Fortaleza, Brasil - 2011/12/09
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
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
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
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
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
Questions & Answers




       Swing vs. Android - Johnny Hujol - CEJUG Fortaleza, Brasil - 2011/12/09
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

More Related Content

PPTX
Java garbage collector JVM Garbage collection by Jeetendra Mandal
jeetendra mandal
 
PDF
Installed base
Vikram Reddy
 
PDF
Extensibility
mohamed refaei
 
PPTX
TypeScript Overview
Aniruddha Chakrabarti
 
PPTX
Automation - web testing with selenium
Tzirla Rozental
 
PDF
java swing tutorial for beginners(java programming tutorials)
Daroko blog(www.professionalbloggertricks.com)
 
PPT
Introdu.awt
myrajendra
 
PPT
java swing programming
Ankit Desai
 
Java garbage collector JVM Garbage collection by Jeetendra Mandal
jeetendra mandal
 
Installed base
Vikram Reddy
 
Extensibility
mohamed refaei
 
TypeScript Overview
Aniruddha Chakrabarti
 
Automation - web testing with selenium
Tzirla Rozental
 
java swing tutorial for beginners(java programming tutorials)
Daroko blog(www.professionalbloggertricks.com)
 
Introdu.awt
myrajendra
 
java swing programming
Ankit Desai
 

Similar to Java Swing vs. Android App (20)

KEY
Android java fx-jme@jug-lugano
Fabrizio Giudici
 
PPT
Java Swing.ppt THIA GIVE YHR BASIC KNOWLEDGER ABOUT JAVA
nikitaparmar61
 
PPT
Joon Choftttbtvyyyyyyyyyy Java Swing.ppt
havalneha2121
 
PPT
Joon Cho Java Swing.ppt
Eyezgaming
 
PPT
Java Swing ppt beginner learning study.ppt
usha852
 
PPT
Swing is not dead
Piotr Dziewonski
 
PDF
Common Client Rich Client Platforms
Geertjan Wielenga
 
PPSX
Android Introduction
Sharmistha Mandal
 
PPT
Part 1 robot in the making
Michael Angelo Rivera
 
PDF
Android
aktash12
 
PDF
Android Development: The 20,000-Foot View
CommonsWare
 
PDF
Google Android Naver 1212
Yoojoo Jang
 
PDF
Retour JavaOne 2009
Alexis Moussine-Pouchkine
 
PPTX
Android village @nullcon 2012
hakersinfo
 
PDF
Understand Java for Android the Hard Way
GlobalLogic Ukraine
 
PDF
Java version history
Harsh Patel
 
PDF
Mobile app
Attaporn Ninsuwan
 
PDF
How Android is different from other systems – An exploration of the design de...
IndicThreads
 
PDF
Android Development...The 20,000-Foot View
CommonsWare
 
PDF
Java se-7-evolves-toulouse-jug-2001-09-14
Baptiste Mathus
 
Android java fx-jme@jug-lugano
Fabrizio Giudici
 
Java Swing.ppt THIA GIVE YHR BASIC KNOWLEDGER ABOUT JAVA
nikitaparmar61
 
Joon Choftttbtvyyyyyyyyyy Java Swing.ppt
havalneha2121
 
Joon Cho Java Swing.ppt
Eyezgaming
 
Java Swing ppt beginner learning study.ppt
usha852
 
Swing is not dead
Piotr Dziewonski
 
Common Client Rich Client Platforms
Geertjan Wielenga
 
Android Introduction
Sharmistha Mandal
 
Part 1 robot in the making
Michael Angelo Rivera
 
Android
aktash12
 
Android Development: The 20,000-Foot View
CommonsWare
 
Google Android Naver 1212
Yoojoo Jang
 
Retour JavaOne 2009
Alexis Moussine-Pouchkine
 
Android village @nullcon 2012
hakersinfo
 
Understand Java for Android the Hard Way
GlobalLogic Ukraine
 
Java version history
Harsh Patel
 
Mobile app
Attaporn Ninsuwan
 
How Android is different from other systems – An exploration of the design de...
IndicThreads
 
Android Development...The 20,000-Foot View
CommonsWare
 
Java se-7-evolves-toulouse-jug-2001-09-14
Baptiste Mathus
 
Ad

Recently uploaded (20)

PDF
Google I/O Extended 2025 Baku - all ppts
HusseinMalikMammadli
 
PDF
Make GenAI investments go further with the Dell AI Factory
Principled Technologies
 
PPTX
The Future of AI & Machine Learning.pptx
pritsen4700
 
PDF
Presentation about Hardware and Software in Computer
snehamodhawadiya
 
PDF
Research-Fundamentals-and-Topic-Development.pdf
ayesha butalia
 
PPTX
What-is-the-World-Wide-Web -- Introduction
tonifi9488
 
PDF
Using Anchore and DefectDojo to Stand Up Your DevSecOps Function
Anchore
 
PDF
Data_Analytics_vs_Data_Science_vs_BI_by_CA_Suvidha_Chaplot.pdf
CA Suvidha Chaplot
 
PDF
Economic Impact of Data Centres to the Malaysian Economy
flintglobalapac
 
PDF
Unlocking the Future- AI Agents Meet Oracle Database 23ai - AIOUG Yatra 2025.pdf
Sandesh Rao
 
PDF
Accelerating Oracle Database 23ai Troubleshooting with Oracle AHF Fleet Insig...
Sandesh Rao
 
PDF
Structs to JSON: How Go Powers REST APIs
Emily Achieng
 
PDF
Responsible AI and AI Ethics - By Sylvester Ebhonu
Sylvester Ebhonu
 
PDF
Brief History of Internet - Early Days of Internet
sutharharshit158
 
PDF
Get More from Fiori Automation - What’s New, What Works, and What’s Next.pdf
Precisely
 
PPTX
cloud computing vai.pptx for the project
vaibhavdobariyal79
 
PPTX
OA presentation.pptx OA presentation.pptx
pateldhruv002338
 
PDF
Trying to figure out MCP by actually building an app from scratch with open s...
Julien SIMON
 
PDF
MASTERDECK GRAPHSUMMIT SYDNEY (Public).pdf
Neo4j
 
PDF
AI Unleashed - Shaping the Future -Starting Today - AIOUG Yatra 2025 - For Co...
Sandesh Rao
 
Google I/O Extended 2025 Baku - all ppts
HusseinMalikMammadli
 
Make GenAI investments go further with the Dell AI Factory
Principled Technologies
 
The Future of AI & Machine Learning.pptx
pritsen4700
 
Presentation about Hardware and Software in Computer
snehamodhawadiya
 
Research-Fundamentals-and-Topic-Development.pdf
ayesha butalia
 
What-is-the-World-Wide-Web -- Introduction
tonifi9488
 
Using Anchore and DefectDojo to Stand Up Your DevSecOps Function
Anchore
 
Data_Analytics_vs_Data_Science_vs_BI_by_CA_Suvidha_Chaplot.pdf
CA Suvidha Chaplot
 
Economic Impact of Data Centres to the Malaysian Economy
flintglobalapac
 
Unlocking the Future- AI Agents Meet Oracle Database 23ai - AIOUG Yatra 2025.pdf
Sandesh Rao
 
Accelerating Oracle Database 23ai Troubleshooting with Oracle AHF Fleet Insig...
Sandesh Rao
 
Structs to JSON: How Go Powers REST APIs
Emily Achieng
 
Responsible AI and AI Ethics - By Sylvester Ebhonu
Sylvester Ebhonu
 
Brief History of Internet - Early Days of Internet
sutharharshit158
 
Get More from Fiori Automation - What’s New, What Works, and What’s Next.pdf
Precisely
 
cloud computing vai.pptx for the project
vaibhavdobariyal79
 
OA presentation.pptx OA presentation.pptx
pateldhruv002338
 
Trying to figure out MCP by actually building an app from scratch with open s...
Julien SIMON
 
MASTERDECK GRAPHSUMMIT SYDNEY (Public).pdf
Neo4j
 
AI Unleashed - Shaping the Future -Starting Today - AIOUG Yatra 2025 - For Co...
Sandesh Rao
 
Ad

Java Swing vs. Android App

  • 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. Building Swing vs. Android Applications By Johnny Hujol
  • 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. Agenda -  History -  Swing Application -  Android Application -  Development Environment -  Comparison -  Building Applications -  Conclusion Swing vs. Android - Johnny Hujol - CEJUG Fortaleza, Brasil - 2011/12/09
  • 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. Swing App Swing vs. Android - Johnny Hujol - CEJUG Fortaleza, Brasil - 2011/12/09
  • 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. Swing App - Life Cycle -  Main() method as starting point of program. Swing vs. Android - Johnny Hujol - CEJUG Fortaleza, Brasil - 2011/12/09
  • 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. Swing App – Multi-Threaded Swing vs. Android - Johnny Hujol - CEJUG Fortaleza, Brasil - 2011/12/09
  • 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. Swing App – Multi-Threaded Swing vs. Android - Johnny Hujol - CEJUG Fortaleza, Brasil - 2011/12/09
  • 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. 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. Android Application Swing vs. Android - Johnny Hujol - CEJUG Fortaleza, Brasil - 2011/12/09
  • 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. 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. 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. Android App – Activity Swing vs. Android - Johnny Hujol - CEJUG Fortaleza, Brasil - 2011/12/09
  • 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. 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. 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. 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. 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. Questions so far? Swing vs. Android - Johnny Hujol - CEJUG Fortaleza, Brasil - 2011/12/09
  • 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. 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. Development Environment Swing vs. Android - Johnny Hujol - CEJUG Fortaleza, Brasil - 2011/12/09
  • 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. 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. 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. 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. 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. 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. 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. Comparison – Network -  Checking availability. Swing vs. Android - Johnny Hujol - CEJUG Fortaleza, Brasil - 2011/12/09
  • 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. 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. Questions so far? Swing vs. Android - Johnny Hujol - CEJUG Fortaleza, Brasil - 2011/12/09
  • 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. 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. 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. 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. 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. Questions & Answers Swing vs. Android - Johnny Hujol - CEJUG Fortaleza, Brasil - 2011/12/09
  • 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