Desenvolvendo aplicações em Java para o Google Android - Ranieri de Souza Fernandes

75
Desenvolvendo aplicações em Java para o Google Android Desenvolvendo aplicações em Java para o Google Android Tchelinux Tchelinux Desenvolvendo aplicações em Desenvolvendo aplicações em Java para o Java para o Google Android Google Android Ranieri de Souza Fernandes Ranieri de Souza Fernandes

description

 

Transcript of Desenvolvendo aplicações em Java para o Google Android - Ranieri de Souza Fernandes

Page 1: Desenvolvendo aplicações em Java para o Google Android - Ranieri de Souza Fernandes

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

Page 2: Desenvolvendo aplicações em Java para o Google Android - Ranieri 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

Page 3: Desenvolvendo aplicações em Java para o Google Android - Ranieri de Souza Fernandes

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?

Page 4: Desenvolvendo aplicações em Java para o Google Android - Ranieri de Souza Fernandes

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...

Page 5: Desenvolvendo aplicações em Java para o Google Android - Ranieri de Souza Fernandes

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...

Page 6: Desenvolvendo aplicações em Java para o Google Android - Ranieri de Souza Fernandes

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, T­Mobile, Sprint HTC, Intel, Motorola, Qualcomm, T­Mobile, 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

Page 7: Desenvolvendo aplicações em Java para o Google Android - Ranieri de Souza Fernandes

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

Page 8: Desenvolvendo aplicações em Java para o Google Android - Ranieri de Souza Fernandes

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?

Page 9: Desenvolvendo aplicações em Java para o Google Android - Ranieri de Souza Fernandes

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

Page 10: Desenvolvendo aplicações em Java para o Google Android - Ranieri de Souza Fernandes

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)

Page 11: Desenvolvendo aplicações em Java para o Google Android - Ranieri de Souza Fernandes

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!!!

Page 12: Desenvolvendo aplicações em Java para o Google Android - Ranieri de Souza Fernandes

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 Java­based Google's Dalvik virtual machine and Java­based 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).“

Page 13: Desenvolvendo aplicações em Java para o Google Android - Ranieri de Souza Fernandes

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 ...

Page 14: Desenvolvendo aplicações em Java para o Google Android - Ranieri de Souza Fernandes

Desenvolvendo aplicações em Java para o Google AndroidDesenvolvendo aplicações em Java para o Google Android

TchelinuxTchelinux

Page 15: Desenvolvendo aplicações em Java para o Google Android - Ranieri de Souza Fernandes

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.

Page 16: Desenvolvendo aplicações em Java para o Google Android - Ranieri de Souza Fernandes

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

Page 17: Desenvolvendo aplicações em Java para o Google Android - Ranieri de Souza Fernandes

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

Page 18: Desenvolvendo aplicações em Java para o Google Android - Ranieri de Souza Fernandes

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?

Page 19: Desenvolvendo aplicações em Java para o Google Android - Ranieri de Souza Fernandes

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

Page 20: Desenvolvendo aplicações em Java para o Google Android - Ranieri de Souza Fernandes

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

Page 21: Desenvolvendo aplicações em Java para o Google Android - Ranieri de Souza Fernandes

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

Page 22: Desenvolvendo aplicações em Java para o Google Android - Ranieri de Souza Fernandes

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

Page 23: Desenvolvendo aplicações em Java para o Google Android - Ranieri de Souza Fernandes

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 sub­packagesbut not sub­packages● org.xml.sax ­ Simple API for XMLorg.xml.sax ­ Simple API for XML

Android API vs Java APIAndroid API vs Java APIPacotes SuportadosPacotes Suportados

Page 24: Desenvolvendo aplicações em Java para o Google Android - Ranieri de Souza Fernandes

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

Page 25: Desenvolvendo aplicações em Java para o Google Android - Ranieri de Souza Fernandes

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.* 

– sub­packagessub­packages

Page 26: Desenvolvendo aplicações em Java para o Google Android - Ranieri de Souza Fernandes

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)

Page 27: Desenvolvendo aplicações em Java para o Google Android - Ranieri de Souza Fernandes

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?

Page 28: Desenvolvendo aplicações em Java para o Google Android - Ranieri de Souza Fernandes

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 

Page 29: Desenvolvendo aplicações em Java para o Google Android - Ranieri de Souza Fernandes

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

