c vs java top 30 differences between c
Este tutorial detalhado explica algumas das principais diferenças entre duas linguagens de programação orientadas a objetos C ++ vs. Java:
C ++ e Java são linguagens de programação orientadas a objetos. No entanto, ambas as línguas diferem uma da outra de muitas maneiras.
C ++ é derivado de C e possui os recursos de linguagens de programação orientadas a objetos e procedurais. C ++ foi projetado para desenvolvimento de aplicativos e sistemas.
Java é construído sobre uma máquina virtual que é muito segura e altamente portátil por natureza. Ele é agrupado com uma biblioteca abrangente para fornecer suporte para a abstração da plataforma existente.
Java foi projetado principalmente para programação de aplicativos e tem uma funcionalidade de interpretador para sistemas de impressão que mais tarde foi desenvolvido para computação em rede.
Leitura sugerida => Guia de treinamento C ++ para todos
O que você aprenderá:
- Principais diferenças entre C ++ e Java
- Formato tabular: C ++ Vs Java
- Perguntas frequentes em C ++ e Java
- Conclusão
- Leitura recomendada
Principais diferenças entre C ++ e Java
Agora vamos discutir algumas das principais diferenças entre C ++ Vs Java, à medida que prosseguimos neste
tutorial.
# 1) Plataforma Independência
C ++ | Java | ||
---|---|---|---|
7 | Interface de biblioteca | Permite chamadas diretas para bibliotecas nativas do sistema. | Chamadas apenas por meio da interface Java Native e Java Native Access. |
C ++ é uma linguagem dependente da plataforma. O código-fonte escrito em C ++ precisa ser compilado em todas as plataformas. | Java é independente de plataforma. Depois de compilado em código de bytes, ele pode ser executado em qualquer plataforma. |
# 2) Compilador e intérprete
C ++ | Java |
---|---|
C ++ é uma linguagem compilada. O programa fonte escrito em C ++ é compilado em um código-objeto que pode então ser executado para produzir uma saída. | Java é uma linguagem compilada e também interpretada. A saída compilada de um código-fonte Java é um código de bytes que é independente da plataforma. |
# 3) Portabilidade
C ++ | Java |
---|---|
O código C ++ não é portátil. Deve ser compilado para cada plataforma. | Java, entretanto, traduz o código em código de bytes. Este código de byte é portátil e pode ser executado em qualquer plataforma. |
# 4) Gerenciamento de memória
C ++ | Java |
---|---|
O gerenciamento de memória em C ++ é manual. Precisamos alocar / desalocar memória manualmente usando os novos operadores / excluir. | Em Java, o gerenciamento de memória é controlado pelo sistema. |
# 5) Herança múltipla
C ++ | Java |
---|---|
C ++ oferece suporte a vários tipos de heranças, incluindo heranças únicas e múltiplas. Embora existam problemas decorrentes de várias heranças, C ++ usa a palavra-chave virtual para resolver os problemas. | Java, suporta apenas herança única. Os efeitos da herança múltipla podem ser alcançados usando as interfaces em Java. |
# 6) Sobrecarga
C ++ | Java |
---|---|
Em C ++, métodos e operadores podem ser sobrecarregados. Este é o polimorfismo estático. | Em Java, apenas a sobrecarga de método é permitida. Não permite sobrecarga do operador. |
# 7) Palavra-chave Virtual
C ++ | Java |
---|---|
Como parte do polimorfismo dinâmico, em C ++, a palavra-chave virtual é usada com uma função para indicar a função que pode ser substituída na classe derivada. Dessa forma, podemos alcançar o polimorfismo. | Em Java, a palavra-chave virtual está ausente. No entanto, em Java, todos os métodos não estáticos por padrão podem ser substituídos. Ou, em termos simples, todos os métodos não estáticos em Java são virtuais por padrão. |
# 8) Dicas
C ++ | Java |
---|---|
C ++ tem tudo a ver com ponteiros. Como visto nos tutoriais anteriores, C ++ tem forte suporte para ponteiros e podemos fazer muita programação útil usando ponteiros. | Java tem suporte limitado para ponteiros. Inicialmente, Java era completamente sem ponteiros, mas as versões posteriores começaram a fornecer suporte limitado para ponteiros. Não podemos usar ponteiros em Java tão vagarosamente quanto usamos em C ++. |
# 9) Comentário de documentação
C ++ | Java |
---|---|
C ++ não tem suporte para comentários de documentação. | Java tem um suporte integrado para comentários de documentação (/ **… * /). Desta forma, os arquivos fonte Java podem ter sua própria documentação. |
# 10) Suporte de discussão
C ++ | Java |
---|---|
C ++ não tem suporte de thread embutido. Ele se baseia principalmente em bibliotecas de threading de terceiros. | Java é um suporte de thread embutido com uma classe “thread”. Podemos herdar a classe de thread e, em seguida, substituir o método de execução. |
Mais algumas diferenças ...
# 11) Hierarquia raiz
C ++ é procedural e também uma linguagem de programação orientada a objetos. Portanto, não segue nenhuma hierarquia de raiz específica.
Java é uma linguagem de programação puramente orientada a objetos e possui uma única hierarquia de raiz.
# 12) Código Fonte e Relacionamento de Classe
Em C ++, o código-fonte e o nome do arquivo não têm nenhum relacionamento. Isso significa que podemos ter muitas classes no programa C ++ e o nome do arquivo pode ser qualquer coisa. Não precisa ser igual aos nomes das classes.
Em Java, existe um relacionamento próximo entre a classe do código-fonte e o nome do arquivo. A classe que contém o código-fonte e o nome do arquivo deve ser a mesma.
Por exemplo , se tivermos uma classe em Java chamada salário, o nome do arquivo que contém esse código de classe deve ser “salary.java”.
# 13) Conceito
O conceito por trás dos programas C ++ é escrito uma vez e compilado em qualquer lugar, pois o C ++ não é independente de plataforma.
Pelo contrário, para programas Java é escrito uma vez, executado em qualquer lugar e em qualquer lugar, pois o código de bytes gerado pelo compilador Java é independente de plataforma e pode ser executado em qualquer máquina.
# 14) Compatibilidade com outros idiomas
C ++ é construído sobre C. A linguagem C ++ é compatível com a maioria das outras linguagens de alto nível.
Java não é compatível com outras linguagens. Como Java foi inspirado em C e C ++, sua sintaxe é semelhante a essas linguagens.
#quinze) Tipo de linguagem de programação
C ++ é uma linguagem de programação procedural e orientada a objetos. Conseqüentemente, C ++ possui recursos específicos para linguagens procedurais, bem como recursos de linguagem de programação orientada a objetos.
Java é uma linguagem de programação totalmente orientada a objetos.
# 16) Interface de biblioteca
C ++ permite chamadas diretas para as bibliotecas nativas do sistema. Portanto, é mais adequado para programação em nível de sistema.
Java não tem suporte de chamada direta para suas bibliotecas nativas. Podemos chamar as bibliotecas por meio de Java Native Interface ou Java Native Access.
# 17) Características distintas
Recursos relacionados às linguagens procedurais e à linguagem orientada a objetos são os diferenciais do C ++.
como eu abro um arquivo bin
A coleta de lixo automática é o recurso distintivo do Java. Enquanto isso, o Java não oferece suporte a destruidores.
# 18) Tipo Semântica
No que diz respeito à semântica de tipo para C ++, os tipos primitivos e de objeto são consistentes.
Mas para Java, não há consistência entre os tipos primitivos e de objeto.
# 19) Mecanismo de entrada
C ++ usa cin e cout junto com ‘>>’ e ‘<<’ operators respectively to read in and write the data.
Em java, a classe System é usada para entrada-saída. Para ler a entrada, é usado System.in que lê um byte por vez. A construção System.out é usada para escrever a saída.
#vinte) Controle de acesso e proteção de objetos
C ++ tem um modelo flexível para objetos com especificadores de acesso controlando o acesso e forte encapsulamento garantindo proteção.
Java tem um modelo de objeto comparativamente complicado com encapsulamento fraco.
#vinte e um) Declaração Goto
C ++ suporta a instrução goto, mas seu uso deve ser minimizado para evitar as consequências de usá-lo em um programa.
Java não oferece suporte para a instrução goto.
# 22) Operador de resolução de escopo
O operador de resolução de escopo é usado para acessar as variáveis globais e definir métodos fora da classe.
C ++ oferece suporte ao operador de resolução de escopo, pois o usa para acessar variáveis globais. Também nos permite definir funções fora da classe e acessá-las usando o operador de resolução de escopo.
Em contraste, Java não oferece suporte ao operador de resolução de escopo. Java também não permite definir as funções externas. Tudo relacionado ao programa, incluindo a função principal, precisa estar dentro de uma classe.
# 2. 3) Tente / Catch Block
Em C ++, podemos excluir o bloco try / catch mesmo se soubermos que o código pode lançar uma exceção.
No entanto, em Java, se tivermos certeza de que o código lançará uma exceção, devemos incluir esse código no bloco try / catch. As exceções são diferentes em Java, pois não oferece suporte a destruidores.
# 24) Detecção de erro de tempo de execução
Em C ++, a detecção de erros em tempo de execução é responsabilidade do programador.
Em Java, a detecção de erros em tempo de execução é controlada pelo sistema.
# 25) Suporte de linguas
Devido à sua proximidade com hardware e bibliotecas que permitem acessar recursos do sistema, C ++ é mais adequado para programação de sistema, embora tenhamos uma ampla gama de aplicativos, incluindo banco de dados, empresa, jogos, etc. desenvolvidos em C ++.
# 26) Dados e funções
C ++ tem um escopo global, bem como um escopo de namespace. Portanto, dados e funções também podem existir fora da classe.
Em Java, todos os dados e funções precisam estar na classe. Não há escopo global, entretanto, pode haver escopo de pacote.
# 27) Estruturas e Uniões
Estruturas e Uniões são estruturas de dados que podem ter membros com diferentes tipos de dados. C ++ suporta estruturas e uniões.
Java, no entanto, não oferece suporte a estruturas ou sindicatos.
# 28) Gerenciamento de Objetos
Em C ++, os objetos são gerenciados manualmente. A criação e destruição de objetos são realizadas manualmente usando os operadores new e delete respectivamente. Também usamos construtores e destruidores para objetos de classe.
Java não oferece suporte a destruidores, embora suporte construtores. Java também é fortemente dependente da coleta de lixo automática para coletar e destruir objetos.
# 29) Passagem de parâmetro
Passagem por valor e passagem por referência são as duas técnicas importantes de passagem de parâmetros usadas na programação. C ++ oferece suporte a ambas as técnicas.
No entanto, o Java suporta apenas a técnica de passagem por valor de passagem de parâmetro.
# 30) Hardware
C ++ está próximo do hardware e possui muitas bibliotecas que podem manipular os recursos de hardware. Por causa de sua proximidade com o hardware, C ++ é frequentemente usado para programação de sistema, aplicativos de jogos, sistema operacional e compiladores.
Java é principalmente uma linguagem de desenvolvimento de aplicativos e não está perto do hardware.
Formato tabular: C ++ Vs Java
Dada a seguir é a representação tabular da comparação entre C ++ e Java que já discutimos.
Não. | Parâmetro de Comparação | C ++ | Java |
---|---|---|---|
1 | Independência de plataforma | C ++ depende da plataforma. | Java é independente de plataforma. |
dois | Compilador e intérprete | C ++ é uma linguagem compilada. | Java é uma linguagem compilada e também interpretada. |
3 | Código Fonte e Relacionamento de Classe | Nenhuma relação estrita com nomes de classes e nomes de arquivos. | Impõe relacionamento estrito entre o nome da classe e o nome do arquivo. |
4 | Conceito | Escreva uma vez, compile em qualquer lugar. | Escreva uma vez, execute em qualquer lugar e em qualquer lugar. |
5 | Compatibilidade com outros idiomas | Compatível com C, exceto para recursos orientados a objetos. | A sintaxe é tirada de C / C ++. Sem compatibilidade com versões anteriores com qualquer outro idioma. |
6 | Tipo de linguagem de programação | Procedural e orientado a objetos. | Orientado a Objeto. |
8 | Hierarquia raiz | Sem hierarquia de raiz. | Segue a hierarquia de raiz única. |
9 | Características distintas | Suporta recursos procedurais e orientados a objetos. | Sem destruidores. Coleta de lixo automática. |
10 | Portabilidade | O código C ++ não é portátil. | Java é portátil. |
onze | Tipo Semântica | Consistente entre os tipos primitivos e de objeto. | Não consistente. |
12 | Mecanismo de entrada | Cin e Cout são usados para E / S. | System.in e System.out.println |
13 | Controle de acesso e proteção de objetos | Um modelo de objeto flexível e proteção consistente. | O modelo de objeto é complicado e o encapsulamento é fraco. |
14 | Gestão de Memória | Manual | Controlado pelo sistema. |
quinze | Herança múltipla | Presente | Ausente |
16 | Declaração Goto | Oferece suporte à instrução Goto. | Não suporta a instrução goto. |
17 | Operador de resolução de escopo | Presente | Ausente |
18 | Tente / Catch Block | Pode excluir o bloco try / catch. | Não é possível excluir se o código deve lançar uma exceção. |
19 | Sobrecarregando | Suporta sobrecarga de operador e método. | Não suporta sobrecarga do operador. |
vinte | Palavra-chave virtual | Suporta palavra-chave virtual que facilita a substituição. | Sem palavra-chave virtual, todos os métodos não estáticos são virtuais por padrão e podem ser substituídos. |
vinte e um | Detecção de erro de tempo de execução | Da esquerda para o programador. | Responsabilidade do sistema |
22 | Suporte de linguas | Usado principalmente para programação do sistema. | Usado principalmente para programação de aplicativos. |
2,3 | Dados e funções | Dados e funções existem fora da classe. Escopos globais e de namespace são suportados. | Dados e funções estão presentes apenas dentro da classe, o escopo do pacote está disponível. |
24 | Ponteiros | Suporta ponteiros. | Apenas suporte limitado para ponteiros. |
25 | Estruturas e Uniões | Suportado | Não suportado |
26 | Gerenciamento de Objetos | Gerenciamento manual de objetos com novo e exclusão. | Gerenciamento automático de objetos usando coleta de lixo. |
27 | Passagem de parâmetro | Suporta chamada por valor e chamada por referência. | Suporta apenas chamadas por valor. |
28 | Suporte de linha | O suporte a thread não é muito forte, ele depende de terceiros. | Suporte de rosca muito forte. |
29 | Hardware | Mais perto do hardware. | Não é muito interativo com o hardware. |
30 | Comentário de Documentação | Não suporta comentários de documentação. | Suporta comentário de documentação (/ **… * /) que cria documentação para código-fonte Java. |
Até agora, vimos as principais diferenças entre C ++ e Java em detalhes. A próxima seção responderá a algumas das perguntas mais frequentes relativas a C ++ e Java no mundo da programação.
Perguntas frequentes em C ++ e Java
P # 1) Qual é o melhor C ++ ou Java?
Responda: Bem, não podemos dizer com certeza qual é o melhor. Tanto C ++ quanto Java têm seus próprios méritos e deméritos. Embora C ++ seja bom principalmente para programação de sistema, não podemos fazer isso com Java. Mas o Java se destaca em aplicativos como web, desktop, etc.
Na verdade, C ++ pode fazer qualquer coisa, desde a programação do sistema até a empresa e jogos. Java pode fazer mais de uma web ou empresa. Existem alguns aplicativos, como determinados aplicativos de programação de baixo nível ou jogos, etc., que não podem ser deixados para o desenvolvimento do Java.
Portanto, depende totalmente de qual aplicativo estamos desenvolvendo. A melhor forma é avaliar de antemão os prós e os contras de ambas as linguagens e verificar sua singularidade para a aplicação que estamos desenvolvendo para então concluir qual é a melhor.
P # 2) C ++ é mais poderoso que Java?
Responda: Novamente, esta é uma pergunta complicada! Quando se trata de como é mais fácil a sintaxe ou o aprendizado da linguagem, o Java pontua. Quando se trata de programação de sistema e / ou outros aplicativos de baixo nível, C ++ é mais poderoso.
Algumas pessoas podem argumentar que ter coletas de GC automáticas, sem ponteiros, sem múltiplas heranças tornam o Java mais poderoso.
Mas quando se trata de velocidade, C ++ é poderoso. Também em aplicativos como jogos em que precisamos armazenar o estado, a coleta automática de lixo pode arruinar as tarefas. Portanto, C ++ é obviamente poderoso aqui.
P # 3) Podemos aprender Java sem saber C ou C ++?
Responda: Sim definitivamente!
Depois de conhecer os fundamentos da programação e os conceitos de programação orientada a objetos, podemos começar a aprender Java.
P # 4) C ++ é como Java?
Responda: Em alguns aspectos, sim, mas em alguns aspectos, não.
Como, por exemplo, C ++ e Java são linguagens de programação orientadas a objetos. Eles podem ser usados para o desenvolvimento de aplicativos. Eles têm sintaxe semelhante.
Mas em outros casos, como gerenciamento de memória, herança, polimorfismo, etc., C ++ e Java são completamente diferentes. Da mesma forma, quando se trata de tipos de dados primitivos, manipulação de objetos, ponteiros, etc., as duas linguagens são diferentes.
P # 5) Java é escrito em C ++?
Responda: Java, no sentido de que a Java Virtual Machine (JVM) da Sun e IBM é escrita em C ++. As bibliotecas Java estão em Java. Algumas outras JVMs são escritas em C.
Conclusão
C ++ e Java são linguagens de programação orientadas a objetos. Além disso, C ++ também é uma linguagem procedural. Existem alguns recursos como herança, polimorfismo, ponteiros, gerenciamento de memória, etc. em que ambas as linguagens diferem completamente uma da outra.
Existem algumas características do C ++ como proximidade com o hardware, melhor gerenciamento de objetos, velocidade, desempenho, etc., o que o torna mais poderoso do que Java e, portanto, motiva os desenvolvedores a usar o C ++ para programação de baixo nível, aplicativos de jogos de alta velocidade, programação de sistema etc.
De forma semelhante, a sintaxe mais fácil do Java, a coleta automática de lixo, a falta de ponteiros, modelos, etc. tornam o Java um favorito para aplicativos baseados na web.
=> Visite aqui para obter a lista completa de tutoriais em C ++ .
Leitura recomendada
- Tutorial de JAVA para iniciantes: mais de 100 tutoriais práticos em vídeo Java
- Interface Java e tutorial de classe abstrata com exemplos
- OOP Java: introdução à programação orientada a objetos em Java
- Modificadores de acesso em Java - Tutorial com exemplos
- Implantação Java: Criação e execução de arquivo JAR Java
- Introdução à linguagem de programação Java - tutorial em vídeo
- Java Virtual Machine: como a JVM ajuda na execução de aplicativos Java
- Tutorial de reflexão Java com exemplos