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

Android for Java developers

Android for Java developers

Lecture about what to expect when delving into Android development from Java programmer perspective.

In Slovenian language at http://www.meetup.com/OpenBlend-Slovenian-Java-User-Group/events/173387042/

Jernej Virag

May 20, 2014
Tweet

More Decks by Jernej Virag

Other Decks in Programming

Transcript

  1. Zakaj smo tu? • Android OS
 • Android aplikacije za

    Javance
 • Pasti mobilnega razvoja
 • Nasveti ! !
  2. Dalvik • Java 6 / 7 … kinda. • Stack

    - based • Drug format bytecode - DEX • Počasen • JIT • HotSpot-a ni • Reflection • Defragmentacije kopice ni
  3. Datotečni sistem* boot cache data data / dev mnt sdcard0

    emulated proc system branje pisanje posebno Nameščene aplikacije Aplikacijski podatki “Zunanji” prostor
 
 (različno od naprave do naprave) Android * Datotečni sistem NI predpisan in se lahko popolnoma razlikuje na napravah
  4. ART

  5. Michael Sinz “Programming is like sex. 
 One mistake and

    you have to support it for the rest of your life.”
  6. Android Java • Java SE 6 … kinda. • Podprtih

    par malenkosti z Jave 7
 Diamond operator, multi-catch, strings in switch, try with resources (4.4+)
  7. Manjkajoči paketi • java.awt • org.w3c.dom.* • javax.imageio • javax.print

    • javax.swing ! • java.applet • java.beans • java.lang.management • java.rmi • javax.accessibility • javax.activity • javax.management • javax.naming • javax.rmi • javax.security.auth.kerberos • javax.security.auth.spi • javax.security.sasl • javax.sql.rowset • javax.transaction • javax.xmlorg.ietf.* • org.omg.*
  8. Dodatni paketi • Komponente aplikacij • Komunikacija z operacijskim sistemom

    (dogodki, storitve, cron, …) • Delo s slikami, JSONom, HTTP povezave • GUI vmesnik • OpenGL ES 1.0 / 2.0 / 3.0 • RenderScript, kamera, lokacija, …
  9. Aplikacije • main() ne obstaja • Sestavljene iz komponent (razredov)

    Activity, Service, Receiver, Provider • Vse teče v enem samem procesu in ima skupno glavno nit • “Ikona” aplikacije je samo zastavica na Activityu
 Lahko jih je več, lahko tudi nobena
  10. Uporabniški vmesnik • Ni Swinga, AWTja, SWTja in ostalega •

    Design vmesnika opisan v XML • “panel” filozofija, podobno kot Swing, Qt ali GTK • XML se prevede in se zgenerirajo ekvivalentni Java razredi pri izvajanju • Postavitev se izračuna pri vsakem prikazu
  11. Peskovnik • Dostop do datotek ni prost • Dostop do

    strojne opreme in podatkov zahteva privilegije • Privilegije se zahteva ob namestitvi in se jih kasneje ne da modificirati
  12. • Počasen CPU z omejenim hlajenjem … Nexus 5 /

    Galaxy Note 3 thermal throttling
  13. • Počasen CPU z omejenim hlajenjem … • … z

    malo RAM-a … • … na majhni bateriji … LG Nexus 5 Standby <= 0,1 W Idle 0,3 - 1,0 W Load 4,3 - 8,4 W
  14. • Počasen CPU z omejenim hlajenjem … • … z

    malo RAM-a … • … na majhni bateriji … • … in požrešnim radijem. LG Nexus 5 Standby <= 0,1 W Idle 0,3 - 1,0 W Load 4,3 - 8,4 W
  15. Dalvik, t3h suck • JIT sanja med tesnimi zankami -

    kodo treba pisati v C • GC ne podpira defragmentacije kopice • Omejitev na 65.536 metod v DEX
  16. HW: Kamera • Ločljivost snemanja • Ločljivost predogleda • FPS

    • Bitrate • Format • Format slik predogleda • Format zajetih slik • Format posnetih slik
 • Podpora samo za TOČNO določeno:
  17. HW: Radii • Bluetooth 4.0 BLE je hroščata greznica •

    Lastniški APIji pred Androidom 4.3 • Wi-Fi Direct funkctionalnost je loterija • Miracast deluje z bolj malo napravami
  18. Orodja • Nekatera zgledajo kot z leta 1994 • Več

    disjunktnih programčkov, ki se nekoliko, a ne popolnoma prekrivajo (npr. TraceView in systrace.py) • Android Studio je alpha, Eclipse je broken • Počasen emulator z znanimi hrošči in nepodporo novih Google knjižnic
  19. Orodja • Sistemi za izgradnjo • “Priporočen” Gradle
 Polomljen na

    toliko načinov da bi se še kamen zjokal. • Eclipse / Ant (ugh) • Maven
 Neuradno podprt, nekaj hroščev, večinoma dela
  20. – Interneti “Prej bo Windows pod GPL kot pa bo

    uporabnik posodobil svoj Android.”
  21. Za pogumne • Uporabi IntelliJ IDEA / Android Studio •

    Gradle je “ok”, Maven trenutno boljša izbira • Rabiš fizično napravo (Nexus!) • Razvoj za 4.x+ z degradacijo za 2.3
  22. Za pogumne • Zanašaj se na OpenSource skupnost in GitHub

    • Squarove knjižnice, ki koristijo prakično vsakemu: • Retrofit • Picasso • ButterKnife / Dagger • EventBus