Você está na página 1de 73

DesenvolvendoaplicaesemJavaparaoGoogleAndroid

Desenvolvendoaplicaesem Javaparao GoogleAndroid


RanierideSouzaFernandes

Tchelinux

DesenvolvendoaplicaesemJavaparaoGoogleAndroid

OPalestrante

ranieri@dev.java.net

Tchelinux

DesenvolvendoaplicaesemJavaparaoGoogleAndroid

Android,comocomeou?

Tchelinux

DesenvolvendoaplicaesemJavaparaoGoogleAndroid

Android,comocomeou?

Julhode2005,GoogleadquireaAndroidInc, comsedeemPaloAlto,CA. Objetivos

DesenvolverumOSparadispositivosmveis baseadoemLinux Tercomopremissaproporcionarumaestrutura flexveleatualizvel

ComeamosrumoresqueaoGoogleplaneja entrarnomercadodetelefoniamvel...
Tchelinux
4

DesenvolvendoaplicaesemJavaparaoGoogleAndroid

Porquedispositivosmveis?

Ocrescimentodedispositivosmveis,ligadosa redemaiorqueodePC's... Pessoascomoprimeirocontatocomawebvia celular... Todosteroum...

Tchelinux

DesenvolvendoaplicaesemJavaparaoGoogleAndroid

Android,comoapareceu?

Dia5denovembrode2007,aOpenHandset Alliance,foianunciada.

Consorcioformadoporempresascomo,Google, HTC,Intel,Motorola,Qualcomm,TMobile,Sprint NexteleNVIDIA(maisde30empresas) Seuobjetivodesenvolverpadresabertosparaos dispositivosmveis AnunciouseuprimeiroprodutooAndroid, construdosobreosistemaoperacionalLinux

Tchelinux

DesenvolvendoaplicaesemJavaparaoGoogleAndroid

Depoisdoanuncio...

Dia12deNovembrode2007primeiraversodoSDK DeJaneiroaAgostode2008AndroidDeveloperChallengeI Dia18Agostode2008Android0.9SDKbetareleased Dia28Agostode2008apresentaoparaomercado Dia23Setembrode2008Android1.0SDKRelease1 Dia21deOutubrode2008Cdigofontedisponibilizado Dia22deOutubrode2008aparelhocomAndroid1.0avenda(G1)

Tchelinux

DesenvolvendoaplicaesemJavaparaoGoogleAndroid

?Android?

Umsistemaoperacional? Ummiddleware? Umframework? Umconjuntodeaplicaes?

Tchelinux

DesenvolvendoaplicaesemJavaparaoGoogleAndroid

?Android?

UmSDK?

Temprojetos Temferramentasdedesenvolvimento Temumemulador Temumconjuntodebibliotecas

Tchelinux

DesenvolvendoaplicaesemJavaparaoGoogleAndroid

?Android?

Temumalinguagemdeprogramao?

Java Dalvik(KernelGNU/Linux)

Temumamquinavirtual?

Tchelinux

10

DesenvolvendoaplicaesemJavaparaoGoogleAndroid

?Android?

tudoisto.... umaPlataformaaberta paradispositivosmveis!!!


Tchelinux

11

DesenvolvendoaplicaesemJavaparaoGoogleAndroid

Licenas

Theplatformalsoincludesamodifiedversion oftheLinuxKernel,whichisdistributedunder theGNU'sGeneralPublicLicense(GPL). Thesourcecodereleasedtodayalsoincludes Google'sDalvikvirtualmachineandJavabased middlewarelayer,whicharedistributedunder version2oftheApacheSoftwareLicense (ASL).


Tchelinux
12

DesenvolvendoaplicaesemJavaparaoGoogleAndroid

Licenas

LicenasdeSoftwareLivre:
GPL(GeneralPublicLicense) BSD(BerkeleySoftwareDistribution) Mozilla Apache etc...

Tchelinux

DesenvolvendoaplicaesemJavaparaoGoogleAndroid

Tchelinux

DesenvolvendoaplicaesemJavaparaoGoogleAndroid

PorquelicenaApache(ASL)?

Wetookacloselookearlierthisyearatwhy GooglechosetheASLforitsAndroiduserspace componentsandpointedoutthatits permissivenesswillencouragecommercial adoptionandallowhandsetmakerstocreate proprietaryenhancementsontopofthe technology.

Tchelinux

15

DesenvolvendoaplicaesemJavaparaoGoogleAndroid

Ento,OpenSource!

Apache2.0 GPLv2(kernel) RepositrioGit Fontes:http://source.android.com

Tchelinux

16

DesenvolvendoaplicaesemJavaparaoGoogleAndroid

Aberto

Emtrspontosdevista(trsreis):

