JavaME + Android in action
Java Platforms for Mobility
             CEJUG CCT
Coffee with Tapioca, December 2008
         ...
Objectivity
Introduce the Java development platforms for
                 mobile devices,
        JavaME and Android, perf...
Agenda
•   Overview on Mobile Platforms
•   Java ME in action
•   Android in action
•   Challenge
After this course you will…
• identify mobile platforms characteristics
• understand how to implement a JavaME
  applicati...
Applications…
•   Location Based Systems
•   m-commerce, collaboration, marketing
•   Mobile Social Networks
•   Military
...
Users: mobile vs. desktop




• India: Many more mobile than desktop Web users (4 to 1),
  The Economic Times, Oct 2007
Motivation
• Evolution, popularization
  – Device resources
  – Connectivity
• Business applications for mobile devices
  ...
Mobile Ecosystem




Source: SDN - java.sun.com/javame
Mobile, Portable Devices
Mobile Networks


3G, 4G...
Development Platforms
Mobile Computing
  “Computing that deals with connection
      exploration on mobile devices”
Coulouris, Dellimore, Kindbe...
quot;small is the betterquot;
• Challenges
  – Devices
  – Networks
  – Limitations and heterogeneity
• Dependencies
  – P...
Mobile Development
• Software Development Kit (SDK)
  – Emulator, Documentation, Tools, Services, etc.
• Integrated Develo...
Are you ready?


       Set your
     environments!
http://www.cejug.org/display/cejug/Ambiente+para+os+mini-
            ...
Welcome to the…

  JavaME
