Quando comecei a usar Java nos anos 90, era tudo " Escreva uma vez, execute em qualquer lugar! " Desde o primeiro dia. Provavelmente tudo era verdade na época e eu também fazia parte do coral.
Não tenho mais certeza do que pensar sobre isso, considerando todas as outras linguagens usando tempos de execução em várias plataformas (python, flash, perl, html, php ...). Mas ainda estou vendo muitos argumentos que dizem que você deve usar Java porque é supostamente melhor para o desenvolvimento de plataforma cruzada.
Então, isso ainda é verdade hoje? Java ainda é a linguagem de escolha para o desenvolvimento de várias plataformas?
- Seja específico com foco nos aspectos de plataforma cruzada.
- Não estou pedindo comparações gerais de recursos no idioma.
Atualização: Ótimas respostas até agora! A maioria das respostas parece favorecer Java ou web. Alguma contribuição da multidão de roteiros?
fonte
Respostas:
linguagens de estilo de script como python também facilitam o desenvolvimento de plataforma cruzada. Agora, se você gosta de Python (ou de outras línguas) depende de você, e provavelmente não precisamos iniciar esse debate aqui.
O Java tenta forçar você a escrever um código que será executado de forma portável, enquanto o python permite que você escreva um código portátil. A própria linguagem python será executada de maneira portável, mas as bibliotecas externas podem ou não. Além disso, o python dará livremente acesso a serviços específicos da plataforma.
O Java tem uma vantagem aí? Eu acho que em ambos os casos, você pode escrever o código portátil com a mesma facilidade. Ou seja, você pode escrever código e, geralmente, ele funciona em plataformas diferentes. Mas você não pode se safar apenas escrevendo código e assumindo que ele funcionará em qualquer lugar. Eu trabalhei em um projeto python que produziu versão para Windows, Linux e Mac e encontramos muito poucos problemas de plataforma cruzada. (O único que eu lembro foi devido a um bug na biblioteca em que estávamos usando o pygame, o que causou problemas de desenho no Linux. Isso foi corrigido com a atualização da versão do pygame que usamos)
Outra questão é a implantação. Se você deseja distribuir programas independentes que executam seu código, será necessário produzir versões diferentes para plataformas diferentes. Para Java, você pode distribuir uma versão e assumir que o usuário possui o Java instalado ou pode instalá-lo. Nesse caso, o Java provavelmente vence na simplicidade do departamento de implantação.
No final, acho que se resume a qual idioma você gosta de trabalhar e que tipo de implantação você precisa executar.
fonte
Enquanto Java pode não ser o ou a única viável ferramenta multi-plataforma, que tem alguns pontos fortes:
e algumas fraquezas:
Ao falar especificamente sobre a plataforma Java , há um ponto a mais:
fonte
Hoje é tão verdadeiro quanto era naquela época - ou seja, não inteiramente. Java é escrever uma vez, testar e depurar em todos os lugares. Claro que é muito menos trabalho que uma porta completamente nova, mas geralmente é mais trabalho do que o hype inicial nos fez acreditar.
Nosso produto possui um servidor Java que será executado no Windows ou Linux, mas vimos problemas específicos do SO com ele e verifique se temos servidores Linux e Windows disponíveis para suporte / teste, se necessário. As UIs Java tendem a ter mais problemas do que os servidores (embora muitos sejam cosméticos e, portanto, potencialmente possam ser ignorados, dependendo do aplicativo).
Embora não seja estritamente uma linguagem para mim, a Web é a plataforma de plataforma cruzada de sua escolha. Um front-end HTML / JavaScript significa que seu aplicativo será executado em praticamente qualquer plataforma cliente e, na maioria dos casos, esse era o objetivo real - sem ter que se preocupar se era um Mac ou um PC, qual versão do SO e assim por diante.
É claro que você geralmente ainda ditará a plataforma do servidor, mas quando as pessoas se tornarem muito mais flexíveis, especialmente nos dias de hoje, quando a maioria das empresas já suporta uma mistura de servidores Windows e Linux.
fonte
Pessoalmente, eu diria que Java ainda é a linguagem de plataforma cruzada de escolha e provavelmente permanecerá lá por algum tempo (juntamente com aplicativos da Web). Escrevi um pouco mais sobre o tópico neste post sobre Java como plataforma de escolha , mas principalmente na frente da plataforma cruzada:
Desde que você tenha cuidado com suas dependências (por exemplo, evitando bibliotecas que usam JNI para interagir com código nativo), o Java pode ser gravado como executado sem modificação em todas as principais plataformas da JVM
Como o Java é normalmente distribuído como bytecode independente da máquina, é possível executar sem recompilação em qualquer JVM (uma vez que a própria JVM local lida com a compilação JIT para código nativo). Por exemplo, consegui que um aplicativo GUI complexo e razoável fosse executado pela primeira vez em um Mac após o desenvolvimento no Windows - com o mesmo arquivo jar . Compare isso com a maioria das outras linguagens de plataforma cruzada, que normalmente exigem bibliotecas diferentes ou uma recompilação para uma plataforma diferente.
Muitas das principais bibliotecas que você precisa (GUI, rede, E / S, etc.) fazem parte do tempo de execução padrão e são gravadas de maneira multiplataforma. Portanto, você não precisa procurar e testar as bibliotecas de plataforma cruzada, é garantido que praticamente tudo o que você precisa já existe no ambiente de tempo de execução.
fonte
Eu acho que você tem essas opções:
1) use um
2) Como você empacotará e entregará seu código?
Essas opções afetam o desempenho, a visibilidade e a distribuição do código soure.
Você se importa de dar seu código fonte? Os idiomas compilados podem ser para você. As linguagens compiladas parecem ter um desempenho melhor em micro-benchmarks do que as linguagens interpretadas (mesmo JIT). Além disso, se você depende de um ambiente de tempo de execução como Java, Python, Ruby etc., seu código pode ser mais difícil de distribuir.
Eu descobri que os aplicativos mais populares para desktops de plataforma cruzada usam "Um front-end, vários binários" usando C / C ++ e uma biblioteca de widgets entre plataformas, como Audacity, Blender, Firefox, Google Earth, OpenOffice, Skype, Songbird, Stellarium, VLC.
fonte
Eu direi não. python e ruby são muito usados, assim como o javascript para o cliente e o servidor. Eu pessoalmente uso o .NET e não tenho problemas para executá-lo no mac e no linux (durante o desenvolvimento no windows)
-edit- eu ouço o LLVM está se tornando popular, mas ainda é extremamente pequeno. Isso permitirá que você use C ++ de plataforma cruzada em um único binário. Aparentemente, ele será executado no navegador, mas ainda não vi um exemplo em que permita modificar o dom ou chamar javascript.
fonte
Se você incluir plataformas móveis no mix, também precisará incluir a recompilação. Por exemplo, android, j2me.
fonte