Você está na página 1de 61

Introduo ca

Dalvik

Linux 2.6

Android
Diogo de Campos, Joo Paulo Pizani Flor, a Maur Oliveira Haensch, cio Pedro Covolan Bachiega
Universidade Federal de Santa Catarina

November 18, 2008

Introduo ca

Dalvik

Linux 2.6

Agenda

Introduo ca

Dalvik

Linux 2.6

Introduo ca

Dalvik

Linux 2.6

Introduo ca

O que Android? e Caracter sticas Bsicas a Arquitetura

Introduo ca

Dalvik

Linux 2.6

Introduo ca

O que Android? e Caracter sticas Bsicas a Arquitetura

Introduo ca

Dalvik

Linux 2.6

Introduo ca

O que Android? e Caracter sticas Bsicas a Arquitetura

Introduo ca

Dalvik

Linux 2.6

O que Android? e

O Android E uma plataforma para dispositivos mveis que inclui sistema o operacional, middleware e aplicaes chave. co Google + Open Handset Alliance A plataforma Android e ser mantida por um grupo de 33 e a empresas, chamado Open Handset Alliance. So empresas de a dispositivos mveis, operadoras, software, semicondutores e o comercializao que esto juntas na criao da primeira plataforma ca a ca mvel completa, aberta e livre. o

Introduo ca

Dalvik

Linux 2.6

O que Android? e

O Android E uma plataforma para dispositivos mveis que inclui sistema o operacional, middleware e aplicaes chave. co Google + Open Handset Alliance A plataforma Android e ser mantida por um grupo de 33 e a empresas, chamado Open Handset Alliance. So empresas de a dispositivos mveis, operadoras, software, semicondutores e o comercializao que esto juntas na criao da primeira plataforma ca a ca mvel completa, aberta e livre. o

Introduo ca

Dalvik

Linux 2.6

Caracter sticas Bsicas a


Dalvik As aplicaes so feitas em Java (no JavaME) e rodam na co a a mquina virtual Dalvik. a Independente de hardware Possui suporte multim de udio, v dia a deo e imagem (MP3, AAC, MPEG, H.264, JPG, PNG, GIF), alm de um browser baseado no e Webkit Engine (mesmo do safari), tambm otimizado (Two Pass e Layout, Frame Flattening). Dependente de hardware Touchscreen, Bluetooth, Telefonia GSM, Camera, GPS, 3G, WiFi, Bssola, acelermetro... u o

Introduo ca

Dalvik

Linux 2.6

Caracter sticas Bsicas a


Dalvik As aplicaes so feitas em Java (no JavaME) e rodam na co a a mquina virtual Dalvik. a Independente de hardware Possui suporte multim de udio, v dia a deo e imagem (MP3, AAC, MPEG, H.264, JPG, PNG, GIF), alm de um browser baseado no e Webkit Engine (mesmo do safari), tambm otimizado (Two Pass e Layout, Frame Flattening). Dependente de hardware Touchscreen, Bluetooth, Telefonia GSM, Camera, GPS, 3G, WiFi, Bssola, acelermetro... u o

Introduo ca

Dalvik

Linux 2.6

Caracter sticas Bsicas a


Dalvik As aplicaes so feitas em Java (no JavaME) e rodam na co a a mquina virtual Dalvik. a Independente de hardware Possui suporte multim de udio, v dia a deo e imagem (MP3, AAC, MPEG, H.264, JPG, PNG, GIF), alm de um browser baseado no e Webkit Engine (mesmo do safari), tambm otimizado (Two Pass e Layout, Frame Flattening). Dependente de hardware Touchscreen, Bluetooth, Telefonia GSM, Camera, GPS, 3G, WiFi, Bssola, acelermetro... u o

Introduo ca

Dalvik

Linux 2.6

Arquitetura

Introduo ca

Dalvik

Linux 2.6

Arquitetura

Applications Essa camada conta com diversos tipos de aplicaoes (cliente de c e-mail, calendrio, mapas, browser, servio SMS, agenda de a c contatos, etc). Todas as aplicaes so escritas em Java. co a Application Framework Os desenvolvedores tm acesso ao mesmo framework de APIs e utilizado para as aplicaes do Android. Esse framework contm co e um conjunto de componentes grcos, provedores de contedo, a u gerenciadores de recursos (grcos, string, v a deos), gerenciador de noticao e um gerenciador de atividade. ca