Development
Introduction
• Java Platform, Micro Edition
    – Java Community Process (JCP) based
    – Java Specification Request (JSR...
Architecture




   • JVM, KVM
Source: SDN - java.sun.com/javame
Core APIs
• Configuration
  – CLDC, CDC, BD-J
• Profile
  – MIDP, IM, PP, PBP, FP
• Umbrella
  – Fragmentation: Computatio...
Development Infrastructure
• Many environments: handset dependency
• For this lab:
  – SDK: Sun WTK 2.5.2, JME SDK 3.0
  –...
Hello JavaME World!
• build, obfuscate, preverify, run, debug, and
  deploy
• Create a project
• Project structure
• Creat...
MIDlet Lifecycle
• Application Management Software (AMS)
  – Java Application Manager (JAM)




• notifyDestroyed()
• noti...
MIDlet Lifecycle
              Coding
import javax.microedition.midlet.MIDlet;
public class HelloWorld extends MIDlet {
  ...
Application Packaging
• Profile dependent
• MIDlet Suite
  – Java ARchive (.JAR)
  – Java Application Descriptor (.JAD)
• ...
Application Configuration
•   Java Application Descriptor (.JAD), Manifest
•   MIDlets
•   Permissions
•   Properties:
   ...
Code Optimization
•   Free objects
•   String Vs. StringBuffer
•   Arrays Vs. Collection
•   Moderate use
    –   Synchron...
GUI




      Source: IBM - ibm.com
GUI
                     Coding
public class HelloWorld extends MIDlet {
  private Display display;
  private Form myForm;...
Keyboard Handling
• Components
  – javax.microedition.lcdui.CommandListener
  – javax.microedition.lcdui.Command
• Registr...
Keyboard Handling
            Coding
public class HelloWorld extends MIDlet {
  Displayable d = new TextBox(“Title”, “Body...
Persistent Storage
• Record Management System (RMS)
    – javax.microedition.rms.*
•   RecordStore
•   RecordEnumeration
•...
Persistent Storage
            Coding
...
RecordStore rs = null;
String value = quot;Java ME in actionquot;;
...
try {
  r...
Connectivity
• Generic Connection Framework (GCF)
   – javax.microedition.io.*
• Remote (Infrastructured)
   –   HTTP, HTT...
Connectivity
                Coding
HttpConnection httpConn = null;
InputStream = null;
try {
  httpConn = (HttpConnection...
References
• Mobile and Embedded Guide to JavaOne 2008
   – http://wiki.java.net/bin/view/Mobileandembedded/JavaO
     ne2...
Welcome to the…

  Android
Development
Open Handset Alliance
                          Manufactures




   Semiconductors                                   Carri...
Introduction
• Software stack
  – Operating System
     • Linux Kernel (v2.6)
  – Middleware
     • Services
  – Applicati...
Characteristics
• Applications…
  – without borders
  – are created equal
  – can run in parallel
  – can easily embed the...
Architecture
Basic Components
• Activity
  – UI component (Form like) typically corresponding
    to one screen
• Intent Receiver
  – S...
Packages
android.util       android.telephony
android.os         android.hardware
android.graphics
android.text       andr...
Development Infrastructure
• Recommended environment
• For this lab:
  – SDK: AndroidSDK 1.0
     • QEMU-based (system ima...
Hello Android World!
• Create a project
• Create an Activity
  – android.app.Activity
• Project structure
• LogCat
• Deplo...
Application Configuration
• AndroidManifest.xml
• Application
   – Activity, Intent Filter
• Permissions
<?xml version=quo...
Application Anatomy
• Activity
   – Can reuse functionality from other components by
     making a request in the form of ...
Application Configuration

...
<application android:icon=quot;@drawable/iconquot;
        android:label=quot;@string/app_n...
• Activities are
  stacked

• Only one is
  active

• Only one is
  open
Application
                  Coding
public class HelloActivity extends Activity {
    /** Called when the activity is fir...
SDK Tools
•   Emulator
•   Dalvik Debug Monitoring System (ddms)
•   Android Debug Bridge (adb)
•   Android Asset Packagin...
Application Packaging/Deployment
• APK file
  – .DEX
• Log into a Linux server via a shell
• Installation
  – adb install ...
GUI
• Define in: code or XML
• res/layout
• Views
  – Text, Edit, List
  – Image, Web, Map
• Layouts
  – Frame, Linear, Re...
res/layout/main.xml - Views
<LinearLayout
xmlns:android=quot;http://schemas.android.com/apk/res/androidquot;
    android:o...
res/layout/main.xml - Layouts
<Button android:id=quot;@+id/callButtonquot;
    android:layout_width=quot;fill_parentquot;
...
Event Handling
                Coding
…
final EditText phoneNumber = (EditText)
       findViewById(R.id.phoneNumber);
But...
Emulator: No support for…
•   Placing or receiving actual phone calls
•   USB connections
•   Camera/video capture (input)...
References
• Android Documentation
  – http://code.google.com/android
• Android A Programmers Guide (Jerome
  DiMarzio, Mc...
Would you like to be challenged?



  Practice matters!
Challenge Requirements
• Based on our lab practice
• Create an application on JavaME or Android
  platform following the r...
Questions & Answers
Thank you!
        Vando Batista
   vandofb at gmail.com
msn: vfbatista at hotmail.com
       skype: vfbatista
"JavaME + Android in action" CCT-CEJUG Dezembro 2008
Upcoming SlideShare
Loading in...5
×

"JavaME + Android in action" CCT-CEJUG Dezembro 2008

4,556

Published on

Mini-cursos de JavaME e Android no evento do CEJUG Café com Tapioca, em Dezembro de 2008.
1. Introdução: overview do desenvolvimento em Java para dispositivos portáteis/móveis
2. Java ME in action: tutorial hands-on de desenvolvimento (mini-curso)
3. Android in action: tutorial hands-on de desenvolvimento (mini-curso)
Autor: Vando Batista

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
4,556
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
368
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

"JavaME + Android in action" CCT-CEJUG Dezembro 2008

  1. 1. JavaME + Android in action Java Platforms for Mobility CEJUG CCT Coffee with Tapioca, December 2008 Vando Batista Some Rights Reserved
  2. 2. Objectivity Introduce the Java development platforms for mobile devices, JavaME and Android, performing implementations activities for each one, in a lab-style practice, with some APIs Target audience: Java developers interested on Mobile Platforms
  3. 3. Agenda • Overview on Mobile Platforms • Java ME in action • Android in action • Challenge
  4. 4. After this course you will… • identify mobile platforms characteristics • understand how to implement a JavaME application • understand how to implement a Android application • have implemented, at least, one application for each platform • maybe… win a book: Free Software and Digital Inclusion (in Portuguese)
  5. 5. Applications… • Location Based Systems • m-commerce, collaboration, marketing • Mobile Social Networks • Military • Search and safety On the move apps Improve user experience
  6. 6. Users: mobile vs. desktop • India: Many more mobile than desktop Web users (4 to 1), The Economic Times, Oct 2007
  7. 7. Motivation • Evolution, popularization – Device resources – Connectivity • Business applications for mobile devices – Growing 102% per year, until 2012 - Mobile Business Applications and Services, ABI Research • New services, new opportunities
  8. 8. Mobile Ecosystem Source: SDN - java.sun.com/javame
  9. 9. Mobile, Portable Devices
  10. 10. Mobile Networks 3G, 4G...
  11. 11. Development Platforms
  12. 12. Mobile Computing “Computing that deals with connection exploration on mobile devices” Coulouris, Dellimore, Kindberg. Distributed Systems (4th edition) Mobility transparency allows the movement of resources and clients within a system without affecting the operation of users or programs. Two flavours: migration and relocation
  13. 13. quot;small is the betterquot; • Challenges – Devices – Networks – Limitations and heterogeneity • Dependencies – Power: battery autonomy – Resource: connection availability “Remember that there is no code faster than no code” Taligent‘s Guide to Designing Programs
  14. 14. Mobile Development • Software Development Kit (SDK) – Emulator, Documentation, Tools, Services, etc. • Integrated Development Environment (IDE) • IDE Plugins
  15. 15. Are you ready? Set your environments! http://www.cejug.org/display/cejug/Ambiente+para+os+mini- cursos+de+JavaME+e+Android
  16. 16. Welcome to the… JavaME Development
  17. 17. Introduction • Java Platform, Micro Edition – Java Community Process (JCP) based – Java Specification Request (JSR) • Reference Implementation (RI) • Test Compatibility Kit (TCK) • Proprietary APIs • Native Applications • Since 2000 • 80% handsets: 1.2bi phones, 1200 models, 180 carriers
  18. 18. Architecture • JVM, KVM Source: SDN - java.sun.com/javame
  19. 19. Core APIs • Configuration – CLDC, CDC, BD-J • Profile – MIDP, IM, PP, PBP, FP • Umbrella – Fragmentation: Computational, Physical, Functional – JTWI, MSA (Full, Subset)
  20. 20. Development Infrastructure • Many environments: handset dependency • For this lab: – SDK: Sun WTK 2.5.2, JME SDK 3.0 – IDE: Eclipse Ganymede (3.4) – Plugin: Mobile Tools for Java 0.9 • Unified Emulator Interface (UEI)
  21. 21. Hello JavaME World! • build, obfuscate, preverify, run, debug, and deploy • Create a project • Project structure • Create a MIDlet – javax.microedition.midlet.MIDlet • Over the Air (OTA) / installation • On Device Deployment/Debug • MIDlet.this.platformRequest(“tel:*”)
  22. 22. MIDlet Lifecycle • Application Management Software (AMS) – Java Application Manager (JAM) • notifyDestroyed() • notifyPaused() • resumeRequest()
  23. 23. MIDlet Lifecycle Coding import javax.microedition.midlet.MIDlet; public class HelloWorld extends MIDlet { public HelloWorld() { System.out.println(“MIDlet constructorquot;); } protected void destroyApp(boolean arg0) { System.out.println(quot; MIDlet destroyApp()quot;); } protected void pauseApp() { System.out.println(quot; MIDlet pauseApp()quot;); } protected void startApp() { System.out.println(quot; MIDlet startApp()quot;); } }
  24. 24. Application Packaging • Profile dependent • MIDlet Suite – Java ARchive (.JAR) – Java Application Descriptor (.JAD) • Package generation
  25. 25. Application Configuration • Java Application Descriptor (.JAD), Manifest • MIDlets • Permissions • Properties: – System System.getProperty(“javax.microedition.*”) – Application MIDlet.this.getAppProperty(quot;propertyNamequot;)
  26. 26. Code Optimization • Free objects • String Vs. StringBuffer • Arrays Vs. Collection • Moderate use – Synchronized – Instance variables – Parameter number – Resources initiation – Interfaces, internal classes • JAR obfuscation, compression
  27. 27. GUI Source: IBM - ibm.com
  28. 28. GUI Coding public class HelloWorld extends MIDlet { private Display display; private Form myForm; // initialization on MIDlet constructor public startApp() { display = Display.getDisplay(this); // display.getCurrent(); display.setCurrent(myForm); } ... }
  29. 29. Keyboard Handling • Components – javax.microedition.lcdui.CommandListener – javax.microedition.lcdui.Command • Registration – setCommandListener(CommandListener l) • Notification – commandAction(Command c, Displayable d) {} • Potential deadlock: operations such as IO and networking should run on a separate thread
  30. 30. Keyboard Handling Coding public class HelloWorld extends MIDlet { Displayable d = new TextBox(“Title”, “Body”, 20,TextField.ANY); Command c = new Command(“Exit”, Command.EXIT, 0); d.addCommand(c); d.setCommandListener(new CommandListener() { public void commandAction(Command c, Displayable s) { doSomeAction(); } } ); }
  31. 31. Persistent Storage • Record Management System (RMS) – javax.microedition.rms.* • RecordStore • RecordEnumeration • RecordComparator • RecordFilter
  32. 32. Persistent Storage Coding ... RecordStore rs = null; String value = quot;Java ME in actionquot;; ... try { rs = RecordStore.openRecordStore(“RecName”, true); byte[] recData = value.getBytes(); rs.addRecord(recData, 0, recData.length); String data = new String(rs.getRecord(1)); } catch (Exception e) { ... }
  33. 33. Connectivity • Generic Connection Framework (GCF) – javax.microedition.io.* • Remote (Infrastructured) – HTTP, HTTPS – TCP, UDP – Wireless Messaging (JSR120, 205) – Push Registry (MIDP) – SIP (JSR180) • Local (Ad hoc) Source: SDN - java.sun.com/javame – JABWT (JSR 82) – Ad Hoc Networking API (JSR 259)
  34. 34. Connectivity Coding HttpConnection httpConn = null; InputStream = null; try { httpConn = (HttpConnection) Connector.open(quot;http://www.cejug.orgquot;); httpConn.setRequestMethod(HttpConnection.GET); httpConn.setRequestProperty(quot;User-Agentquot;, quot;Profile/MIDP-2.0 Configuration/CLDC 1.1quot;); is = httpConn.openInputStream(); int ch = -1; while((ch = is.read()) != -1){ ... } …
  35. 35. References • Mobile and Embedded Guide to JavaOne 2008 – http://wiki.java.net/bin/view/Mobileandembedded/JavaO ne2008 • A Survey of Java ME Today – http://developers.sun.com/mobility/getstart/articles/surv ey/ • Java ME Device Table – http://developers.sun.com/mobility/device/ • JEDI course (DFJUG) – http://jedi.wv.com.br
  36. 36. Welcome to the… Android Development
  37. 37. Open Handset Alliance Manufactures Semiconductors Carriers Content Software
  38. 38. Introduction • Software stack – Operating System • Linux Kernel (v2.6) – Middleware • Services – Applications HTC Dream (G1) • Java • Dalvik: custom virtual machine for embedded • Since 2008
  39. 39. Characteristics • Applications… – without borders – are created equal – can run in parallel – can easily embed the web • Open source – http://source.android.com • Apache 2.0 and GLP v2 license
  40. 40. Architecture
  41. 41. Basic Components • Activity – UI component (Form like) typically corresponding to one screen • Intent Receiver – Set and respond to an external event: notifications or status changes. Can wake up your app • Services – Task without UI that runs in the background • Content Provider – Allow applications to share data
  42. 42. Packages android.util android.telephony android.os android.hardware android.graphics android.text android.net.wifi android.database android.location android.content android.media android.view android.opengl android.widget android.app
  43. 43. Development Infrastructure • Recommended environment • For this lab: – SDK: AndroidSDK 1.0 • QEMU-based (system image) – IDE: Eclipse Ganymede (3.4) – Plugin: Android Development Tool 0.8, WST • Add to environment variable PATH – tools directory • A lot of XML for application, activity, intent, layout, view, variable
  44. 44. Hello Android World! • Create a project • Create an Activity – android.app.Activity • Project structure • LogCat • Deployment/Debug
  45. 45. Application Configuration • AndroidManifest.xml • Application – Activity, Intent Filter • Permissions <?xml version=quot;1.0quot; encoding=quot;utf-8quot;?> <manifest xmlns:android=quot;http://schemas.android.com/apk/res/androidquot; package=quot;org.cejug.androidquot; android:versionCode=quot;1quot; android:versionName=quot;1.0.0quot; android:screenOrientation=quot;landscapequot;> ...
  46. 46. Application Anatomy • Activity – Can reuse functionality from other components by making a request in the form of an Intent – Can be replaced at any time by a new Activity with an equivalent IntentFilter • Intent – Request to do something: move from screen to screen. Activity.startActivity(myIntent) • Intent Filter – Description of Intent types
  47. 47. Application Configuration ... <application android:icon=quot;@drawable/iconquot; android:label=quot;@string/app_namequot;> <activity android:name=quot;.HelloActivityquot; android:label=quot;@string/app_namequot;> <intent-filter> <action android:name=quot;android.intent.action.MAINquot; /> <category android:name=quot;android.intent.category.LAUNCHERquot; /> </intent-filter> </activity> <activity android:name=quot;.HelloListActivityquot; android:label=quot;ListActivityquot;> </activity> </application> </manifest>
  48. 48. • Activities are stacked • Only one is active • Only one is open
  49. 49. Application Coding public class HelloActivity extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); TextView tv = new TextView(this); tv.setText(quot;Hello, Androidquot;); setContentView(tv); ... } } • onStart(), onResume(), onPause(), onStop(), onRestart(), onDestroy()
  50. 50. SDK Tools • Emulator • Dalvik Debug Monitoring System (ddms) • Android Debug Bridge (adb) • Android Asset Packaging Tool (aapt) • Android Interface Description Language (aidl) • sqlite3 • Traceview • mksdcard • dx, activitycreator, and others
  51. 51. Application Packaging/Deployment • APK file – .DEX • Log into a Linux server via a shell • Installation – adb install Application.apk – Uninstall • adb shell (remove file from /data/app/)
  52. 52. GUI • Define in: code or XML • res/layout • Views – Text, Edit, List – Image, Web, Map • Layouts – Frame, Linear, Relative, Table, Absolute
  53. 53. res/layout/main.xml - Views <LinearLayout xmlns:android=quot;http://schemas.android.com/apk/res/androidquot; android:orientation=quot;horizontalquot; android:layout_width=quot;fill_parentquot; android:layout_height=quot;wrap_contentquot; android:background=quot;@drawable/iconquot;>
  54. 54. res/layout/main.xml - Layouts <Button android:id=quot;@+id/callButtonquot; android:layout_width=quot;fill_parentquot; android:layout_height=quot;wrap_contentquot; android:text=quot;Show Dialerquot; /> <EditText android:id=quot;@+id/phoneNumberquot; android:layout_width=quot;fill_parentquot; android:layout_height=quot;wrap_contentquot; />
  55. 55. Event Handling Coding … final EditText phoneNumber = (EditText) findViewById(R.id.phoneNumber); Button callButton = (Button) findViewById(R.id.callButton); callButton.setOnClickListener(new Button.OnClickListener() { public void onClick(View v) { Intent CallIntent = new Intent(Intent.ACTION_CALL, Uri .parse(quot;tel:quot; + “+5585quot; + phoneNumber.getText())); CallIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(CallIntent); } });
  56. 56. Emulator: No support for… • Placing or receiving actual phone calls • USB connections • Camera/video capture (input) • Audio input • Determining connected state • Determining battery charge level / AC state • Bluetooth
  57. 57. References • Android Documentation – http://code.google.com/android • Android A Programmers Guide (Jerome DiMarzio, Mc Graw Hill) • Professional Android Application Development (Reto Meier, Willey Publishing) • Many sites, forums, videos, screencasts, presentations…
  58. 58. Would you like to be challenged? Practice matters!
  59. 59. Challenge Requirements • Based on our lab practice • Create an application on JavaME or Android platform following the requirement – Receive a user text input through a wizard
  60. 60. Questions & Answers
  61. 61. Thank you! Vando Batista vandofb at gmail.com msn: vfbatista at hotmail.com skype: vfbatista
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×