Uma grande diferença é que o java utiliza maquina virtual, ou seja, codigo interpretado e o c++ usa codigo compilado. Aí está uma grande vantagem do C, uma vez que com isso a execução se torna muito mais rápida. Tecnicamente, as duas linguagens apresentam alta portabilidade, no caso do java garantida pela maquina virtual e do C, garantida pelo padrão ANSI. Existem outras diferenças em conceitos de orientação para objetos, no caso, java não apresenta herança multipla e c apresenta, ate onde eu sei. Se eu estiver enganado, por favor, me corrijam. Basicamente é isso que eu sei sobre o assunto, a linguagem que tu vai escolher depende da tua aplicação, mas eu prefiro C.