Introduo ca

Dalvik

Linux 2.6

Arquitetura

Applications Essa camada conta com diversos tipos de aplicaoes (cliente de c e-mail, calendrio, mapas, browser, servio SMS, agenda de a c contatos, etc). Todas as aplicaes so escritas em Java. co a Application Framework Os desenvolvedores tm acesso ao mesmo framework de APIs e utilizado para as aplicaes do Android. Esse framework contm co e um conjunto de componentes grcos, provedores de contedo, a u gerenciadores de recursos (grcos, string, v a deos), gerenciador de noticao e um gerenciador de atividade. ca

Introduo ca

Dalvik

Linux 2.6

Arquitetura
Libraries Android contm uma srie de bibliotecas de C/C++, que so e e a utilizadas por vrios componentes do sistema. Algumas bibliotecas a so: biblioteca padro C otimizada para embarcados, SQLite, a a bibliotecas de m dia, gerenciador de superf cie. Todas as funcionalidades so repassadas ao usurio atravs do framework. a a e Android Runtime Cada aplicao do Android roda seu prprio processo em uma ca o instncia da mquina virtual Dalvik. Essa VM foi escrita para ser a a rodada ecientemente com mltiplas instncias e executa arquivos u a .dex (Dalvik Executable), que uma espcie de bytecode Java e e omitizado para o Android.

Introduo ca

Dalvik

Linux 2.6

Arquitetura
Libraries Android contm uma srie de bibliotecas de C/C++, que so e e a utilizadas por vrios componentes do sistema. Algumas bibliotecas a so: biblioteca padro C otimizada para embarcados, SQLite, a a bibliotecas de m dia, gerenciador de superf cie. Todas as funcionalidades so repassadas ao usurio atravs do framework. a a e Android Runtime Cada aplicao do Android roda seu prprio processo em uma ca o instncia da mquina virtual Dalvik. Essa VM foi escrita para ser a a rodada ecientemente com mltiplas instncias e executa arquivos u a .dex (Dalvik Executable), que uma espcie de bytecode Java e e omitizado para o Android.

Introduo ca

Dalvik

Linux 2.6

Arquitetura

Linux Kernel O Android utiliza parte do Kernel 2.6 do Linux, que responsvel e a por funes como segurana, gerenciamento de memria, co c o gerenciamento de processos, pilha de protocolos de rede e mdulos. o O Kernel tambm funciona como uma camada de abstrao entre e ca o hardware e o restante das camadas previamente citadas.

Introduo ca

Dalvik

Linux 2.6

Agenda

Introduo ca

Dalvik

Linux 2.6

Introduo ca

Dalvik

Linux 2.6

Dalvik

A mquina virtual Dalvik a Por que no JVM? a Zygote

Introduo ca

Dalvik

Linux 2.6

Dalvik

A mquina virtual Dalvik a Por que no JVM? a Zygote

Introduo ca

Dalvik

Linux 2.6

Dalvik

A mquina virtual Dalvik a Por que no JVM? a Zygote

Introduo ca

Dalvik

Linux 2.6

A mquina virtual Dalvik a

Origem Desenvolvida por Dan Bornstein e outros engenheiros da Google, especicamente para o Android. Foi projetada para rodar em sistemas com baixa frequncia, pouca RAM e SO sem espao para e c swap. Caracter sticas E uma mquina virtual de registradores. Cada aplicao roda em a ca uma instncia da Dalvik, instanciadas a partir do Zygote. a

Introduo ca

Dalvik

Linux 2.6

A mquina virtual Dalvik a

Origem Desenvolvida por Dan Bornstein e outros engenheiros da Google, especicamente para o Android. Foi projetada para rodar em sistemas com baixa frequncia, pouca RAM e SO sem espao para e c swap. Caracter sticas E uma mquina virtual de registradores. Cada aplicao roda em a ca uma instncia da Dalvik, instanciadas a partir do Zygote. a

Introduo ca

Dalvik

Linux 2.6

Por que no JVM? a

