Citação Postado originalmente por GrayFox Ver Post
Nao necessariamente.
Se voce está programando em windows um software em java, e usa uma biblioteca especifica pra windows, nenhuma outra plataforma vai funcionar. Entao teria que se programar sem utilizar essas bibliotecas.

Outra, a maquina virtual é pesadissima.

Entao, se vc programar algum software em C, sem utilizar nenhuma biblioteca nativa, voce nao precisa reescrever o codigo, a unica coisa que vai precisar fazer é recompilar, e com um detalhe, fica bem mais rapido que java.

Entao, a portabilidade é muito relativa.

A unica coisa no meu ver que o java tem um ponto a mais, seria que a maioria das plataformas tem a maquina virtual, e nem todas tem um compilador.

Mas mesmo assim, fico com o C.

Discutir programacao seria igual discutir religiao, politica e futebol.

Boa sorte.
Olá,

Discordo do que você escreveu (mas vc está certo quanto a dizer que discutir programação é como discutir religião).

Programo em C/C++ e Java há alguns anos e posso te dizer que C++ está bem mais próximo do Java do que do C, se for programado da maneira correta, isto é, utilizando-se orientação a objeto.
É óbvio que um programa compilado TENDE a ser mais rápido do que um programa interpretado por uma máquina virtual, entretanto diversos benchmarks atuais vêm provando que programas bem escritos em Java podem ser tão ou mais rápidos do que código em C++.

O fato é que cada problema deve ser resolvido com a ferramenta certa. Voce não vai, a não ser que esteja maluco, escrever um sistema para controlar motel, supermercado, farmácia ou qualquer coisa do tipo utilizando C puro. Na verdade nem mesmo C++ puro. É pedir pra morrer. Em C++ vc pode utilizar algumas bibliotecas para isso, como Qt (que garante um bom nível de portabilidade entre sistemas, sendo necessário na maioria dos casos apenas recompilar tudo), WxWidgets, etc. E C seria uma tarefa hérculea.
Com Java isso seria tarefa mais simples, desde que o programador já conheça a linguagem (porque é muito fácil fazer um monte de merda usando Java).
Da mesma maneira ninguém em sã consciência escreveria um driver para um dispositivo qualquer utilizando Java. Isso tbm seria equivalente a dar um tiro no pé, e provavelmente C seria a escolha correta (se não assembly).