Industria:LicenaApache2.0 Usurios:Controletotal Desenvolvedor:noprecisapedirpermisso

Tchelinux

17

DesenvolvendoaplicaesemJavaparaoGoogleAndroid

EoJavaME?

Tchelinux

18

DesenvolvendoaplicaesemJavaparaoGoogleAndroid

JavaME

SubsetdoJSE,utilizadaparaambientes embedded atecnologiamaisutilizadanomundopara dispositivosembedded Poderodarnumainfinidadededispositivos: telefonescelulares,PDA's,TV's,impressoras, etc... Recursosniveladosporbaixo Industria:problemascomlicenas


Tchelinux
19

DesenvolvendoaplicaesemJavaparaoGoogleAndroid

AndroidAPIvsJavaAPI
PacotesSuportados

java.ioFileandstreamI/O java.lang(exceptjava.lang.management)Languageand exceptionsupport java.mathBignumbers,rounding,precision java.netNetworkI/O,URLs,sockets java.nioFileandchannelI/O

Tchelinux

20

DesenvolvendoaplicaesemJavaparaoGoogleAndroid

AndroidAPIvsJavaAPI
PacotesSuportados

java.securityAuthorization,certificates,publickeys java.sqlDatabaseinterfaces java.textFormatting,naturallanguage,collation java.utilLists,maps,sets,arrays,collections

includingjava.util.concurrent

Tchelinux

21

DesenvolvendoaplicaesemJavaparaoGoogleAndroid

AndroidAPIvsJavaAPI
PacotesSuportados

javax.cryptoCiphers,publickeys javax.netSocketfactories,SSL javax.securityexcept:


javax.security.auth.kerberos javax.security.auth.spi javax.security.sasl

javax.soundMusicandsoundeffects

Tchelinux

22

DesenvolvendoaplicaesemJavaparaoGoogleAndroid

AndroidAPIvsJavaAPI
PacotesSuportados

javax.sqlMoredatabaseinterfaces

exceptjavax.sql.rowset

javax.xml.parsersXMLparsing org.w3c.domDOMnodesandelements

butnotsubpackages

org.xml.saxSimpleAPIforXML

Tchelinux

23

DesenvolvendoaplicaesemJavaparaoGoogleAndroid

AndroidAPIvsJavaAPI
PacotesnoSuportados

java.applet java.awt java.beans java.lang.management java.rmi

javax.accessibility javax.activity javax.imageio javax.management javax.naming

Tchelinux

24

DesenvolvendoaplicaesemJavaparaoGoogleAndroid

AndroidAPIvsJavaAPI
PacotesnoSuportados

javax.print javax.rmi javax.security.auth.kerberos javax.security.auth.spi javax.security.sasl javax.swing javax.transaction

javax.xml

exceptjavax.xml.parsers

org.ietf.* org.omg.* org.w3c.dom.*

subpackages

Tchelinux

25

DesenvolvendoaplicaesemJavaparaoGoogleAndroid

PacotesSuportados(noJSE)

AndroidAPI

org.apache.commons.codec

Utilitiesforencodinganddecoding HTTPauthentication,cookies,methods,and protocolorg.bluezBluetoothsupport

org.apache.commons.httpclient

org.jsonJavaScriptObjectNotation

Tchelinux

26

DesenvolvendoaplicaesemJavaparaoGoogleAndroid

Mas...PorqueoGoogle escolheuJava?

Tchelinux

DesenvolvendoaplicaesemJavaparaoGoogleAndroid

SoftwareLivreeJava

Freshmeatrankingdelinguagens
1C(9223projetos)

2Java(6225projetos) 3C++(5156projects)

Portaljava.net

Projetos Gruposdeusurios Fruns


Tchelinux
28

DesenvolvendoaplicaesemJavaparaoGoogleAndroid

TIOBEProgrammingCommunityIndexforOctober2008

AdoodoJava

Tchelinux

29

DesenvolvendoaplicaesemJavaparaoGoogleAndroid

AdoodoJava
TIOBEProgrammingCommunityIndexforOctober2008

Tchelinux

30

DesenvolvendoaplicaesemJavaparaoGoogleAndroid

Arquitetura

Tchelinux

31

DesenvolvendoaplicaesemJavaparaoGoogleAndroid

AndroidArquitetura

Tchelinux

32

DesenvolvendoaplicaesemJavaparaoGoogleAndroid

LinuxKernel

Versodokernel:2.6

Camadadedeabstraoentreohardwareeorestoda pilhadesoftware Segurana Gerenciamentodememria Gerenciamentodeprocessos Protocolosderede Modelodedrivers


Tchelinux
33

DesenvolvendoaplicaesemJavaparaoGoogleAndroid