Deve ser rpido e eciente. a A Dalvik roda seu prprio bytecode. o Arquivos .class so convertidos para .dex a Ocupa metade do espao que um .class Java. c Carrega mais rpido. a Futuro: converso de outras linguagens para .dex a

Introduo ca

Dalvik

Linux 2.6

Por que no JVM? a

Deve ser rpido e eciente. a A Dalvik roda seu prprio bytecode. o Arquivos .class so convertidos para .dex a Ocupa metade do espao que um .class Java. c Carrega mais rpido. a Futuro: converso de outras linguagens para .dex a

Introduo ca

Dalvik

Linux 2.6

Por que no JVM? a

Deve ser rpido e eciente. a A Dalvik roda seu prprio bytecode. o Arquivos .class so convertidos para .dex a Ocupa metade do espao que um .class Java. c Carrega mais rpido. a Futuro: converso de outras linguagens para .dex a

Introduo ca

Dalvik

Linux 2.6

Por que no JVM? a

Deve ser rpido e eciente. a A Dalvik roda seu prprio bytecode. o Arquivos .class so convertidos para .dex a Ocupa metade do espao que um .class Java. c Carrega mais rpido. a Futuro: converso de outras linguagens para .dex a

Introduo ca

Dalvik

Linux 2.6

Por que no JVM? a

Deve ser rpido e eciente. a A Dalvik roda seu prprio bytecode. o Arquivos .class so convertidos para .dex a Ocupa metade do espao que um .class Java. c Carrega mais rpido. a Futuro: converso de outras linguagens para .dex a

Introduo ca

Dalvik

Linux 2.6

Por que no JVM? a

Deve ser rpido e eciente. a A Dalvik roda seu prprio bytecode. o Arquivos .class so convertidos para .dex a Ocupa metade do espao que um .class Java. c Carrega mais rpido. a Futuro: converso de outras linguagens para .dex a

Introduo ca

Dalvik

Linux 2.6

Zygote

Processo gerador das instncias da Dalvik. a

E iniciado no boot do Kernel (init).


Outras mquinas so instanciadas com fork() quando a a

necssrio. a
No Zygote, so mapeadas as bibliotecas compartilhadas das a

aplicaes. co
Para evitar inconsistncia de dados, so acessadas em modo e a

somente leitura.

Introduo ca

Dalvik

Linux 2.6

Zygote

Processo gerador das instncias da Dalvik. a

E iniciado no boot do Kernel (init).


Outras mquinas so instanciadas com fork() quando a a

necssrio. a
No Zygote, so mapeadas as bibliotecas compartilhadas das a

aplicaes. co
Para evitar inconsistncia de dados, so acessadas em modo e a

somente leitura.

Introduo ca

Dalvik

Linux 2.6

Zygote

Processo gerador das instncias da Dalvik. a

E iniciado no boot do Kernel (init).


Outras mquinas so instanciadas com fork() quando a a

necssrio. a
No Zygote, so mapeadas as bibliotecas compartilhadas das a

aplicaes. co
Para evitar inconsistncia de dados, so acessadas em modo e a

somente leitura.

Introduo ca

Dalvik

Linux 2.6

Zygote

Processo gerador das instncias da Dalvik. a

E iniciado no boot do Kernel (init).


Outras mquinas so instanciadas com fork() quando a a

necssrio. a
No Zygote, so mapeadas as bibliotecas compartilhadas das a

aplicaes. co
Para evitar inconsistncia de dados, so acessadas em modo e a

somente leitura.

Introduo ca

Dalvik

Linux 2.6

Zygote

Processo gerador das instncias da Dalvik. a

E iniciado no boot do Kernel (init).


Outras mquinas so instanciadas com fork() quando a a

necssrio. a
No Zygote, so mapeadas as bibliotecas compartilhadas das a

aplicaes. co
Para evitar inconsistncia de dados, so acessadas em modo e a

somente leitura.

Introduo ca

Dalvik

Linux 2.6

Zygote

Introduo ca

Dalvik

Linux 2.6

Agenda

Introduo ca

Dalvik

Linux 2.6

Introduo ca

Dalvik

Linux 2.6

Linux 2.6

Por que Linux? Glibc e Bionic Libc Sobre o Binder AIDL Gerenciamento de Energia