Page 30: Desenvolvendo aplicações em Java para o Google Android - Ranieri de Souza Fernandes

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

Page 31: Desenvolvendo aplicações em Java para o Google Android - Ranieri de Souza Fernandes

Desenvolvendo aplicações em Java para o Google AndroidDesenvolvendo aplicações em Java para o Google Android

TchelinuxTchelinux12/11/08 31

ArquiteturaArquitetura

Page 32: Desenvolvendo aplicações em Java para o Google Android - Ranieri de Souza Fernandes

Desenvolvendo aplicações em Java para o Google AndroidDesenvolvendo aplicações em Java para o Google Android

TchelinuxTchelinux12/11/08 32

Android ­ ArquiteturaAndroid ­ Arquitetura

Page 33: Desenvolvendo aplicações em Java para o Google Android - Ranieri de Souza Fernandes

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

Page 34: Desenvolvendo aplicações em Java para o Google Android - Ranieri de Souza Fernandes

Desenvolvendo aplicações em Java para o Google AndroidDesenvolvendo aplicações em Java para o Google Android

TchelinuxTchelinux12/11/08 34

Android ­ ArquiteturaAndroid ­ Arquitetura

Page 35: Desenvolvendo aplicações em Java para o Google Android - Ranieri de Souza Fernandes

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

Page 36: Desenvolvendo aplicações em Java para o Google Android - Ranieri de Souza Fernandes

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)

Page 37: Desenvolvendo aplicações em Java para o Google Android - Ranieri de Souza Fernandes

Desenvolvendo aplicações em Java para o Google AndroidDesenvolvendo aplicações em Java para o Google Android

TchelinuxTchelinux12/11/08 37

Android ­ ArquiteturaAndroid ­ Arquitetura

Page 38: Desenvolvendo aplicações em Java para o Google Android - Ranieri de Souza Fernandes

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

Page 39: Desenvolvendo aplicações em Java para o Google Android - Ranieri de Souza Fernandes

Desenvolvendo aplicações em Java para o Google AndroidDesenvolvendo aplicações em Java para o Google Android

TchelinuxTchelinux12/11/08 39

Android ­ ArquiteturaAndroid ­ Arquitetura

Page 40: Desenvolvendo aplicações em Java para o Google Android - Ranieri de Souza Fernandes

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

Page 41: Desenvolvendo aplicações em Java para o Google Android - Ranieri de Souza Fernandes

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

Page 42: Desenvolvendo aplicações em Java para o Google Android - Ranieri de Souza Fernandes

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

Page 43: Desenvolvendo aplicações em Java para o Google Android - Ranieri de Souza Fernandes

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. 

Page 44: Desenvolvendo aplicações em Java para o Google Android - Ranieri de Souza Fernandes

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)

Page 45: Desenvolvendo aplicações em Java para o Google Android - Ranieri de Souza Fernandes

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

Page 46: Desenvolvendo aplicações em Java para o Google Android - Ranieri de Souza Fernandes

Desenvolvendo aplicações em Java para o Google AndroidDesenvolvendo aplicações em Java para o Google Android

TchelinuxTchelinux12/11/08 46

Page 47: Desenvolvendo aplicações em Java para o Google Android - Ranieri de Souza Fernandes

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/

Page 48: Desenvolvendo aplicações em Java para o Google Android - Ranieri de Souza Fernandes

Desenvolvendo aplicações em Java para o Google AndroidDesenvolvendo aplicações em Java para o Google Android

TchelinuxTchelinux12/11/08 48

Android SDKAndroid SDK

Page 49: Desenvolvendo aplicações em Java para o Google Android - Ranieri de Souza Fernandes

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)

Page 50: Desenvolvendo aplicações em Java para o Google Android - Ranieri de Souza Fernandes

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

Page 51: Desenvolvendo aplicações em Java para o Google Android - Ranieri de Souza Fernandes

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

Page 52: Desenvolvendo aplicações em Java para o Google Android - Ranieri de Souza Fernandes

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

Page 53: Desenvolvendo aplicações em Java para o Google Android - Ranieri de Souza Fernandes

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.

Page 54: Desenvolvendo aplicações em Java para o Google Android - Ranieri de Souza Fernandes

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/hello­android.htmlhttp://code.google.com/android/intro/hello­android.html

Page 55: Desenvolvendo aplicações em Java para o Google Android - Ranieri de Souza Fernandes

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/

