Por que um aplicativo Android não deve ser escrito em C/C++ porque você "simplesmente prefere programar em C/C++"? [fechado]
actualizado (para maior clareza e para reduzir a ambiguidade):
Vou começar a mexer com aplicativos android. Eu estava planejando escrever o em C++ usando o NDK (já que eu tenho mais experiência em C++ e prefiro-o a Java), mas encontrei o seguinte na página NDK do Android :só deve utilizar o NDK se for essencial para o seu app - nunca porque simplesmente prefere programar em C/C++.
tinha a impressão de que devia usar o linguagem que você prefere, desde que se encaixe no trabalho. Alguém pode explicar porque é tão fortemente aconselhado não usar C / C++ para o desenvolvimento do android?
Original:
Eu vou começar a remendar com aplicativos móveis, especificamente android, que é o SO do meu telefone atual, e eu estava pensando se escrever o aplicativo em C++ (ou pelo menos o núcleo, em seguida, empacotar em Java) era uma opção aceitável.
Um pouco de experiência, sou um especialista em Ciência da computação que fez 3 cursos de C++ (intro, intermediate, OOP e am fazendo um curso STL na primavera) e apenas 1 curso Java(intermediate). Por causa disso, estou mais confortável com C++ e prefiro-o a Java. Encontrei o seguinte na página do Android NDK.:O uso de código nativo no Android geralmente não resulta em um perceptível melhoria de desempenho, mas sempre aumenta a sua complexidade app. Em geral, você só deve usar o NDK se for essencial sua app - nunca porque simplesmente prefere programar em C/C++.
-
Tinha a impressão de que devias usar a linguagem que te serve.
tanto o trabalho como o que conhece.
- eu posso querer portar a aplicação para outra plataforma móvel, tais como como iOS, que suporta C++ mas não java
- enquanto Java é uma linguagem de alto nível e, portanto, deve fazer o desenvolvimento mais rápido, eu sinto que o desenvolvimento seria mais lento porque eu teria reaprender quase tudo (desde que eu só fiz uma aula sobre a língua)
qualquer conselho seria muito grato.
Ps: muitas das respostas sobre este assunto são de anos atrás e há muito poucas respostas de seguimento que mencionam o NDK permitindo o desenvolvimento de aplicativos nativas completos no android 2.3 e mais recente.
7 answers
Além disso, o NDK introduz um código específico de plataforma que expande o tamanho da sua distribuição. Para cada arquitetura de dispositivo que você pretende suportar, o seu código nativo deve ser incorporado em. So Arquivos (um para armv5, armv7 e x86) todos embalados na mesma APK. Esta duplicação de código executável torna a sua aplicação 3x o tamanho (ou seja, uma binária "fat"), a menos que assuma a tarefa de construir APKs separados para cada arquitetura quando você distribuir a aplicação. Assim, o processo de implantação torna-se um pouco mais trabalho se você não quer que o seu APK para crescer em tamanho significativamente.
De novo, embora nada disto o proíba de fazer o que escolher, indica Por Que Razão O Google descreve Java como o método "preferido" para a maioria de seu código e o caminho de menor resistência. Espero que esclareça por que razão a documentação está redigida como está.
Se você pretende aprender o desenvolvimento do Android com a intenção de desenvolver mais de uma aplicação durante a sua vida - e quer ser capaz de suportá - los adequadamente a todos-é muito provável que você faça melhor a longo prazo se você aprender Java e usar o SDK Java do Android em vez disso.
Os programadores do King usam C++ para a sua lógica de jogo. E eles parecem estar bem a julgar pelo seu volume de negócios.
Na minha experiência, C++ é para solucionadores de problemas e Java é para evitadores de problemas. Eu amo qualquer linguagem, mas C++ é muito gratificante quando você escreve um bom código. No entanto, pode levar apenas alguns momentos de magia para chegar lá.
Você poderia recomendar C++ para os cientistas de dados também, que normalmente teriam o seu trabalho feito por, digamos, Python ou R. C++ pode fazer o mesmo com o bom ou não melhor desempenho, mas é preciso ser um gênio na linguagem. É por isso que eu nunca recomendaria C++ para aquele que quer fazer isso - eu só daria um aviso para a surpresa que eles estão esperando.
O C++ foi construído especificamente para a independência da plataforma e, como tal, encontra-se em todos os sistemas operativos existentes. Seu usuário móvel típico pode saber que aplicativos Android são escritos aplicativos Java e iOS em Objective-C, mas o que muitos não sabem é que há mais código C/C++ na memória em seus dispositivos do que qualquer outra coisa. Unidades C / C++ grande parte da tecnologia de pequenos dispositivos (como o kernel, que interage com o hardware, bem como bibliotecas de tempo de execução típicas) e as redes de telecomunicações que permitem esses dispositivos. Mais importante para uma equipe de desenvolvimento, é que existem interfaces C/C++ e bibliotecas para qualquer coisa que você precisa fazer em qualquer dispositivo e plataforma. O conjunto de ferramentas NDK Android é um grande exemplo de suporte completo de C/C++ que foi adicionado originalmente para as equipes de desenvolvimento de jogos para permitir-lhes obter o melhor possível o Android Java é uma máquina virtual em que o código Java é executado. Ele tem sido melhorado regularmente para permitir todos os Serviços Android.
Eu diria para usares java para a aplicação principal. Mas se tiver algum código C++ que precise de portar ou alguma biblioteca que precise que seja implementada de forma eficiente em C++, então use o ndk para esses bits
Não vejo qualquer razão para não usar o C++ para o desenvolvimento normal do android , se tiver uma vasta experiência em trabalhar em C++ e com sistemas operacionais complexos como o windows ou qualquer outro, então você pode apreender o android rapidamente e não é tão complicado como os outros SO são. aprender java ou trabalhar sem aprender seria mais frustrante e complexo !
A consideração mais importante é que o Java compilados código será executado em todos os dispositivos android inalterada, enquanto que o código nativo terá de ser compilado para todas as plataformas alvo.
A intenção geral para Java e Android é que você escreva a maioria, se não todo o seu aplicativo em Java e use coisas nativas apenas quando não há outra opção... então tudo sobre escrever o aplicativo se prestará a fazê-lo em Java.
Vais poupar-te a muitas chatices. em ponte entre os mundos nativo e Java, escrevendo em Java.Assim como, você vai fazer um grande favor a si mesmo se você tomar o mergulho e aprender Java. Não só o seu aplicativo Android será o melhor para ele, mas você vai se expor a uma abordagem significativamente diferente para OO e você será um melhor programador para ele.
Adicione a isso o fato de que você vai pisar um monte de riscos de segurança escrevendo em Java. Na minha mente, isto é inútil. Hipoteca.