Google Android @ AlphaCSP's JavaEdge

6,726 views

Published on

Google Android, An hybrid software stack for mobile devices -- part Linux, part Java -- boots Linux and provides key components natively, yet for all intents and purposes aims for Java application development. While maintaining commitment to Java, Google has broken the mobile mold by delivering a radically different virtual machine and a brand new application framework. Google is pushing for a strong mobile presence, prompting the industry to adapt. You are invited to have a peek inside Android, see what makes it tick, and examine software migration and development options for the platform.

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

No Downloads
Views
Total views
6,726
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
883
Comments
0
Likes
11
Embeds 0
No embeds

No notes for slide

Google Android @ AlphaCSP's JavaEdge

  1. 1. id ero old itd le M l Tn bi tle ner A o Ti ie le e Mub W av d og g Th S Na o in G ak re B 8 200 th 8 er 1 b ce m De
  2. 2. Hello Android 2
  3. 3. Target Audience • Mobile software developers • People shopping for a phone in 2009 3
  4. 4. Agenda • Hello Android • Architecture Overview, Features and Components • Android Software Development • Live Demo 4
  5. 5. Hello Android • Android is a platform for mobile computing • Android is Linux based • But development is in Java 5
  6. 6. Hello Android • Why did Google make Android? • IPhone does not support Java • JavaME’s CLDC+MIDlets are getting old • Leaves lots of mobile developers in search of a platform • Profit – ads, market • Clean break from J2ME 6
  7. 7. Hello Android::Timeline As published by Google 7
  8. 8. Hello Android::Timeline As published by Google
  9. 9. Hello Android::Timeline As published by Google • We’ll have a look at some of the winners later on
  10. 10. Hello Android::Timeline As published by Google • Only free applications for now • Eventually, Google will take a 30% cut
  11. 11. Hello Android::Timeline As published by Google
  12. 12. Hello Android::Timeline As published by Google
  13. 13. Hello Android::Timeline As published by Google
  14. 14. Hello Android::Devices • HTC G1, Lenovo OPhone (expected), Kogan Agora 14
  15. 15. Hello Android::ADC • The Android Developer Challenge • 10,000,000$ in prizes 15
  16. 16. Hello Android::ADC • ADC I concluded: • 5M$ in prizes • Over 1,700 submissions • Announcement regarding ADC II is expected soon 16
  17. 17. Hello Android::ADC Winners & Market • Wikitude (Philipp Breuce) • Wikipedia overlaid on camera view 17
  18. 18. Hello Android::ADC Winners & Market • BreadCrumbz (Amos Yoffe) • Navigate using maps and pictures (like Myst) 18
  19. 19. Hello Android::ADC Winners & Market • Amazon MP3 for Android • Preinstalled on HTC G1 phones 19
  20. 20. Hello Android::ADC Winners & Market • Compare Everywhere (Jeffrey Sharkey) • Capture barcodes, search for better deals nearby 20
  21. 21. Agenda • Hello Android • Architecture Overview, Features and Components • Android Software Development • Live Demo 21
  22. 22. Architecture Overview Applications •Implement and leverage framework concepts •Use framework components and services Android Application Framework Package Content Views Activities Services Management Providers Native Libraries Android Runtime Apache Harmony Dalvik VM Graphics Media WebKit SQLite Libraries Framework Browser Database Linux Kernel Inter Process Power Device Comms. Security Management Drivers 22
  23. 23. Architecture Overview • Let’s examine some of these boxes, beginning with Linux: Linux Kernel
  24. 24. Architecture Overview • From Linux Android gains: • A stable common base for Dalvik applications • Fine grained power management • Unique user per bundle – sandboxing • Much more… 24
  25. 25. • Native libraries provide functionality Native Libraries Linux Kernel
  26. 26. Architecture Overview • WebKit • Same browser engine used in IPhone, Google Chrome, Safari • Strong performer • Memory efficient • Good standards support 26
  27. 27. Architecture Overview • Location Services & Mapping • Google Maps • Street view • GPS • Trigger proximity alerts
  28. 28. Architecture Overview • Graphics • SGL – 2D scalable graphics • OpenGL ES • Surface Manager composes surfaces together 28
  29. 29. Architecture Overview • Media Framework • Player and codecs • SQLite • Lightweight RDBMS also on IPhone • ... and Telephony too! 29
  30. 30. Architecture Overview:: Android Runtime Moving on to the “Java” runtime environment: Native Libraries Android Runtime Linux Kernel 30
  31. 31. Architecture Overview:: Dalvik Virtual Machine • Java has a stack based VM • Dalvik is a register based VM • Better interpreter performance • No JIT • Bottom line: • Lower throughput • Better startup & responsiveness 31
  32. 32. Architecture Overview:: Dalvik Virtual Machine • You still get to develop in Java • What, no JVM!? • Excellent learning curve 32
  33. 33. Architecture Overview::Zygote • Quick Dalvik process startup is essential for good responsiveness • During boot, Android creates a fully bootstrapped Dalvik process • Sends it to sleep • Forks it on demand • Forks are copy-on-write • Near instantaneous startup! 33
  34. 34. Architecture Overview Applications •Implement and leverage framework concepts •Use framework components and services Android Application Framework Package Content Views Activities Services Management Providers Native Libraries Android Runtime Apache Harmony Dalvik VM Graphics Media WebKit SQLite Libraries Framework Browser Database Linux Kernel Inter Process Power Device Comms. Security Management Drivers 34
  35. 35. Agenda • Hello Android • Architecture Overview, Features and Components • Android Software Development • Live Demo 35
  36. 36. Android Application Framework • Building Blocks • Application Model • UI Perspective 36
  37. 37. Building Blocks • Four building blocks • Activities and Intents • Broadcast Receivers • Services • Content Providers 37
  38. 38. Activities and Intents Activities Android documentation states: • “An activity is a single, focused thing that the user can do.” 38
  39. 39. Activities and Intents • This how an activity will look like: 39
  40. 40. Activities and Intents • Well, actually: “An activity is usually a single screen in your application.” 40
  41. 41. Activities and Intents • Activities communicate with each other using Intents new Intent( ? ! Intent.ACTION_VIEW, Intent.ACTION_DIAL, Intent.ACTION_PICK, new Uri(quot;content://contactsquot;)) Uri(“geo:38.8995,- Uri(“tel:555-1234quot;)) 77.0364quot;)) • The Intent is resolved to another Activity, by matching it against an Intent Filter. 41
  42. 42. Activities and Intents • Intents convey • Data This is how Intent Filters match Intents that are valid • Action for the Activity • • and Categories 42
  43. 43. Activities and Intents • Activities are managed on a stack • Once you go back they pop! 43
  44. 44. Activities and Intents • Activities have a life cycle New Stopped Paused Running... Activity Activity Activity Processes with non- running Activities may be killed to free resources 44
  45. 45. Broadcast Receivers • Listens for Intents • Incoming call • Network availability changes • Alarms • Application doesn't have to be running once a Receiver is registered • Does not display UI • May use notifications 45
  46. 46. Services • Services perform long running actions • i.e. Play music, factor primary numbers • Services are defined via AIDL • Yet another “Interface Definition Language” • Service lifecycle: manual or automatic • Can be run either in-process or in another process 46
  47. 47. Content Providers • Android likes to expose content in a RESTful manner • All content items have a unique URI • Goes really well with Activity history • Content Providers are used for CRUD operations over arbitrary content repositories 47
  48. 48. Content Providers • The interface has a strong relational feel • Hard to adapt to POJO backends like DB4O and Perst • Despite looking relational, the interface encourages static joins • Data returned should have a uniform shape 48
  49. 49. Application Model • Android Package (.apk) • Compiled code & resources • Manifest • Must be signed (like jar) • Task • “perceived” application • May span activities across several packages and processes 49
  50. 50. UI Perspective • Views • From very simple: • EditText, CheckBox, Button, Radio • To more specialized: • DatePicker, AutoComplete • ViewGroups (layout) • Relative, Table, Linear, … • Web, Video, Map, Gallery... 50
  51. 51. UI Perspective • Sometimes the border between Views and Activities isn't clear • MapView • MapActivity • Choose MapActivity for a mashup • Choose MapView for your own Activity 51
  52. 52. Android Software Development • Let's have a look at a “hello world” sample provided by the SDK: • Activity source file • Layout file • Android Manifest 52
  53. 53. Android Software Development package com.example.android.helloactivity; //... /** * A minimal quot;Hello, World!quot; application. */ public class HelloActivity extends Activity { /** * Called with the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // Set the layout for this activity. You can find it // in res/layout/hello_activity.xml setContentView(R.layout.hello_activity); } } 53
  54. 54. Android Software Development <EditText xmlns:android=quot;http://schemas.android.com/apk/res/androidquot; android:id=quot;@+id/textquot; android:layout_width=quot;fill_parentquot; android:layout_height=quot;fill_parentquot; android:textSize=quot;18spquot; android:autoText=quot;truequot; android:capitalize=quot;sentencesquot; android:text=quot;hello, world!quot; /> 54
  55. 55. Android Software Development <manifest xmlns:android=quot;http://schemas.android.com/apk/res/androidquot; package=quot;com.example.android.helloactivityquot;> <application android:label=quot;Hello, Activity!quot;> <activity android:name=quot;HelloActivityquot;> <intent-filter> <action android:name=quot;android.intent.action.MAINquot;/> <category android:name=quot;android.intent.category.LAUNCHERquot;/> </intent-filter> </activity> </application> </manifest> 55
  56. 56. Android Software Development • After build and deployment to the emulator: 56
  57. 57. UI Perspective • Android UI lends itself to a clear flow between simple screens 57
  58. 58. UI Perspective • Rich clients, on the other hand… … Don’t translate that well. 58
  59. 59. Porting Scenarios • Opera • Opera Mini uses • Jetty has been ported • local web applications • Apache Felix has been ported • OSGi bundles • Alef Arendsen’s session covers OSGi in Spring 59
  60. 60. Tool Support • Android SDK and Eclipse plugin: http://code.google.com/android/ • IntelliJ IDEA plugin is available here: http://code.google.com/p/idea-android/ • SDK can create IDEA project files • NetBeans plugin available here: http://kenai.com/projects/nbandroid/ • DroidDraw is an Android UI builder: http://www.droiddraw.org/ 60
  61. 61. References • Android homepage: http://code.google.com/android/index.html • Open Handset Alliance: http://www.openhandsetalliance.com/ • Android Market: http://www.android.com/market/ • Android documentation: http://code.google.com/android/documentation.html • Android open source project: http://source.android.com/ 61
  62. 62. Demo Apps for Android: http://code.google.com/p/apps-for-android 62

×