É importante conhecer o C / C ++ para desenvolvimento do Android?

8

É possível usar apenas Java (sem C ++ / NDK) para criar aplicativos Android bons, rápidos e bonitos (incluindo desenvolvimento 3D)?

Quando procuro requisitos de posição de desenvolvedor Android (vagas), vejo que o conhecimento de C / C ++ / NDK é muito importante. Algumas empresas ainda precisam criar suas tarefas de teste usando apenas C ++ (OpenGL).

MyTitle
fonte
Por que você gostaria de não saber de algo? Como é pelo menos útil , é melhor você passar alguns dias e aprender.
SK-logic
Você já tentou usar o OpenGL em Java? É uma verdadeira dor de se fazer.
Sulthan

Respostas:

6

Na maioria dos casos, você não precisa do c / c ++ para desenvolver para o Android.

De acordo com o Android NDK Overview

II Não objetivos do NDK para Android:

O NDK não é uma boa maneira de escrever código nativo genérico que roda em dispositivos Android. Em particular, seus aplicativos ainda devem ser escritos na linguagem de programação Java, manipular adequadamente os eventos do sistema Android para evitar a caixa de diálogo "O aplicativo não está respondendo" ou lidar com o ciclo de vida do aplicativo Android.

no entanto, o c / c ++ é importante se você deseja usar as bibliotecas c / c ++ existentes.

Exemplo: o Android não possui codificador mp3 embutido, mas você pode usar a biblioteca lame opensource .

O mesmo pode se aplicar ao processamento de imagem 3d

k3b
fonte
4
Esse é apenas o hype do Google - todos os jogos rápidos e sofisticados que eu tenho no meu telefone são criados com o NDK - procure você mesmo, obtenha o Addons Detector (originalmente por mostrar redes de publicidade desonestas) e veja a seção do kit de ferramentas do desenvolvedor. Você verá que todas as coisas boas são criadas com o NDK. Agora, seja por que o Java seja ruim ou porque todos os melhores desenvolvedores usam C / C ++ são discutíveis.
Gbjbaanb
2
@gbjbaanb: os jogos são um caso especial (tanto na área de trabalho quanto nas plataformas móveis). Concedido, em plataformas móveis são um caso especial mais difundida ;-)
Joachim Sauer
@gbjbaanb: interessante ouvir que os jogos mais rápidos são desenvolvidos em c / c ++. Estes jogos são multiplataforma? (ou seja, existem para Android e iPhone?)
k3b
1
A única linguagem que permite escrever aplicativos portáteis ainda é o C ++. Isso é simplesmente fato. Algumas plataformas móveis possuem Java, outras possuem CLR, mas nenhuma está razoavelmente disponível. Portanto, qualquer aplicativo complexo terá núcleo C ++. Além disso, ele pode ter Java UI para Android.
Jan Hudec
3

Existem muitos aplicativos em Java. O desenvolvimento em Java é mais rápido e os dispositivos são tão poderosos hoje em dia que a eficiência não importa quando o aplicativo é principalmente uma interface de usuário interessante para alguns dados extraídos da rede. Qual é a maioria das aplicações por aí. Portanto, você certamente pode conseguir um emprego no desenvolvimento de aplicativos Android, mesmo sem o conhecimento de C ++.

No entanto, existem várias razões muito boas para escolher C ++ para aplicativos mais complexos:

  1. Até hoje, o C ++ ainda é a única linguagem portátil para todas as plataformas. Algumas plataformas móveis têm Java, outras têm CLI / CLR (.NET), mas nenhuma está disponível em todas elas. Escrever aplicativos portáteis em C ++ é muito trabalhoso, mas é factível e comprovado por muitos exemplos.
  2. Java tem ineficiência de memória embutida na linguagem. Se você observar várias comparações, tarefas semelhantes geralmente levam de 3 a 10 vezes mais memória em Java do que em C ++. Portanto, se você estiver fazendo algo que precisa de muitos dados na memória, o Java não seria uma boa escolha (observe que a situação é muito melhor com o CLI / CLR).
  3. Dalvik, a JVM no Android, está um pouco atrás das melhores JVMs tradicionais, como o HotSpot. Portanto, se você está fazendo algo que realmente precisa de poder de computação bruto, o Java não é uma boa opção no Android. No entanto, existem muito poucas aplicações que realmente precisam de tanta energia. A maioria dos aplicativos fica lá e agita o polegar 99% do tempo esperando o usuário clicar em algo e para esse tipo de aplicativo Java é bom (para a maioria deles, até o Python seria bom).

Eu acho que a primeira razão é de longe a mais importante.

Jan Hudec
fonte
1
Corrija-me se estiver errado, mas nem os aplicativos NDK precisam compilar com o Dalvik para rodar em dispositivos Android?
Michael K
@ MichaelK: Bem, sim e não. O código nativo é o código de máquina nativo, não o Dalvik. Mas ele precisa de um pouco de cola Java e o Dalvik é carregado para ela e executa essa cola (e a parte nativa é carregada nela como biblioteca compartilhada). O NDK mais recente reduziu muito a necessidade de cola, mas não tenho certeza se completamente.
precisa
2

Depende de quão 'nativos' seus aplicativos devem seguir. Parece que, por enquanto, muitos aplicativos precisam ser nativos para fornecer o Ux / UI completo exigido pelos usuários finais. A abstração da API baseada em HTML5 e Java se tornará boa o suficiente para não precisar disso daqui para frente? Quem sabe :-)

Martijn Verburg
fonte
1

Funciona perfeitamente ao modificar o código C / C ++, mas quando o código java é modificado, ele não o reconstrói automaticamente. As modificações do Java não são enviadas para o emulador ou dispositivo.

Brian Parker
fonte