Pesquisa comparativa entre as linguagens: C, C++ e Java
Por: LUCAS SIMA PIAN • 26/5/2017 • Trabalho acadêmico • 1.048 Palavras (5 Páginas) • 352 Visualizações
Pesquisa comparativa entre as linguagens: C, C++ e Java
A linguagem vem obtendo destaque no desenvolvimento de sistemas. Porém, sua eficiência vem sendo muito discutida nos dias de hoje, sendo considera mais lenta e com alta demanda de memória. Mesmo assim, é muito utilizada para desenvolver sistemas, devido a vários fatores como, facilidade de aprendizagem e utilização, vários arcabouços disponíveis e sua varia portabilidade de funcionamento em diversas plataformas, entre outros.
Analisando o tempo de execução, é de se esperar que sistemas desenvolvidos em C/C++ tenham melhor desempenho do que o Java, isso deve-se ao fato de se conhecer o processo de compilação dessas linguagens. Enquanto uma compilação de C/C++ gera o código diretamente de máquina, uma compilação de Java gera um código intermediário que é interpretado pela Máquina Virtual Java. Porém os compiladores estão em constante aprimoramento, obtendo novas técnicas e recursos de otimização.
Tratamento de exceções
A confiabilidade nas linguagens é influenciada por vários fatores como, a verificação de tipos, o tratamento de exceções, a legibilidade e a facilidade de escrita. C e C++ possuem várias características que acabam propiciando erros de programação, como a manipulação direta de endereços de memória utilizando ponteiros. Em Java, não se tem acesso direto ao endereço de memória, por isso, não é permitida a manipulação desse endereço. Sendo assim, a linguagem Java se torna mais confiável.
A linguagem C não possui recursos para o tratamento de exceções, o C++, por sua vez, possui embutido um mecanismo de tratamento de exceções, composto pelo try() e pelo catch(). Em Java, toda exceção é um objeto. A superclasse de todas as exceções é a java.lang.Throwable. Todos os objetos dessa classe ou de suas subclasses podem ser gerados ou capturados por meio do tratamento de exceções. As duas subclasses de java.lang.Throwable são: java.lang.Exception e java.lang.Error. A primeira é utilizada em situações nas quais é possível realizar um tratamento que permita prosseguir com o processamento como, quando um número é informado pelo usuário e este não pode ser negativo. Já a segunda classe é utilizada em situações nas quais a aplicação não deve tentar tratar; situações que não deveriam ocorrer, como falta de memória na Máquina Virtual Java.
As classes já definidas em Java e mais utilizadas para o tratamento de exceções são:
java.lang.NullPointerException- trata erros que acontecem durante a execução do programa como, por exemplo, chamar um método de instância de um objeto null;
java.lang.IllegalArgumentException – trata de erros referentes a um argumento inválido fornecido para uma chamada de método;
java.lang.NumberFormatException - indica que tentou-se a conversão de uma string para um formato numérico, mas seu conteúdo não representava adequadamente um número para aquele formato. É uma subclasse de java.lang.IllegalArgumentException;
java.lang.ClassNotFoundException - indica que a aplicação tentou carregar uma classe, mas não foi possível encontrá-la.
Portabilidade
Para que programas feitos em uma determinada linguagem se comportem da mesma maneira independentemente da plataforma onde serão executados, é necessário que a linguagem de programação utilizada para a implementação desse programa tenha portabilidade. Desse modo, o programa pode ser utilizado em vários ambientes diferentes.
Quando se fala de portabilidade, pode-se dizer que Java é uma linguagem portável, já que após o processo de compilação de uma classe, ela pode ser invocada em qualquer plataforma que dê suporte à linguagem. Isto se deve ao fato de o código-fonte Java ser compilado para bytecode, que é um código interpretado pela Máquina Virtual Java. Isto faz com que os programas Java sejam independentes de plataforma, ao contrário de C/C++, que são compilados diretamente para código nativo. Esta característica de C/C++ faz com que essas linguagens sejam dependentes de plataforma. Deste modo, para que programas implementados nelas possam ser executados em outras plataformas, é preciso realizar uma nova compilação para cada uma destas plataformas.
...