AndroidArquitetura

12/11/08

Tchelinux

34

DesenvolvendoaplicaesemJavaparaoGoogleAndroid

Bibliotecas

AndridincluiumconjuntodebibliotecasC/C++usadaspor diversoscomponentesdosistema: SystemCLibrary MediaLibraries SurfaceManager LibWebCore

SGL 3DLibraries FreeType SQLite

Tchelinux

35

DesenvolvendoaplicaesemJavaparaoGoogleAndroid

Runtime

AplicaoAndroid:

umprocessoLinux PrpriainstnciadamquinavitualDalvik

Executaarquivos.dex(ferramentadx)

Tchelinux

36

DesenvolvendoaplicaesemJavaparaoGoogleAndroid

AndroidArquitetura

Tchelinux

37

DesenvolvendoaplicaesemJavaparaoGoogleAndroid

Framework

View ContentProviders ResourceManager NotificationManager AtivityManager


Tchelinux
38

DesenvolvendoaplicaesemJavaparaoGoogleAndroid

AndroidArquitetura

Tchelinux

39

DesenvolvendoaplicaesemJavaparaoGoogleAndroid

Aplicaes

Clientedeemail ProgramaSMS Calendrio

Mapas Navegador Contatos

...

Tchelinux

40

DesenvolvendoaplicaesemJavaparaoGoogleAndroid

SDK

Tchelinux

41

DesenvolvendoaplicaesemJavaparaoGoogleAndroid

AndroidSDK

OAndroidSDKformadopor:

Ferramentasdelinhadecomando Debugger Libraries Emulador(baseadonoQEMU) Documentao Cdigosdeexemplo Tutoriais


Tchelinux
42

DesenvolvendoaplicaesemJavaparaoGoogleAndroid

AndroidSDK

suportadoemplataformasbaseadasemx86

Linux(qualquerdistribuio) MacOSX10.4.8orlater, WindowsXPorVista.

Tchelinux

43

DesenvolvendoaplicaesemJavaparaoGoogleAndroid

AndroidSDK

Dependede:

JDKJavaDevelopmentKit ApacheAnt Python2.2orlater. Eclipse3.2orlater AndroidDevelopmentTools(ADT)Plugin

IDEoficial

NocompatvelcomoGnuCompilerforJava(gcj)
Tchelinux

44

DesenvolvendoaplicaesemJavaparaoGoogleAndroid

AndroidSDK

Ferramentasdelinhadecomando

emulatorAndroidemulator aaptAndroidassetpackagingtool adbAndroiddebugbridge aidlAndroidIDLcompiler

Tchelinux

45

DesenvolvendoaplicaesemJavaparaoGoogleAndroid

Tchelinux

46

DesenvolvendoaplicaesemJavaparaoGoogleAndroid

AndroidSDK

ParaosfansdoNetBeansIDE

AndroidpluginforNetBeans(unandroid) http://kenai.com/projects/nbandroid/

Tchelinux

47

DesenvolvendoaplicaesemJavaparaoGoogleAndroid

AndroidSDK

Tchelinux

48

DesenvolvendoaplicaesemJavaparaoGoogleAndroid

SuasCaracteristicas...

ApplicationFramewok:tornapossveloreusoeasubstituio decomponentes MquinavirtualDalvik:Otimizadapararodaremdispositivos mveis Navegadorintegrado:BaseadonoWebKit,mesmoqueo ChromeeSafari Otimizaogrfica:


Bibliotecas2D Grficos3D(OpenGL1.0)

SQLite:Parapersistnciadedados Suporteparamdias:Adio,vdeo,formatosdeimagens (MPEG4,H.264,MP3,AAC,AMR,JPG,PNGeGIF)


Tchelinux
49

DesenvolvendoaplicaesemJavaparaoGoogleAndroid

SuasCaracteristicas...

Dependentedohardware:

GPRS/GSMeEDGE Bluetooth Telefonia3G WiFi Cmera GPS Bssola Acelermetro


Tchelinux
50

DesenvolvendoaplicaesemJavaparaoGoogleAndroid

Emulador

Emulaohardware(QEMU)

12/11/08

Tchelinux

51

DesenvolvendoaplicaesemJavaparaoGoogleAndroid

InstalandooSDK
http://developer.android.com/sdk/1.5_r3/installing.html

Tchelinux

52

DesenvolvendoaplicaesemJavaparaoGoogleAndroid

AplicaoAndroid

Existem4tiposbsicosdeelementos:

Activities IntentseIntentFilters(BroadcastReceivers) Services ContentProviders

Oscomponentesquecompeaaplicaoestono AndroidManifest.xml.

12/11/08

Tchelinux

53

