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

13.669 visualizações

Publicada em

Publicada em: Tecnologia, Educação
0 comentários
6 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
13.669
No SlideShare
0
A partir de incorporações
0
Número de incorporações
445
Ações
Compartilhamentos
0
Downloads
327
Comentários
0
Gostaram
6
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

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

  1. 1. Desenvolvendo aplicações em Java para o Google Android Desenvolvendo aplicações em  Java para o  Google Android Ranieri de Souza Fernandes Tchelinux
  2. 2. Desenvolvendo aplicações em Java para o Google Android O Palestrante ranieri@dev.java.net Tchelinux 12/11/08 2
  3. 3. Desenvolvendo aplicações em Java para o Google Android Android, como começou? Tchelinux 12/11/08 3
  4. 4. Desenvolvendo aplicações em Java para o Google Android Android, como começou? ● Julho de 2005, Google adquire a Android Inc,  com sede em Palo Alto, CA. ● Objetivos – Desenvolver um OS para dispositivos móveis  baseado em Linux – Terá como premissa proporcionar uma estrutura  flexível e atualizável ● Começam os rumores que ao Google planeja  entrar no mercado de telefonia móvel... Tchelinux 12/11/08 4
  5. 5. Desenvolvendo aplicações em Java para o Google Android Porque dispositivos móveis? ● O crescimento de dispositivos móveis, ligados a  rede é maior que o de PC's... ● Pessoas com o primeiro contato com a web via  celular... ● Todos terão um... Tchelinux 12/11/08 5
  6. 6. Desenvolvendo aplicações em Java para o Google Android Android, como apareceu? ● Dia 5 de novembro de 2007, a Open Handset  Alliance, foi anunciada. – Consorcio formado por empresas como, Google,  HTC, Intel, Motorola, Qualcomm, T­Mobile, Sprint  Nextel e NVIDIA (mais de 30 empresas) – Seu objetivo é desenvolver padrões abertos para os  dispositivos móveis – Anunciou seu primeiro produto o Android,  construído sobre o sistema operacional Linux Tchelinux 12/11/08 6
  7. 7. Desenvolvendo aplicações em Java para o Google Android Depois do anuncio... ● Dia 12 de Novembro de 2007 ­ primeira versão do SDK ● De Janeiro a Agosto de 2008 ­ Android Developer Challenge I ● Dia 18 Agosto de 2008 ­ Android 0.9 SDK beta released ● Dia 28 Agosto de 2008 ­ apresentação para o mercado ● Dia 23 Setembro de 2008 ­ Android 1.0 SDK Release 1  ● Dia 21 de Outubro de 2008 ­ Código fonte disponibilizado  ● Dia 22 de Outubro de 2008 ­ aparelho com Android 1.0 a venda (G1) ● Q4 2008 – Anúncio do Android Developer Challenge II Tchelinux 12/11/08 7
  8. 8. Desenvolvendo aplicações em Java para o Google Android ?Android? ● Um sistema operacional? ● Um middleware? ● Um framework? ● Um conjunto de aplicações? Tchelinux 12/11/08 8
  9. 9. Desenvolvendo aplicações em Java para o Google Android ?Android? ● Um SDK? – Tem projetos – Tem ferramentas de desenvolvimento – Tem um emulador – Tem um conjunto de bibliotecas Tchelinux 12/11/08 9
  10. 10. Desenvolvendo aplicações em Java para o Google Android ?Android? ● Tem uma linguagem de programação? – Java ● Tem uma máquina virtual? – Dalvik (Kernel GNU/Linux) Tchelinux 12/11/08 10
  11. 11. Desenvolvendo aplicações em Java para o Google Android ?Android? É tudo isto.... É uma Plataforma aberta  para dispositivos móveis!!! Tchelinux 12/11/08 11
  12. 12. Desenvolvendo aplicações em Java para o Google Android Licenças ● “The platform also includes a modified version  of the Linux Kernel, which is distributed under  the GNU's General Public License (GPL).” ● “The source code released today also includes  Google's Dalvik virtual machine and Java­based  middleware layer, which are distributed under  version 2 of the Apache Software License  (ASL).“ Tchelinux 12/11/08 12
  13. 13. Desenvolvendo aplicações em Java para o Google Android Licenças ✔ Licenças de Software Livre: • GPL (General Public License) • BSD (Berkeley Software Distribution) • Mozilla • Apache • etc ... Tchelinux
  14. 14. Desenvolvendo aplicações em Java para o Google Android Tchelinux
  15. 15. Desenvolvendo aplicações em Java para o Google Android Porque licença Apache (ASL)? ● We took a close look earlier this year at why  Google chose the ASL for its Android userspace  components and pointed out that its  permissiveness will encourage commercial  adoption and allow handset makers to create  proprietary enhancements on top of the  technology. Tchelinux 12/11/08 15
  16. 16. Desenvolvendo aplicações em Java para o Google Android Então, é Open Source! ● Apache 2.0  ● GPL v2 (kernel) ● Repositório Git  ● Fontes: http://source.android.com Tchelinux 12/11/08 16
  17. 17. Desenvolvendo aplicações em Java para o Google Android Aberto ● Em três pontos de vista (três reis): – Industria: Licença Apache 2.0 – Usuários: Controle total – Desenvolvedor: não precisa pedir permissão Tchelinux 12/11/08 17
  18. 18. Desenvolvendo aplicações em Java para o Google Android E o Java ME? Tchelinux 12/11/08 18
  19. 19. Desenvolvendo aplicações em Java para o Google Android Java ME ● Subset do JSE, utilizada para ambientes  embedded ● É a tecnologia mais utilizada no mundo para  dispositivos embedded ● Pode rodar numa infinidade de dispositivos:  telefones celulares, PDA's, TV's, impressoras,  etc... ● Recursos nivelados por baixo ● Industria: problemas com licenças Tchelinux 12/11/08 19
  20. 20. Desenvolvendo aplicações em Java para o Google Android Android API vs Java API Pacotes Suportados ● java.io ­ File and stream I/O ● java.lang (except java.lang.management) ­ Language and  exception support ● java.math ­ Big numbers, rounding, precision ● java.net ­ Network I/O, URLs, sockets ● java.nio ­ File and channel I/O Tchelinux 12/11/08 20
  21. 21. Desenvolvendo aplicações em Java para o Google Android Android API vs Java API Pacotes Suportados ● java.security ­ Authorization, certificates, public keys ● java.sql ­ Database interfaces ● java.text ­ Formatting, natural language, collation ● java.util ­ Lists, maps, sets, arrays, collections – including java.util.concurrent Tchelinux 12/11/08 21
  22. 22. Desenvolvendo aplicações em Java para o Google Android Android API vs Java API Pacotes Suportados ● javax.crypto ­ Ciphers, public keys ● javax.net ­ Socket factories, SSL ● javax.security except: – javax.security.auth.kerberos – javax.security.auth.spi – javax.security.sasl ● javax.sound ­ Music and sound effects Tchelinux 12/11/08 22
  23. 23. Desenvolvendo aplicações em Java para o Google Android Android API vs Java API Pacotes Suportados ● javax.sql ­ More database interfaces – except javax.sql.rowset ● javax.xml.parsers ­ XML parsing ● org.w3c.dom ­ DOM nodes and elements – but not sub­packages ● org.xml.sax ­ Simple API for XML Tchelinux 12/11/08 23
  24. 24. Desenvolvendo aplicações em Java para o Google Android Android API vs Java API Pacotes não Suportados ● java.applet ● javax.accessibility ● java.awt ● javax.activity ● java.beans ● javax.imageio ● java.lang.management ● javax.management ● java.rmi ● javax.naming Tchelinux 12/11/08 24
  25. 25. Desenvolvendo aplicações em Java para o Google Android Android API vs Java API Pacotes não Suportados ● javax.print ● javax.xml  ● javax.rmi – except javax.xml.parsers ● javax.security.auth.kerberos ● org.ietf.* ● javax.security.auth.spi ● org.omg.* ● javax.security.sasl ● org.w3c.dom.*  ● javax.swing – sub­packages ● javax.transaction Tchelinux 12/11/08 25
  26. 26. Desenvolvendo aplicações em Java para o Google Android Android API Pacotes Suportados (não JSE) ● org.apache.commons.codec – Utilities for encoding and decoding ● org.apache.commons.httpclient – HTTP authentication, cookies, methods, and  protocolorg.bluez ­ Bluetooth support ● org.json ­ JavaScript Object Notation Tchelinux 12/11/08 26
  27. 27. Desenvolvendo aplicações em Java para o Google Android Mas... Porque o Google  escolheu Java? Tchelinux
  28. 28. Desenvolvendo aplicações em Java para o Google Android Software Livre e Java ✔ Freshmeat ranking de linguagens ✔ 1­ C  (9223 projetos)   ✔ 2­ Java  (6225 projetos)   ✔ 3­ C++  (5156 projects)   ✔ Portal java.net ✔ Projetos   ✔ Grupos de usuários ✔ Fóruns  Tchelinux 12/11/08 28
  29. 29. Desenvolvendo aplicações em Java para o Google Android Adoção do Java TIOBE Programming Community Index for October 2008 Tchelinux 12/11/08 29
  30. 30. Desenvolvendo aplicações em Java para o Google Android Adoção do Java TIOBE Programming Community Index for October 2008 Tchelinux 12/11/08 30
  31. 31. Desenvolvendo aplicações em Java para o Google Android Arquitetura Tchelinux 12/11/08 31
  32. 32. Desenvolvendo aplicações em Java para o Google Android Android ­ Arquitetura Tchelinux 12/11/08 32
  33. 33. Desenvolvendo aplicações em Java para o Google Android Linux Kernel ● Versão do kernel: 2.6     – Camada de  de abstração entre o hardware e o resto da  pilha de software – Segurança – Gerenciamento de memória – Gerenciamento de processos – Protocolos de rede – Modelo de drivers Tchelinux 12/11/08 33
  34. 34. Desenvolvendo aplicações em Java para o Google Android Android ­ Arquitetura Tchelinux 12/11/08 34
  35. 35. Desenvolvendo aplicações em Java para o Google Android Bibliotecas ● Andróid inclui um conjunto de bibliotecas C/C++ usadas por  diversos componentes do sistema: ●  System C Library ● SGL ●  Media Libraries ● 3D Libraries ● Surface Manager ● FreeType ● LibWebCore ● SQLite Tchelinux 12/11/08 35
  36. 36. Desenvolvendo aplicações em Java para o Google Android Runtime ● Aplicação Android: – É um processo Linux – Própria instância da máquina vitual Dalvik ● Executa arquivos .dex (ferramenta dx) Tchelinux 12/11/08 36
  37. 37. Desenvolvendo aplicações em Java para o Google Android Android ­ Arquitetura Tchelinux 12/11/08 37
  38. 38. Desenvolvendo aplicações em Java para o Google Android Framework ● View ● Content Providers ● Resource Manager ● Notification Manager ● Ativity Manager Tchelinux 12/11/08 38
  39. 39. Desenvolvendo aplicações em Java para o Google Android Android ­ Arquitetura Tchelinux 12/11/08 39
  40. 40. Desenvolvendo aplicações em Java para o Google Android Aplicações ● Cliente de email  ● Mapas ● Programa SMS   ● Navegador ● Calendário   ● Contatos ...      Tchelinux 12/11/08 40
  41. 41. Desenvolvendo aplicações em Java para o Google Android S D K Tchelinux 12/11/08 41
  42. 42. Desenvolvendo aplicações em Java para o Google Android Android SDK ● O Android SDK é formado por: – Ferramentas de linha de comando – Debugger – Libraries – Emulador (baseado no QEMU) – Documentação  – Códigos de exemplo – Tutoriais Tchelinux 12/11/08 42
  43. 43. Desenvolvendo aplicações em Java para o Google Android Android SDK ● É suportado em plataformas baseadas em x86 – Linux (qualquer distribuição) – Mac OS X 10.4.8 or later,  – Windows XP or Vista.  Tchelinux 12/11/08 43
  44. 44. Desenvolvendo aplicações em Java para o Google Android Android SDK ● Depende de: – JDK ­ Java Development Kit – Apache Ant – Python 2.2 or later.  ● IDE oficial – Eclipse 3.2 or later – Android Development Tools (ADT) Plugin ● Não é compatível com o Gnu Compiler for Java (gcj) Tchelinux 12/11/08 44
  45. 45. Desenvolvendo aplicações em Java para o Google Android Android SDK ● Ferramentas de linha de comando – emulator  – Android emulator – aapt – Android asset packaging tool – adb  – Android debug bridge – aidl  – Android IDL compiler Tchelinux 12/11/08 45
  46. 46. Desenvolvendo aplicações em Java para o Google Android Tchelinux 12/11/08 46
  47. 47. Desenvolvendo aplicações em Java para o Google Android Android SDK ● Para os fans do NetBeans IDE – Android plugin for NetBeans (unandroid) – http://kenai.com/projects/nbandroid/ Tchelinux 12/11/08 47
  48. 48. Desenvolvendo aplicações em Java para o Google Android Android SDK Tchelinux 12/11/08 48
  49. 49. Desenvolvendo aplicações em Java para o Google Android Suas Caracteristicas... ● Application Framewok: torna possível o reuso e a substituição  de componentes ● Máquina virtual Dalvik: Otimizada para rodar em dispositivos  móveis ● Navegador integrado: Baseado no WebKit, mesmo que o   Chrome e Safari ● Otimização gráfica:  – Bibliotecas 2D – Gráficos 3D (OpenGL 1.0) ● SQLite: Para persistência de dados ● Suporte para mídias: Aúdio, vídeo, formatos de imagens  (MPEG4, H.264, MP3, AAC, AMR, JPG, PNG e GIF) Tchelinux 12/11/08 49
  50. 50. Desenvolvendo aplicações em Java para o Google Android Suas Caracteristicas... ● Dependente do hardware: – GPRS/GSM e EDGE – Bluetooth – Telefonia 3G – WiFi – Câmera – GPS – Bússola – Acelerômetro Tchelinux 12/11/08 50
  51. 51. Desenvolvendo aplicações em Java para o Google Android Emulador ● Emula o hardware (QEMU) ● Não possui suporte: – Fazer e receber chamadas – Captura de foto/áudio/vídeo – Nível da bateria – Bluetooth Tchelinux 12/11/08 51
  52. 52. Desenvolvendo aplicações em Java para o Google Android Instalando o SDK ● http://code.google.com/android/intro/installing.html Tchelinux 12/11/08 52
  53. 53. Desenvolvendo aplicações em Java para o Google Android Aplicação Android ● Existem 4 tipos básicos de elementos: – Activities – Intents e IntentFilters ( BroadcastReceivers) – Services – Content Providers ● Os componentes que compõe a aplicação estão no  AndroidManifest.xml. Tchelinux 12/11/08 53
  54. 54. Desenvolvendo aplicações em Java para o Google Android Hello World! ● http://code.google.com/android/intro/hello­android.html Tchelinux 12/11/08 54
  55. 55. Desenvolvendo aplicações em Java para o Google Android Ferramenta ● DroidDraw – editor de telas – http://www.droiddraw.org/ Tchelinux 12/11/08 55
  56. 56. Desenvolvendo aplicações em Java para o Google Android Hello World! Melhorado... ● http://code.google.com/android/intro/hello­android.html Tchelinux 12/11/08 56
  57. 57. Desenvolvendo aplicações em Java para o Google Android Em um passado não muito distante.... A concorrência.. Tchelinux 12/11/08 57
  58. 58. Desenvolvendo aplicações em Java para o Google Android Macintosh X IBM­PC ● Plataforma Fechada ● Plataforma Aberta ● Um fornecedor ● Varios fornecedores ● Considerado o melhor ● Dominou o mercado Tchelinux 12/11/08 58
  59. 59. Desenvolvendo aplicações em Java para o Google Android Mac brasileiro ● Mac512 Unitron – primeiro clone de um  Macintosh feito no mundo... ● Não podemos usá­lo... :( Tchelinux 12/11/08 59
  60. 60. Desenvolvendo aplicações em Java para o Google Android IPhone X Android ● Plataforma Fechada ● Plataforma Aberta ● Um fornecedor ● Varios fornecedores ● Considerado o melhor ● ??????? Tchelinux 12/11/08 60
  61. 61. Desenvolvendo aplicações em Java para o Google Android SDK Concorrência ● É lançado e disponibilizado o SDK do Android ● Logo depois... o SDK do Iphone ● Quem ganha? Nós.... Tchelinux 12/11/08 61
  62. 62. Desenvolvendo aplicações em Java para o Google Android Android não é Java ● Não executa bytecodes – Execura arqquivos dex ● Não possui JVM (????) – Dalvik não é uma JVM ● Não segue as especificações do JCP Tchelinux 12/11/08 62
  63. 63. Desenvolvendo aplicações em Java para o Google Android JCP ­ Quem “manda” no Java ● JCP – Java Community Process ● Qualquer um pode participar (JSR's) ● O processo é aberto (papel da Sun) ● Compatibility Test Suite: mais de 5000 itens Tchelinux 12/11/08 63
  64. 64. Desenvolvendo aplicações em Java para o Google Android Membros JCP – Apache Software Foundation – BEA Systems – Borland – Google – Fujitsu Limited – Hewlett­Packard – IBM – Intel – Oracle – Red Hat – SAP – Sun Microsystems Tchelinux 12/11/08 64
  65. 65. Desenvolvendo aplicações em Java para o Google Android Dalvik ● Interpreter­only, register based virtual machine – Dan Bornstein ● Optimized to run multiple VM instances ● Executes files in .dex format ● Runs on posix­compliant operating systems ● Looks like Java ● Dalvik? – village of Dalvík in Iceland Tchelinux 12/11/08 65
  66. 66. Desenvolvendo aplicações em Java para o Google Android Dalvik – Jar x Dex Tchelinux 12/11/08 66
  67. 67. Desenvolvendo aplicações em Java para o Google Android JVM – O segredo do desempenho J I T  Compilador just­in­time Dalvik não possui J I T !!! Tchelinux
  68. 68. Desenvolvendo aplicações em Java para o Google Android JVM – O segredo do desempenho Tchelinux
  69. 69. Desenvolvendo aplicações em Java para o Google Android Dalvik – sem JIT ● Geralmente não precisa ● Lotes de código nativo ● Sistema proporciona libs para gráficos, mídia ● JNI disponível ● Suporte a hardware comum (gráficos, áudio) – Dan Bornstein Tchelinux
  70. 70. Desenvolvendo aplicações em Java para o Google Android Garbage Collector ● Mais de uma referência pode apontar para o  mesmo objeto Tchelinux 12/11/08 70
  71. 71. Desenvolvendo aplicações em Java para o Google Android Garbage Collector ● Se o objeto não possui referências, está  liberado para o coletor de lixo Tchelinux 12/11/08 71
  72. 72. Desenvolvendo aplicações em Java para o Google Android Garbage Collector Tchelinux 12/11/08 72
  73. 73. Desenvolvendo aplicações em Java para o Google Android GC Dalvik ● Separate process, separate heaps, separate  GCs ● GCs must be independent ● GC should respect the sharing! Tchelinux 12/11/08 73
  74. 74. Desenvolvendo aplicações em Java para o Google Android Obrigado !!! Tchelinux 12/11/08 74
  75. 75. Desenvolvendo aplicações em Java para o Google Android Bibliografia ✔ http://www.fatecjp.com.br/posgraduacao/posgraduacao­ddm.htm ✔ http://www­di.inf.puc­rio.br/~endler/courses/Mobile/Tarefas/MAP­slides/ ✔ http://www.android­br.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 ✔ http://www.droiddraw.org/ ✔ Tchelinux 12/11/08 75

×