paulo1205
(usa Ubuntu)
Enviado em 23/02/2017 - 13:55h
Eu não estou muito informado sobre essas coisas, e corro o risco de chover no molhado, com informações que você já sabe.
Até onde sei, para iOS, você programa basicamente com Objective-C ou sua sucessora, chamada Swift, e o código é compilado para código de máquina nativo do processador, fazendo uso de funções, também em código nativo, das bibliotecas dessas linguagens. Ter partes do programa em C ou C++ puros é possível, mas toda a parte de interface com o usuário é entregue a você somente através das bibliotecas que a Apple lhe dá, e essas são em Objective-C ou Swift.
Para Android, a situação é parecida: a interação com o usuário ou com o sistema usa bibliotecas pensadas para uso com a linguagem de desenvolvimento primária, que é Java, e o seu código em C ou C++ seria acionado a partir de
callbacks feitos chamados a partir de uma “casca“ em Java. Uma diferença em relação ao iOS é que o código escrito em Java não é compilado para código nativo, mas sim para um formato
bytecode que possa ser interpretado de modo ágil por uma VM (chamada Dalvik em versões antigas do Android (até 4.4), e ART nas versões mais novas). A VM pode (e alegadamente realmente assim procede) fazer uma “compilação” da aplicação em tempo de execução (ou no da primeira execução, preservando os resultados em cache para reuso posterior), no sentido de transformar pelo menos uma parte do
bytecode em código nativo (ou pelo menos otimizado em relação ao original, alegadamente de acordo com o perfil de uso do usuário e do dispositivo em questão).
Como o Android, ao contrário do iOS (pelo menos por enquanto), pode executar em diferentes tipos de processadores (ARM é a arquitetura mais comum, mas existe também uma considerável quantidade de dispositivos móveis com Intel Atom; só que a coisa é mais ampla: qualquer um dos nossos PCs teoricamente pode rodar Android), embutir código nativo numa aplicação pode atrapalhar a compatibilidade dessa aplicação com parte do público interessado. Não sei como a Google e a Play Store lidam com isso.