Introduo ca

Dalvik

Linux 2.6

Linux 2.6

Por que Linux? Glibc e Bionic Libc Sobre o Binder AIDL Gerenciamento de Energia

Introduo ca

Dalvik

Linux 2.6

Linux 2.6

Por que Linux? Glibc e Bionic Libc Sobre o Binder AIDL Gerenciamento de Energia

Introduo ca

Dalvik

Linux 2.6

Linux 2.6

Por que Linux? Glibc e Bionic Libc Sobre o Binder AIDL Gerenciamento de Energia

Introduo ca

Dalvik

Linux 2.6

Linux 2.6

Por que Linux? Glibc e Bionic Libc Sobre o Binder AIDL Gerenciamento de Energia

Introduo ca

Dalvik

Linux 2.6

Por que Linux?

Bom gerenciamento de processos e memria o Modelo de segurana baseado em permisses c o Device Drivers consolidados para variados hardwares

E open-source =)

Introduo ca

Dalvik

Linux 2.6

Por que Linux?

Bom gerenciamento de processos e memria o Modelo de segurana baseado em permisses c o Device Drivers consolidados para variados hardwares

E open-source =)

Introduo ca

Dalvik

Linux 2.6

Por que Linux?

Bom gerenciamento de processos e memria o Modelo de segurana baseado em permisses c o Device Drivers consolidados para variados hardwares

E open-source =)

Introduo ca

Dalvik

Linux 2.6

Por que Linux?

Bom gerenciamento de processos e memria o Modelo de segurana baseado em permisses c o Device Drivers consolidados para variados hardwares

E open-source =)

Introduo ca

Dalvik

Linux 2.6

Glibc e Bionic Libc


Por que no glibc? a A mesma biblioteca ligada estaticamente a todos os executveis, e a portanto precisa ser rpida para melhorar o desempenho e pequena a para economizar memria. o E agora? Android implementa a Bionic libc, que menor que a glibc e e otimizada para embarcados. A bionic utiliza a licensa BSD, diferentemente da GPL utilizada pela glibc. Porm... e No suporta todas as POSIX features nem compat com a a e vel Glibc, por isso todo cdigo nativo deve ser compilado o especicamente para bionic.

Introduo ca

Dalvik

Linux 2.6

Glibc e Bionic Libc


Por que no glibc? a A mesma biblioteca ligada estaticamente a todos os executveis, e a portanto precisa ser rpida para melhorar o desempenho e pequena a para economizar memria. o E agora? Android implementa a Bionic libc, que menor que a glibc e e otimizada para embarcados. A bionic utiliza a licensa BSD, diferentemente da GPL utilizada pela glibc. Porm... e No suporta todas as POSIX features nem compat com a a e vel Glibc, por isso todo cdigo nativo deve ser compilado o especicamente para bionic.

Introduo ca

Dalvik

Linux 2.6

Glibc e Bionic Libc


Por que no glibc? a A mesma biblioteca ligada estaticamente a todos os executveis, e a portanto precisa ser rpida para melhorar o desempenho e pequena a para economizar memria. o E agora? Android implementa a Bionic libc, que menor que a glibc e e otimizada para embarcados. A bionic utiliza a licensa BSD, diferentemente da GPL utilizada pela glibc. Porm... e No suporta todas as POSIX features nem compat com a a e vel Glibc, por isso todo cdigo nativo deve ser compilado o especicamente para bionic.

Introduo ca

Dalvik

Linux 2.6

Sobre o Binder

O que Binder? e Aplicaes e servios rodam em processos separados, mas podem co c precisar compartilhar dados e se comunicar. O Binder um driver e que facilita IPC (Inter-process Communication), com alta performance em memria compartilhada. o Como funciona? Conta o nmero de referncias, assim como mapeia essas u e referncias ` objetos entre processos. Realiza chamadas s e a ncronas entre processos atravs da interface descrita pelo desenvolvedor em e AIDL.

Introduo ca

Dalvik

Linux 2.6

Sobre o Binder

O que Binder? e Aplicaes e servios rodam em processos separados, mas podem co c precisar compartilhar dados e se comunicar. O Binder um driver e que facilita IPC (Inter-process Communication), com alta performance em memria compartilhada. o Como funciona? Conta o nmero de referncias, assim como mapeia essas u e referncias ` objetos entre processos. Realiza chamadas s e a ncronas entre processos atravs da interface descrita pelo desenvolvedor em e AIDL.

