desenvolvendo aplicações em java para o google android - ranieri de souza fernandes
DESCRIPTION
TRANSCRIPT
Desenvolvendo aplicações em Java para o Google AndroidDesenvolvendo aplicações em Java para o Google Android
TchelinuxTchelinux
Desenvolvendo aplicações em Desenvolvendo aplicações em Java para o Java para o
Google AndroidGoogle Android
Ranieri de Souza FernandesRanieri de Souza Fernandes
Desenvolvendo aplicações em Java para o Google AndroidDesenvolvendo aplicações em Java para o Google Android
TchelinuxTchelinux12/11/08 2
O PalestranteO Palestrante
[email protected]@dev.java.net
Desenvolvendo aplicações em Java para o Google AndroidDesenvolvendo aplicações em Java para o Google Android
TchelinuxTchelinux12/11/08 3
Android, como começou?Android, como começou?
Desenvolvendo aplicações em Java para o Google AndroidDesenvolvendo aplicações em Java para o Google Android
TchelinuxTchelinux12/11/08 4
Android, como começou?Android, como começou?● Julho de 2005, Google adquire a Android Inc, Julho de 2005, Google adquire a Android Inc,
com sede em Palo Alto, CA.com sede em Palo Alto, CA.● ObjetivosObjetivos
– Desenvolver um OS para dispositivos móveis Desenvolver um OS para dispositivos móveis baseado em Linuxbaseado em Linux
– Terá como premissa proporcionar uma estrutura Terá como premissa proporcionar uma estrutura flexível e atualizávelflexível e atualizável
● Começam os rumores que ao Google planeja Começam os rumores que ao Google planeja entrar no mercado de telefonia móvel...entrar no mercado de telefonia móvel...
Desenvolvendo aplicações em Java para o Google AndroidDesenvolvendo aplicações em Java para o Google Android
TchelinuxTchelinux12/11/08 5
Porque dispositivos móveis?Porque dispositivos móveis?
● O crescimento de dispositivos móveis, ligados a O crescimento de dispositivos móveis, ligados a rede é maior que o de PC's...rede é maior que o de PC's...
● Pessoas com o primeiro contato com a web via Pessoas com o primeiro contato com a web via celular...celular...
● Todos terão um...Todos terão um...
Desenvolvendo aplicações em Java para o Google AndroidDesenvolvendo aplicações em Java para o Google Android
TchelinuxTchelinux12/11/08 6
Android, como apareceu?Android, como apareceu?● Dia 5 de novembro de 2007, a Open Handset Dia 5 de novembro de 2007, a Open Handset
Alliance, foi anunciada.Alliance, foi anunciada.– Consorcio formado por empresas como, Google, Consorcio formado por empresas como, Google,
HTC, Intel, Motorola, Qualcomm, TMobile, Sprint HTC, Intel, Motorola, Qualcomm, TMobile, Sprint Nextel e NVIDIA (mais de 30 empresas)Nextel e NVIDIA (mais de 30 empresas)
– Seu objetivo é desenvolver padrões abertos para os Seu objetivo é desenvolver padrões abertos para os dispositivos móveisdispositivos móveis
– Anunciou seu primeiro produto o Android, Anunciou seu primeiro produto o Android, construído sobre o sistema operacional Linuxconstruído sobre o sistema operacional Linux
Desenvolvendo aplicações em Java para o Google AndroidDesenvolvendo aplicações em Java para o Google Android
TchelinuxTchelinux12/11/08 7
Depois do anuncio...Depois do anuncio...
● Dia 12 de Novembro de 2007 primeira versão do SDKDia 12 de Novembro de 2007 primeira versão do SDK
● De Janeiro a Agosto de 2008 Android Developer Challenge IDe Janeiro a Agosto de 2008 Android Developer Challenge I
● Dia 18 Agosto de 2008 Android 0.9 SDK beta releasedDia 18 Agosto de 2008 Android 0.9 SDK beta released
● Dia 28 Agosto de 2008 apresentação para o mercadoDia 28 Agosto de 2008 apresentação para o mercado
● Dia 23 Setembro de 2008 Android 1.0 SDK Release 1 Dia 23 Setembro de 2008 Android 1.0 SDK Release 1
● Dia 21 de Outubro de 2008 Código fonte disponibilizado Dia 21 de Outubro de 2008 Código fonte disponibilizado
● Dia 22 de Outubro de 2008 aparelho com Android 1.0 a venda (G1)Dia 22 de Outubro de 2008 aparelho com Android 1.0 a venda (G1)
● Q4 2008 – Anúncio do Android Developer Challenge IIQ4 2008 – Anúncio do Android Developer Challenge II
Desenvolvendo aplicações em Java para o Google AndroidDesenvolvendo aplicações em Java para o Google Android
TchelinuxTchelinux12/11/08 8
?Android??Android?
● Um sistema operacional?Um sistema operacional?● Um middleware?Um middleware?● Um framework?Um framework?● Um conjunto de aplicações?Um conjunto de aplicações?
Desenvolvendo aplicações em Java para o Google AndroidDesenvolvendo aplicações em Java para o Google Android
TchelinuxTchelinux12/11/08 9
?Android??Android?● Um SDK?Um SDK?
– Tem projetosTem projetos– Tem ferramentas de desenvolvimentoTem ferramentas de desenvolvimento– Tem um emuladorTem um emulador– Tem um conjunto de bibliotecasTem um conjunto de bibliotecas
Desenvolvendo aplicações em Java para o Google AndroidDesenvolvendo aplicações em Java para o Google Android
TchelinuxTchelinux12/11/08 10
?Android??Android?
● Tem uma linguagem de programação?Tem uma linguagem de programação?– JavaJava
● Tem uma máquina virtual?Tem uma máquina virtual?– Dalvik (Kernel GNU/Linux)Dalvik (Kernel GNU/Linux)
Desenvolvendo aplicações em Java para o Google AndroidDesenvolvendo aplicações em Java para o Google Android
TchelinuxTchelinux12/11/08 11
?Android??Android?
É tudo isto....É tudo isto....
É uma Plataforma aberta É uma Plataforma aberta para dispositivos móveis!!!para dispositivos móveis!!!
Desenvolvendo aplicações em Java para o Google AndroidDesenvolvendo aplicações em Java para o Google Android
TchelinuxTchelinux12/11/08 12
LicençasLicenças
● ““The platform also includes a modified version The platform also includes a modified version of the Linux Kernel, which is distributed under of the Linux Kernel, which is distributed under the GNU's General Public License (GPL).”the GNU's General Public License (GPL).”
● ““The source code released today also includes The source code released today also includes Google's Dalvik virtual machine and Javabased Google's Dalvik virtual machine and Javabased middleware layer, which are distributed under middleware layer, which are distributed under version 2 of the Apache Software License version 2 of the Apache Software License (ASL).“(ASL).“
Desenvolvendo aplicações em Java para o Google AndroidDesenvolvendo aplicações em Java para o Google Android
TchelinuxTchelinux
LicençasLicenças✔ Licenças de Software Livre:Licenças de Software Livre:
• GPL (General Public License)GPL (General Public License)
• BSD (Berkeley Software Distribution)BSD (Berkeley Software Distribution)
• MozillaMozilla
• ApacheApache
• etc ...etc ...
Desenvolvendo aplicações em Java para o Google AndroidDesenvolvendo aplicações em Java para o Google Android
TchelinuxTchelinux
Desenvolvendo aplicações em Java para o Google AndroidDesenvolvendo aplicações em Java para o Google Android
TchelinuxTchelinux12/11/08 15
Porque licença Apache (ASL)?Porque licença Apache (ASL)?
● We took a close look earlier this year at why We took a close look earlier this year at why Google chose the ASL for its Android userspace Google chose the ASL for its Android userspace components and pointed out that its components and pointed out that its permissiveness will encourage commercial permissiveness will encourage commercial adoption and allow handset makers to create adoption and allow handset makers to create proprietary enhancements on top of the proprietary enhancements on top of the technology.technology.
Desenvolvendo aplicações em Java para o Google AndroidDesenvolvendo aplicações em Java para o Google Android
TchelinuxTchelinux12/11/08 16
Então, é Open Source!Então, é Open Source!
● Apache 2.0 Apache 2.0 ● GPL v2 (kernel)GPL v2 (kernel)● Repositório Git Repositório Git ● Fontes: http://source.android.comFontes: http://source.android.com
Desenvolvendo aplicações em Java para o Google AndroidDesenvolvendo aplicações em Java para o Google Android
TchelinuxTchelinux12/11/08 17
AbertoAberto● Em três pontos de vista (três reis):Em três pontos de vista (três reis):
– Industria: Licença Apache 2.0Industria: Licença Apache 2.0– Usuários: Controle totalUsuários: Controle total– Desenvolvedor: não precisa pedir permissãoDesenvolvedor: não precisa pedir permissão
Desenvolvendo aplicações em Java para o Google AndroidDesenvolvendo aplicações em Java para o Google Android
TchelinuxTchelinux12/11/08 18
E o Java ME?E o Java ME?
Desenvolvendo aplicações em Java para o Google AndroidDesenvolvendo aplicações em Java para o Google Android
TchelinuxTchelinux12/11/08 19
Java MEJava ME● Subset do JSE, utilizada para ambientes Subset do JSE, utilizada para ambientes
embeddedembedded● É a tecnologia mais utilizada no mundo para É a tecnologia mais utilizada no mundo para
dispositivos embeddeddispositivos embedded● Pode rodar numa infinidade de dispositivos: Pode rodar numa infinidade de dispositivos:
telefones celulares, PDA's, TV's, impressoras, telefones celulares, PDA's, TV's, impressoras, etc...etc...
● Recursos nivelados por baixoRecursos nivelados por baixo● Industria: problemas com licençasIndustria: problemas com licenças
Desenvolvendo aplicações em Java para o Google AndroidDesenvolvendo aplicações em Java para o Google Android
TchelinuxTchelinux12/11/08 20
Android API vs Java APIAndroid API vs Java APIPacotes SuportadosPacotes Suportados
● java.io File and stream I/Ojava.io File and stream I/O
● java.lang (except java.lang.management) Language and java.lang (except java.lang.management) Language and exception supportexception support
● java.math Big numbers, rounding, precisionjava.math Big numbers, rounding, precision
● java.net Network I/O, URLs, socketsjava.net Network I/O, URLs, sockets
● java.nio File and channel I/Ojava.nio File and channel I/O
Desenvolvendo aplicações em Java para o Google AndroidDesenvolvendo aplicações em Java para o Google Android
TchelinuxTchelinux12/11/08 21
Android API vs Java APIAndroid API vs Java APIPacotes SuportadosPacotes Suportados
● java.security Authorization, certificates, public keysjava.security Authorization, certificates, public keys
● java.sql Database interfacesjava.sql Database interfaces
● java.text Formatting, natural language, collationjava.text Formatting, natural language, collation
● java.util Lists, maps, sets, arrays, collectionsjava.util Lists, maps, sets, arrays, collections
– including java.util.concurrentincluding java.util.concurrent
Desenvolvendo aplicações em Java para o Google AndroidDesenvolvendo aplicações em Java para o Google Android
TchelinuxTchelinux12/11/08 22
● javax.crypto Ciphers, public keysjavax.crypto Ciphers, public keys
● javax.net Socket factories, SSLjavax.net Socket factories, SSL
● javax.security except:javax.security except:
– javax.security.auth.kerberosjavax.security.auth.kerberos
– javax.security.auth.spijavax.security.auth.spi
– javax.security.sasljavax.security.sasl● javax.sound Music and sound effectsjavax.sound Music and sound effects
Android API vs Java APIAndroid API vs Java APIPacotes SuportadosPacotes Suportados
Desenvolvendo aplicações em Java para o Google AndroidDesenvolvendo aplicações em Java para o Google Android
TchelinuxTchelinux12/11/08 23
● javax.sql More database interfacesjavax.sql More database interfaces
– except javax.sql.rowsetexcept javax.sql.rowset● javax.xml.parsers XML parsingjavax.xml.parsers XML parsing
● org.w3c.dom DOM nodes and elementsorg.w3c.dom DOM nodes and elements
– but not subpackagesbut not subpackages● org.xml.sax Simple API for XMLorg.xml.sax Simple API for XML
Android API vs Java APIAndroid API vs Java APIPacotes SuportadosPacotes Suportados
Desenvolvendo aplicações em Java para o Google AndroidDesenvolvendo aplicações em Java para o Google Android
TchelinuxTchelinux12/11/08 24
● java.appletjava.applet
● java.awtjava.awt
● java.beansjava.beans
● java.lang.managementjava.lang.management
● java.rmijava.rmi
Android API vs Java APIAndroid API vs Java APIPacotes não SuportadosPacotes não Suportados
● javax.accessibilityjavax.accessibility
● javax.activityjavax.activity
● javax.imageiojavax.imageio
● javax.managementjavax.management
● javax.namingjavax.naming
Desenvolvendo aplicações em Java para o Google AndroidDesenvolvendo aplicações em Java para o Google Android
TchelinuxTchelinux12/11/08 25
● javax.printjavax.print
● javax.rmijavax.rmi
● javax.security.auth.kerberosjavax.security.auth.kerberos
● javax.security.auth.spijavax.security.auth.spi
● javax.security.sasljavax.security.sasl
● javax.swingjavax.swing
● javax.transactionjavax.transaction
Android API vs Java APIAndroid API vs Java APIPacotes não SuportadosPacotes não Suportados
● javax.xml javax.xml
– except javax.xml.parsersexcept javax.xml.parsers● org.ietf.*org.ietf.*
● org.omg.*org.omg.*
● org.w3c.dom.* org.w3c.dom.*
– subpackagessubpackages
Desenvolvendo aplicações em Java para o Google AndroidDesenvolvendo aplicações em Java para o Google Android
TchelinuxTchelinux12/11/08 26
● org.apache.commons.codecorg.apache.commons.codec
– Utilities for encoding and decodingUtilities for encoding and decoding● org.apache.commons.httpclientorg.apache.commons.httpclient
– HTTP authentication, cookies, methods, and HTTP authentication, cookies, methods, and protocolorg.bluez Bluetooth supportprotocolorg.bluez Bluetooth support
● org.json JavaScript Object Notationorg.json JavaScript Object Notation
Android APIAndroid APIPacotes Suportados (não JSE)Pacotes Suportados (não JSE)
Desenvolvendo aplicações em Java para o Google AndroidDesenvolvendo aplicações em Java para o Google Android
TchelinuxTchelinux
Mas... Porque o Google Mas... Porque o Google escolheu Java?escolheu Java?
Desenvolvendo aplicações em Java para o Google AndroidDesenvolvendo aplicações em Java para o Google Android
TchelinuxTchelinux12/11/08 28
Software Livre e JavaSoftware Livre e Java
✔ Freshmeat ranking de linguagensFreshmeat ranking de linguagens✔ 1 C (9223 projetos) 1 C (9223 projetos) ✔ 2 Java (6225 projetos) 2 Java (6225 projetos) ✔ 3 C++ (5156 projects) 3 C++ (5156 projects)
✔ Portal java.netPortal java.net✔ Projetos Projetos ✔ Grupos de usuáriosGrupos de usuários✔ Fóruns Fóruns
Desenvolvendo aplicações em Java para o Google AndroidDesenvolvendo aplicações em Java para o Google Android
TchelinuxTchelinux12/11/08 29
Adoção do JavaAdoção do JavaTIOBE Programming Community Index for October 2008TIOBE Programming Community Index for October 2008
Desenvolvendo aplicações em Java para o Google AndroidDesenvolvendo aplicações em Java para o Google Android
TchelinuxTchelinux12/11/08 30
Adoção do JavaAdoção do JavaTIOBE Programming Community Index for October 2008TIOBE Programming Community Index for October 2008
Desenvolvendo aplicações em Java para o Google AndroidDesenvolvendo aplicações em Java para o Google Android
TchelinuxTchelinux12/11/08 31
ArquiteturaArquitetura
Desenvolvendo aplicações em Java para o Google AndroidDesenvolvendo aplicações em Java para o Google Android
TchelinuxTchelinux12/11/08 32
Android ArquiteturaAndroid Arquitetura
Desenvolvendo aplicações em Java para o Google AndroidDesenvolvendo aplicações em Java para o Google Android
TchelinuxTchelinux12/11/08 33
Linux KernelLinux Kernel
● Versão do kernel: 2.6 Versão do kernel: 2.6
– Camada de de abstração entre o hardware e o resto da Camada de de abstração entre o hardware e o resto da pilha de softwarepilha de software
– SegurançaSegurança
– Gerenciamento de memóriaGerenciamento de memória
– Gerenciamento de processosGerenciamento de processos
– Protocolos de redeProtocolos de rede
– Modelo de driversModelo de drivers
Desenvolvendo aplicações em Java para o Google AndroidDesenvolvendo aplicações em Java para o Google Android
TchelinuxTchelinux12/11/08 34
Android ArquiteturaAndroid Arquitetura
Desenvolvendo aplicações em Java para o Google AndroidDesenvolvendo aplicações em Java para o Google Android
TchelinuxTchelinux12/11/08 35
BibliotecasBibliotecas
● Andróid inclui um conjunto de bibliotecas C/C++ usadas por Andróid inclui um conjunto de bibliotecas C/C++ usadas por diversos componentes do sistema:diversos componentes do sistema:
● System C LibrarySystem C Library
● Media LibrariesMedia Libraries
● Surface ManagerSurface Manager
● LibWebCoreLibWebCore
● SGLSGL
● 3D Libraries3D Libraries
● FreeTypeFreeType
● SQLiteSQLite
Desenvolvendo aplicações em Java para o Google AndroidDesenvolvendo aplicações em Java para o Google Android
TchelinuxTchelinux12/11/08 36
RuntimeRuntime
● Aplicação Android:Aplicação Android:– É um processo LinuxÉ um processo Linux– Própria instância da máquina vitual DalvikPrópria instância da máquina vitual Dalvik
● Executa arquivos .dex (ferramenta dx)Executa arquivos .dex (ferramenta dx)
Desenvolvendo aplicações em Java para o Google AndroidDesenvolvendo aplicações em Java para o Google Android
TchelinuxTchelinux12/11/08 37
Android ArquiteturaAndroid Arquitetura
Desenvolvendo aplicações em Java para o Google AndroidDesenvolvendo aplicações em Java para o Google Android
TchelinuxTchelinux12/11/08 38
FrameworkFramework
● ViewView● Content ProvidersContent Providers● Resource ManagerResource Manager● Notification ManagerNotification Manager● Ativity ManagerAtivity Manager
Desenvolvendo aplicações em Java para o Google AndroidDesenvolvendo aplicações em Java para o Google Android
TchelinuxTchelinux12/11/08 39
Android ArquiteturaAndroid Arquitetura
Desenvolvendo aplicações em Java para o Google AndroidDesenvolvendo aplicações em Java para o Google Android
TchelinuxTchelinux12/11/08 40
AplicaçõesAplicações
● Cliente de email Cliente de email ● Programa SMS Programa SMS ● Calendário Calendário
... ...
● MapasMapas● NavegadorNavegador● ContatosContatos
Desenvolvendo aplicações em Java para o Google AndroidDesenvolvendo aplicações em Java para o Google Android
TchelinuxTchelinux12/11/08 41
S D KS D K
Desenvolvendo aplicações em Java para o Google AndroidDesenvolvendo aplicações em Java para o Google Android
TchelinuxTchelinux12/11/08 42
Android SDKAndroid SDK
● O Android SDK é formado por:O Android SDK é formado por:
– Ferramentas de linha de comandoFerramentas de linha de comando– DebuggerDebugger– LibrariesLibraries– Emulador (baseado no QEMU)Emulador (baseado no QEMU)– Documentação Documentação – Códigos de exemploCódigos de exemplo– TutoriaisTutoriais
Desenvolvendo aplicações em Java para o Google AndroidDesenvolvendo aplicações em Java para o Google Android
TchelinuxTchelinux12/11/08 43
Android SDKAndroid SDK
● É suportado em plataformas baseadas em x86É suportado em plataformas baseadas em x86
– Linux (qualquer distribuição)Linux (qualquer distribuição)– Mac OS X 10.4.8 or later, Mac OS X 10.4.8 or later, – Windows XP or Vista. Windows XP or Vista.
Desenvolvendo aplicações em Java para o Google AndroidDesenvolvendo aplicações em Java para o Google Android
TchelinuxTchelinux12/11/08 44
Android SDKAndroid SDK● Depende de:Depende de:
– JDK Java Development KitJDK Java Development Kit– Apache AntApache Ant
– Python 2.2 or later.Python 2.2 or later. ● IDE oficialIDE oficial
– Eclipse 3.2 or laterEclipse 3.2 or later– Android Development Tools (ADT) PluginAndroid Development Tools (ADT) Plugin
● Não é compatível com o Gnu Compiler for Java (gcj)Não é compatível com o Gnu Compiler for Java (gcj)
Desenvolvendo aplicações em Java para o Google AndroidDesenvolvendo aplicações em Java para o Google Android
TchelinuxTchelinux12/11/08 45
Android SDKAndroid SDK
● Ferramentas de linha de comandoFerramentas de linha de comando
– emulator – Android emulatoremulator – Android emulator– aapt – Android asset packaging toolaapt – Android asset packaging tool– adb – Android debug bridgeadb – Android debug bridge– aidl – Android IDL compileraidl – Android IDL compiler
Desenvolvendo aplicações em Java para o Google AndroidDesenvolvendo aplicações em Java para o Google Android
TchelinuxTchelinux12/11/08 46
Desenvolvendo aplicações em Java para o Google AndroidDesenvolvendo aplicações em Java para o Google Android
TchelinuxTchelinux12/11/08 47
Android SDKAndroid SDK
● Para os fans do NetBeans IDEPara os fans do NetBeans IDE
– Android plugin for NetBeans (unandroid)Android plugin for NetBeans (unandroid)
– http://kenai.com/projects/nbandroid/http://kenai.com/projects/nbandroid/
Desenvolvendo aplicações em Java para o Google AndroidDesenvolvendo aplicações em Java para o Google Android
TchelinuxTchelinux12/11/08 48
Android SDKAndroid SDK
Desenvolvendo aplicações em Java para o Google AndroidDesenvolvendo aplicações em Java para o Google Android
TchelinuxTchelinux12/11/08 49
Suas Caracteristicas...Suas Caracteristicas...● Application Framewok: torna possível o reuso e a substituição Application Framewok: torna possível o reuso e a substituição
de componentesde componentes
● Máquina virtual Dalvik: Otimizada para rodar em dispositivos Máquina virtual Dalvik: Otimizada para rodar em dispositivos móveismóveis
● Navegador integrado: Baseado no WebKit, mesmo que o Navegador integrado: Baseado no WebKit, mesmo que o Chrome e SafariChrome e Safari
● Otimização gráfica: Otimização gráfica:
– Bibliotecas 2DBibliotecas 2D
– Gráficos 3D (OpenGL 1.0)Gráficos 3D (OpenGL 1.0)● SQLite: Para persistência de dadosSQLite: Para persistência de dados
● Suporte para mídias: Aúdio, vídeo, formatos de imagens Suporte para mídias: Aúdio, vídeo, formatos de imagens (MPEG4, H.264, MP3, AAC, AMR, JPG, PNG e GIF)(MPEG4, H.264, MP3, AAC, AMR, JPG, PNG e GIF)
Desenvolvendo aplicações em Java para o Google AndroidDesenvolvendo aplicações em Java para o Google Android
TchelinuxTchelinux12/11/08 50
Suas Caracteristicas...Suas Caracteristicas...● Dependente do hardware:Dependente do hardware:
– GPRS/GSM e EDGEGPRS/GSM e EDGE– BluetoothBluetooth– Telefonia 3GTelefonia 3G– WiFiWiFi– CâmeraCâmera– GPSGPS– BússolaBússola– AcelerômetroAcelerômetro
Desenvolvendo aplicações em Java para o Google AndroidDesenvolvendo aplicações em Java para o Google Android
TchelinuxTchelinux12/11/08 51
EmuladorEmulador
● Emula o hardware (QEMU)Emula o hardware (QEMU)● Não possui suporte:Não possui suporte:
– Fazer e receber chamadasFazer e receber chamadas– Captura de foto/áudio/vídeoCaptura de foto/áudio/vídeo– Nível da bateriaNível da bateria– BluetoothBluetooth
Desenvolvendo aplicações em Java para o Google AndroidDesenvolvendo aplicações em Java para o Google Android
TchelinuxTchelinux12/11/08 52
Instalando o SDKInstalando o SDK
● http://code.google.com/android/intro/installing.htmlhttp://code.google.com/android/intro/installing.html
Desenvolvendo aplicações em Java para o Google AndroidDesenvolvendo aplicações em Java para o Google Android
TchelinuxTchelinux12/11/08 53
Aplicação AndroidAplicação Android
● Existem 4 tipos básicos de elementos:Existem 4 tipos básicos de elementos:
– ActivitiesActivities
– Intents e IntentFilters ( BroadcastReceivers)Intents e IntentFilters ( BroadcastReceivers)
– ServicesServices
– Content ProvidersContent Providers● Os componentes que compõe a aplicação estão no Os componentes que compõe a aplicação estão no
AndroidManifest.xml.AndroidManifest.xml.
Desenvolvendo aplicações em Java para o Google AndroidDesenvolvendo aplicações em Java para o Google Android
TchelinuxTchelinux12/11/08 54
Hello World!Hello World!
● http://code.google.com/android/intro/helloandroid.htmlhttp://code.google.com/android/intro/helloandroid.html
Desenvolvendo aplicações em Java para o Google AndroidDesenvolvendo aplicações em Java para o Google Android
TchelinuxTchelinux12/11/08 55
FerramentaFerramenta● DroidDraw – editor de telasDroidDraw – editor de telas
– http://www.droiddraw.org/http://www.droiddraw.org/
Desenvolvendo aplicações em Java para o Google AndroidDesenvolvendo aplicações em Java para o Google Android
TchelinuxTchelinux12/11/08 56
Hello World! Melhorado...Hello World! Melhorado...
● http://code.google.com/android/intro/helloandroid.htmlhttp://code.google.com/android/intro/helloandroid.html
Desenvolvendo aplicações em Java para o Google AndroidDesenvolvendo aplicações em Java para o Google Android
TchelinuxTchelinux12/11/08 57
Em um passadoEm um passadonão muitonão muitodistante....distante....
A concorrência..A concorrência..
Desenvolvendo aplicações em Java para o Google AndroidDesenvolvendo aplicações em Java para o Google Android
TchelinuxTchelinux12/11/08 58
Macintosh X IBMPCMacintosh X IBMPC
● Plataforma FechadaPlataforma Fechada● Um fornecedorUm fornecedor● Considerado o melhorConsiderado o melhor
● Plataforma AbertaPlataforma Aberta● Varios fornecedoresVarios fornecedores● Dominou o mercadoDominou o mercado
Desenvolvendo aplicações em Java para o Google AndroidDesenvolvendo aplicações em Java para o Google Android
TchelinuxTchelinux12/11/08 59
Mac brasileiroMac brasileiro● Mac512 Unitron – primeiro clone de um Mac512 Unitron – primeiro clone de um
Macintosh feito no mundo...Macintosh feito no mundo...● Não podemos usálo... :(Não podemos usálo... :(
Desenvolvendo aplicações em Java para o Google AndroidDesenvolvendo aplicações em Java para o Google Android
TchelinuxTchelinux12/11/08 60
IPhone X AndroidIPhone X Android
● Plataforma FechadaPlataforma Fechada
● Um fornecedorUm fornecedor
● Considerado o melhorConsiderado o melhor
● Plataforma AbertaPlataforma Aberta
● Varios fornecedoresVarios fornecedores
● ??????????????
Desenvolvendo aplicações em Java para o Google AndroidDesenvolvendo aplicações em Java para o Google Android
TchelinuxTchelinux12/11/08 61
SDK ConcorrênciaSDK Concorrência● É lançado e disponibilizado o SDK do AndroidÉ lançado e disponibilizado o SDK do Android● Logo depois... o SDK do IphoneLogo depois... o SDK do Iphone● Quem ganha? Nós....Quem ganha? Nós....
Desenvolvendo aplicações em Java para o Google AndroidDesenvolvendo aplicações em Java para o Google Android
TchelinuxTchelinux12/11/08 62
Android não é JavaAndroid não é Java
● Não executa bytecodesNão executa bytecodes– Execura arqquivos dexExecura arqquivos dex
● Não possui JVM (????)Não possui JVM (????)– Dalvik não é uma JVMDalvik não é uma JVM
● Não segue as especificações do JCPNão segue as especificações do JCP
Desenvolvendo aplicações em Java para o Google AndroidDesenvolvendo aplicações em Java para o Google Android
TchelinuxTchelinux12/11/08 63
JCP Quem “manda” no JavaJCP Quem “manda” no Java● JCP – Java Community ProcessJCP – Java Community Process● Qualquer um pode participar (JSR's)Qualquer um pode participar (JSR's)● O processo é aberto (papel da Sun)O processo é aberto (papel da Sun)● Compatibility Test Suite: mais de 5000 itensCompatibility Test Suite: mais de 5000 itens
Desenvolvendo aplicações em Java para o Google AndroidDesenvolvendo aplicações em Java para o Google Android
TchelinuxTchelinux12/11/08 64
Membros JCPMembros JCP– Apache Software FoundationApache Software Foundation
– BEA SystemsBEA Systems
– BorlandBorland
– GoogleGoogle
– Fujitsu LimitedFujitsu Limited
– HewlettPackardHewlettPackard
– IBMIBM
– IntelIntel
– OracleOracle
– Red HatRed Hat
– SAPSAP
– Sun MicrosystemsSun Microsystems
Desenvolvendo aplicações em Java para o Google AndroidDesenvolvendo aplicações em Java para o Google Android
TchelinuxTchelinux12/11/08 65
DalvikDalvik● Interpreteronly, register based virtual machineInterpreteronly, register based virtual machine
– Dan BornsteinDan Bornstein
● Optimized to run multiple VM instancesOptimized to run multiple VM instances● Executes files in .dex formatExecutes files in .dex format● Runs on posixcompliant operating systemsRuns on posixcompliant operating systems● Looks like JavaLooks like Java● Dalvik?Dalvik?
– village of Dalvík in Icelandvillage of Dalvík in Iceland
Desenvolvendo aplicações em Java para o Google AndroidDesenvolvendo aplicações em Java para o Google Android
TchelinuxTchelinux12/11/08 66
Dalvik – Jar x DexDalvik – Jar x Dex
Desenvolvendo aplicações em Java para o Google AndroidDesenvolvendo aplicações em Java para o Google Android
TchelinuxTchelinux
JVM – O segredo do desempenhoJVM – O segredo do desempenhoJ I T J I T
Compilador justintimeCompilador justintime
Dalvik não possui J I T !!!Dalvik não possui J I T !!!
Desenvolvendo aplicações em Java para o Google AndroidDesenvolvendo aplicações em Java para o Google Android
TchelinuxTchelinux
JVM – O segredo do desempenhoJVM – O segredo do desempenho
Desenvolvendo aplicações em Java para o Google AndroidDesenvolvendo aplicações em Java para o Google Android
TchelinuxTchelinux
Dalvik – sem JITDalvik – sem JIT
● Geralmente não precisaGeralmente não precisa● Lotes de código nativoLotes de código nativo● Sistema proporciona libs para gráficos, mídiaSistema proporciona libs para gráficos, mídia● JNI disponívelJNI disponível● Suporte a hardware comum (gráficos, áudio)Suporte a hardware comum (gráficos, áudio)
– Dan BornsteinDan Bornstein
Desenvolvendo aplicações em Java para o Google AndroidDesenvolvendo aplicações em Java para o Google Android
TchelinuxTchelinux12/11/08 70
Garbage CollectorGarbage Collector● Mais de uma referência pode apontar para o Mais de uma referência pode apontar para o
mesmo objetomesmo objeto
Desenvolvendo aplicações em Java para o Google AndroidDesenvolvendo aplicações em Java para o Google Android
TchelinuxTchelinux12/11/08 71
Garbage CollectorGarbage Collector● Se o objeto não possui referências, está Se o objeto não possui referências, está
liberado para o coletor de lixoliberado para o coletor de lixo
Desenvolvendo aplicações em Java para o Google AndroidDesenvolvendo aplicações em Java para o Google Android
TchelinuxTchelinux12/11/08 72
Garbage CollectorGarbage Collector
Desenvolvendo aplicações em Java para o Google AndroidDesenvolvendo aplicações em Java para o Google Android
TchelinuxTchelinux12/11/08 73
GC DalvikGC Dalvik
● Separate process, separate heaps, separate Separate process, separate heaps, separate GCsGCs
● GCs must be independentGCs must be independent● GC should respect the sharing!GC should respect the sharing!
Desenvolvendo aplicações em Java para o Google AndroidDesenvolvendo aplicações em Java para o Google Android
TchelinuxTchelinux12/11/08 74
Obrigado !!!Obrigado !!!
Desenvolvendo aplicações em Java para o Google AndroidDesenvolvendo aplicações em Java para o Google Android
TchelinuxTchelinux12/11/08 75
BibliografiaBibliografia✔ http://www.fatecjp.com.br/posgraduacao/posgraduacaoddm.htmhttp://www.fatecjp.com.br/posgraduacao/posgraduacaoddm.htm
✔ http://wwwdi.inf.pucrio.br/~endler/courses/Mobile/Tarefas/MAPslides/http://wwwdi.inf.pucrio.br/~endler/courses/Mobile/Tarefas/MAPslides/
✔ http://www.androidbr.mobi/http://www.androidbr.mobi/
✔ http://code.google.com/android/http://code.google.com/android/
✔ http://source.android.com/http://source.android.com/
✔ http://ranierifernandes.blogspot.comhttp://ranierifernandes.blogspot.com
✔ http://java.sun.comhttp://java.sun.com
✔ http://http://www.jcp.org/en/participation/members/www.jcp.org/en/participation/members/
✔ http://www.tiobe.com/tpci.htmhttp://www.tiobe.com/tpci.htm
✔ http://www.droiddraw.org/http://www.droiddraw.org/
✔