Page 56: Desenvolvendo aplicações em Java para o Google Android - Ranieri de Souza Fernandes

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/hello­android.htmlhttp://code.google.com/android/intro/hello­android.html

Page 57: Desenvolvendo aplicações em Java para o Google Android - Ranieri de Souza Fernandes

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..

Page 58: Desenvolvendo aplicações em Java para o Google Android - Ranieri de Souza Fernandes

Desenvolvendo aplicações em Java para o Google AndroidDesenvolvendo aplicações em Java para o Google Android

TchelinuxTchelinux12/11/08 58

Macintosh X IBM­PCMacintosh X IBM­PC

● Plataforma FechadaPlataforma Fechada● Um fornecedorUm fornecedor● Considerado o melhorConsiderado o melhor

● Plataforma AbertaPlataforma Aberta● Varios fornecedoresVarios fornecedores● Dominou o mercadoDominou o mercado

Page 59: Desenvolvendo aplicações em Java para o Google Android - Ranieri de Souza Fernandes

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... :(

Page 60: Desenvolvendo aplicações em Java para o Google Android - Ranieri de Souza Fernandes

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

● ??????????????

Page 61: Desenvolvendo aplicações em Java para o Google Android - Ranieri de Souza Fernandes

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....

Page 62: Desenvolvendo aplicações em Java para o Google Android - Ranieri de Souza Fernandes

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

Page 63: Desenvolvendo aplicações em Java para o Google Android - Ranieri de Souza Fernandes

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

Page 64: Desenvolvendo aplicações em Java para o Google Android - Ranieri de Souza Fernandes

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

– Hewlett­PackardHewlett­Packard

– IBMIBM

– IntelIntel

– OracleOracle

– Red HatRed Hat

– SAPSAP

– Sun MicrosystemsSun Microsystems

Page 65: Desenvolvendo aplicações em Java para o Google Android - Ranieri de Souza Fernandes

Desenvolvendo aplicações em Java para o Google AndroidDesenvolvendo aplicações em Java para o Google Android

TchelinuxTchelinux12/11/08 65

DalvikDalvik● Interpreter­only, register based virtual machineInterpreter­only, 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 posix­compliant operating systemsRuns on posix­compliant operating systems● Looks like JavaLooks like Java● Dalvik?Dalvik?

– village of Dalvík in Icelandvillage of Dalvík in Iceland

Page 66: Desenvolvendo aplicações em Java para o Google Android - Ranieri de Souza Fernandes

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

Page 67: Desenvolvendo aplicações em Java para o Google Android - Ranieri de Souza Fernandes

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 just­in­timeCompilador just­in­time

Dalvik não possui J I T !!!Dalvik não possui J I T !!!

Page 68: Desenvolvendo aplicações em Java para o Google Android - Ranieri de Souza Fernandes

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

Page 69: Desenvolvendo aplicações em Java para o Google Android - Ranieri de Souza Fernandes

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

Page 70: Desenvolvendo aplicações em Java para o Google Android - Ranieri de Souza Fernandes

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

Page 71: Desenvolvendo aplicações em Java para o Google Android - Ranieri de Souza Fernandes

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

Page 72: Desenvolvendo aplicações em Java para o Google Android - Ranieri de Souza Fernandes

Desenvolvendo aplicações em Java para o Google AndroidDesenvolvendo aplicações em Java para o Google Android

TchelinuxTchelinux12/11/08 72

Garbage CollectorGarbage Collector

Page 73: Desenvolvendo aplicações em Java para o Google Android - Ranieri de Souza Fernandes

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!

Page 74: Desenvolvendo aplicações em Java para o Google Android - Ranieri de Souza Fernandes

Desenvolvendo aplicações em Java para o Google AndroidDesenvolvendo aplicações em Java para o Google Android

TchelinuxTchelinux12/11/08 74

Obrigado !!!Obrigado !!!

Page 75: Desenvolvendo aplicações em Java para o Google Android - Ranieri de Souza Fernandes

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/posgraduacao­ddm.htmhttp://www.fatecjp.com.br/posgraduacao/posgraduacao­ddm.htm

✔ http://www­di.inf.puc­rio.br/~endler/courses/Mobile/Tarefas/MAP­slides/http://www­di.inf.puc­rio.br/~endler/courses/Mobile/Tarefas/MAP­slides/

✔ http://www.android­br.mobi/http://www.android­br.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/