Partindo dos fundamentos apresentados nas unidades anteriores para criação de um código Java robusto e íntegro, esta unidade apresentará os principais conceitos de alto nível envolvidos na programação para a plataforma Android.
O Android é lançado com duas licenças diferentes de código fonte aberto. O kernel linux é regido, em sua grande maioria, pela licença GNU GPLv2 enquanto que o restante da plataforma Android é regido pela licença ASL (Apache Software License). As duas licenças são orientadas a código-fonte aberto, sendo que a ASL é mais adequada ao ambiente comercial que a GNU GPL, principalmente em sua versão 3, que possui uma série de restrições que vão, literalmente, de encontro ao uso de patentes e direitos autorais (copyright). Já a licença ASL não oferece restrições ao uso conjunto entre softwares/bibliotecas/módulos que sejam proprietários ou não.
Atualmente, o principal concorrente do Android é o IOS da Apple cujas bases são provenientes do 4.3BSD (Berkley Software Distribution) e da versão pública disponibilizada pela própria Apple do sistema operacional que ela mesma desenvolveu cujo nome é Darwin. Ambos os softwares, BSD e Darwin também são softwares livres, ressalvadas algumas diferenças importantes, cujo debate está além do escopo desta disciplina. Contudo, suas licenças são mais permissivas que a GNU GPL permitindo aos usuários que, por exemplo, alterarem o software, a não obrigatoriedade de repasse do conhecimento sob as mesmas licenças.
A variedade de linguagens de programação comerciais existentes atualmente no mercado é um diferencial percebido pelos desenvolvedores do sistema Android. Isso significa que pelo fato do sistema Android ser totalmente aberto ele permite que os desenvolvedores do mundo inteiro possam escolher em qual linguagem de programação desejam desenvolver seus aplicativos. Por óbvio, a escolha de qual linguagem utilizar pode ocasionar maior facilidade ou dificuldade neste desenvolvimento. Portanto, linguagens como Assembly, C, Java, PHP, Python, C++, Lua, Ruby, Perl, dentre outras podem ser usadas para desenvolver aplicativos Android. O ponto importante a ser observado quanto a isso é que o Android oferece suporte nativo a algumas delas e a outras não. Isso significa que pelo fato do Android usar o kernel Linux, praticamente, todas as linguagens de programação existentes atualmente podem ser executadas, seja de modo nativo (já suportado pelo ambiente) ou não (geralmente suportado após a instalação de componentes externos/extras). Por exemplo, o Android, até a sua versão 6.0 - Masrhmallow oferece suporte nativo as linguagens Assembly, C e Java. Já para linguagens como PHP e Python é necessário a instalação de ferramentas extras ao sistema como o SL4A (https://github.com/damonkohler/sl4a).
O IOS é considerada uma plataforma de código proprietário e fechado, uma vez que a Apple não disponibiliza as alterações realizadas nos mesmos.
X