Índice de comparação | C++ | Java |
Independência de plataforma |
Depende da plataforma |
Não depende de plataforma |
Principalmente usada para |
Programação de sistemas |
Programação de aplicações. Amplamente usada no Windows, web, enterprise e aplicativos mobile. |
Objetivo do design |
Foi projetado para programação de sistemas e aplicativos. Foi uma extensão da linguagem de programação C. |
Foi projetado e criado como um interpretador para sistemas de impressão mas depois foi estendida como um suporte a computação em rede. Foi projetada com um objetivo de ser fácil para usar e acessível para um mais amplo público. |
Goto |
Suporta a declaração goto |
Não suporta a declaração goto |
Herança múltipla |
Suporta herança múltipla |
Java não suporta herança múltipla através de class. Pode ser alcançada usando interfaces em java. |
Sobrecarga de operadores |
Suporta sobrecarga de operadores |
Não suporta sobrecarga de operadores |
Ponteiros |
Suporta ponteiros. Você consegue utilizar ponteiros em programas C++ |
Suporta ponteiro internamente. Entretanto, você não pode trabalhar com ponteiros em programas java. |
Compilador e interpretador |
Usa somente compilador. C++ é compilado e executado usando o compilador que converte o código fonte em código de máquina, então, C++ é dependente de plataforma. |
Usa ambos. O código fonte java é convertido em bytecode em tempo de compilação. O interpretador executa este bytecode em tempo de execução e produz uma saída. Java é interpretado e é por isso que é independente de plataforma. |
Chamada por valor e chamada por referência |
C++ suporta ambos. |
Suporta somente chamada por valor. Não existe chamada por referencia em java. |
Structure e Union |
C++ suporta structures e unions |
Java não suporta structures e unions |
Suporte a thread |
C++ não tem suporte embutido para threads. Depende de bibliotecas de terceiros para suportar thread. |
Java tem suporte a thread embutido |
Documentação e Comentário |
Não suporta comentário |
Suporta comentário (/** … */) para criar comentário para código fonte java. |
Palavra reservada Virtual |
Suporta virtual mas nós que decidimos se sobrescreve ou não uma função |
Não tem a palavra reservada virtual. Nós podemos sobrescrever todos os métodos não estáticos por default. Em outras palavras, métodos não estáticos são virtual por padrão. |
Shift para a direita sem sinal >>> |
Não suporta operador >>> |
Suporta operador >>> que preenche de zeros a esquerda para números negativos. Para números positivos, funciona da mesma forma que o operador >> |
Árvore de Herança |
Cria sempre uma nova árvore de herança |
Java usa sempre uma única árvore de herança porque todas as classes são filhas da classe object em java. A classe objeto é a raiz da árvore de herança em java. |
Hardware |
É mais perto do hardware. |
Não é tão interativo com o hardware |
Orientação a objetos |
É uma linguagem orientada a objetos. Entretanto, na linguagem C, hierarquia de única raiz não é possível. |
É também uma linguagem orientada a objetos. Entretanto, tudo (com exceção dos tipos fundamentais) é um objeto em java. É uma hierarquia de raiz única, pois tudo é derivado de java.lang.Object. |