DesenvolvendoaplicaesemJavaparaoGoogleAndroid

HelloWorld!

http://developer.android.com/guide/tutorials/helloworld.html

Tchelinux

54

DesenvolvendoaplicaesemJavaparaoGoogleAndroid

Emumpassado nomuito distante.... Aconcorrncia..

Tchelinux

57

DesenvolvendoaplicaesemJavaparaoGoogleAndroid

MacintoshXIBMPC

PlataformaFechada Umfornecedor Consideradoomelhor

PlataformaAberta Variosfornecedores Dominouomercado


58

Tchelinux

DesenvolvendoaplicaesemJavaparaoGoogleAndroid

Macbrasileiro

Mac512Unitronprimeiroclonedeum Macintoshfeitonomundo... Nopodemosuslo...:(

Tchelinux

59

DesenvolvendoaplicaesemJavaparaoGoogleAndroid

IPhoneXAndroid

PlataformaFechada Umfornecedor Consideradoomelhor

PlataformaAberta Variosfornecedores ???????


60

Tchelinux

DesenvolvendoaplicaesemJavaparaoGoogleAndroid

SDKConcorrncia

lanadoedisponibilizadooSDKdoAndroid Logodepois...oSDKdoIphone Quemganha?Ns....

Tchelinux

61

DesenvolvendoaplicaesemJavaparaoGoogleAndroid

AndroidnoJava

Noexecutabytecodes

Execuraarqquivosdex DalviknoumaJVM

NopossuiJVM(????)

NosegueasespecificaesdoJCP

Tchelinux

62

DesenvolvendoaplicaesemJavaparaoGoogleAndroid

JCPQuemmandanoJava

JCPJavaCommunityProcess Qualquerumpodeparticipar(JSR's) Oprocessoaberto(papeldaSun) CompatibilityTestSuite:maisde5000itens

Tchelinux

63

DesenvolvendoaplicaesemJavaparaoGoogleAndroid

MembrosJCP

ApacheSoftwareFoundation BEASystems Borland Google FujitsuLimited HewlettPackard IBM Intel Oracle RedHat SAP SunMicrosystems
Tchelinux
64

DesenvolvendoaplicaesemJavaparaoGoogleAndroid

Dalvik

Interpreteronly,registerbasedvirtualmachine

DanBornstein

OptimizedtorunmultipleVMinstances Executesfilesin.dexformat Runsonposixcompliantoperatingsystems LookslikeJava Dalvik?

villageofDalvkinIceland
Tchelinux
65

DesenvolvendoaplicaesemJavaparaoGoogleAndroid

DalvikJarxDex

Tchelinux

66

DesenvolvendoaplicaesemJavaparaoGoogleAndroid

JVMOsegredododesempenho
JIT Compiladorjustintime

DalviknopossuiJIT!!!
Tchelinux

DesenvolvendoaplicaesemJavaparaoGoogleAndroid

JVMOsegredododesempenho

Tchelinux

DesenvolvendoaplicaesemJavaparaoGoogleAndroid

DalviksemJIT

Geralmentenoprecisa Lotesdecdigonativo Sistemaproporcionalibsparagrficos,mdia JNIdisponvel Suporteahardwarecomum(grficos,udio)

DanBornstein

Tchelinux

DesenvolvendoaplicaesemJavaparaoGoogleAndroid

GarbageCollector

Maisdeumarefernciapodeapontarparao mesmoobjeto

Tchelinux

70

DesenvolvendoaplicaesemJavaparaoGoogleAndroid

GarbageCollector

Seoobjetonopossuireferncias,est liberadoparaocoletordelixo

Tchelinux

71

DesenvolvendoaplicaesemJavaparaoGoogleAndroid

GarbageCollector

Tchelinux

72

DesenvolvendoaplicaesemJavaparaoGoogleAndroid

GCDalvik

Separateprocess,separateheaps,separate GCs GCsmustbeindependent GCshouldrespectthesharing!

Tchelinux

73

DesenvolvendoaplicaesemJavaparaoGoogleAndroid

Obrigado!!!

12/11/08

Tchelinux

74

DesenvolvendoaplicaesemJavaparaoGoogleAndroid

Bibliografia
http://www.fatecjp.com.br/posgraduacao/posgraduacaoddm.htm http://wwwdi.inf.pucrio.br/~endler/courses/Mobile/Tarefas/MAPslides/ http://www.androidbr.mobi/ http://code.google.com/android/ http://source.android.com/ http://ranierifernandes.blogspot.com http://java.sun.com http://www.jcp.org/en/participation/members/ http://www.tiobe.com/tpci.htm LivroGoogleAndroidRicardoR.Lecheta
12/11/08

Tchelinux

75

Você também pode gostar