Introduo ca

Dalvik

Linux 2.6

Sobre o Binder

Introduo ca

Dalvik

Linux 2.6

AIDL

Android Interface Description Language. Binder precisa saber qual a interface externa de cada

aplicao. ca
Descrever a interface da sua aplicao diretamente no Binder ca

complicado. e
Foi criada uma linguagem de descrio fcil de usar que ca a

converte a interface descrita pelo desenvolvedor para o cdigo o usado pelo Binder.

Introduo ca

Dalvik

Linux 2.6

AIDL

Android Interface Description Language. Binder precisa saber qual a interface externa de cada

aplicao. ca
Descrever a interface da sua aplicao diretamente no Binder ca

complicado. e
Foi criada uma linguagem de descrio fcil de usar que ca a

converte a interface descrita pelo desenvolvedor para o cdigo o usado pelo Binder.

Introduo ca

Dalvik

Linux 2.6

AIDL

Android Interface Description Language. Binder precisa saber qual a interface externa de cada

aplicao. ca
Descrever a interface da sua aplicao diretamente no Binder ca

complicado. e
Foi criada uma linguagem de descrio fcil de usar que ca a

converte a interface descrita pelo desenvolvedor para o cdigo o usado pelo Binder.

Introduo ca

Dalvik

Linux 2.6

AIDL

Android Interface Description Language. Binder precisa saber qual a interface externa de cada

aplicao. ca
Descrever a interface da sua aplicao diretamente no Binder ca

complicado. e
Foi criada uma linguagem de descrio fcil de usar que ca a

converte a interface descrita pelo desenvolvedor para o cdigo o usado pelo Binder.

Introduo ca

Dalvik

Linux 2.6

Gerenciamento de Energia

Constru sobre o Gerenciador de Energia padro do Linux do a Utiliza uma pol tica mais agressiva. So implementados diferentes tipos de Wake Locks para a

impedir que o sistema desligue recursos necessrios para uma a aplicao. ca


Devem ser implementados com cuidado: as aplicaes devem co

liber-los quando terminarem de utilizar os recursos. a

Introduo ca

Dalvik

Linux 2.6

Gerenciamento de Energia

Constru sobre o Gerenciador de Energia padro do Linux do a Utiliza uma pol tica mais agressiva. So implementados diferentes tipos de Wake Locks para a

impedir que o sistema desligue recursos necessrios para uma a aplicao. ca


Devem ser implementados com cuidado: as aplicaes devem co

liber-los quando terminarem de utilizar os recursos. a

Introduo ca

Dalvik

Linux 2.6

Gerenciamento de Energia

Constru sobre o Gerenciador de Energia padro do Linux do a Utiliza uma pol tica mais agressiva. So implementados diferentes tipos de Wake Locks para a

impedir que o sistema desligue recursos necessrios para uma a aplicao. ca


Devem ser implementados com cuidado: as aplicaes devem co

liber-los quando terminarem de utilizar os recursos. a

Introduo ca

Dalvik

Linux 2.6

Gerenciamento de Energia

Constru sobre o Gerenciador de Energia padro do Linux do a Utiliza uma pol tica mais agressiva. So implementados diferentes tipos de Wake Locks para a

impedir que o sistema desligue recursos necessrios para uma a aplicao. ca


Devem ser implementados com cuidado: as aplicaes devem co

liber-los quando terminarem de utilizar os recursos. a

Introduo ca

Dalvik

Linux 2.6

Referncias e

http://code.google.com/android/ http://source.android.com/ http://forum.openhandsetdevelopers.com/

Introduo ca

Dalvik

Linux 2.6

Diogo de Campos digo.campos.pet@gmail.com Joo Paulo Pizani Flor a joaopizani@gmail.com Maur Oliveira Haensch cio cco.mauricio@gmail.com Pedro Covolan Bachiega pedrocob@inf.ufsc.br

Introduo ca

Dalvik

Linux 2.6

Você também pode gostar