Neste artigo vou apresentar as dez diferenças principais entre as linguagens C# e Java. |
A seguir as 10 diferenças principais entre a linguagem C# e a linguagem Java. Você pode ver as diferenças como uma vantagem do C# sobre o Java mas meu propósito aqui não é esse.
Usei Java por mais de 10 anos antes de usar C#, e nutro um apreço por ambas as linguagens, e as vejo como ferramentas de trabalho.
Muitas vezes não é você quem escolhe a ferramenta que vai usar, é o seu cliente, por isso meu conselho é : aprenda as duas linguagens e você vai ficar bem na fita.
10 diferenças entre C# e Java | |||
1 | A linguagem C# é uma das linguagens da plataforma .NET, e por conseguinte ela suporta a interoperabilidade, ou seja, a linguagem C# pode acessar o código escrito em qualquer linguagem .NET compatível e pode também herdar as classes escritas nestas linguagens. Isto não é possível na linguagem Java. |
2 |
O código escrito na linguagem
C# na compilação gera um '.EXE' ou uma '.dll' que também é chamado
de Portable Excecutable File. Este arquivo contém código
MSIL (Microsoft
Intermediate Language). A linguagem Java na compilação gera um arquivo '.class' o qual contém bytecode. |
3 | O portable executable file da linguagem C# pode conter qualquer número de classes, ao passo que o arquivo '.class' da linguagem Java contém somente uma única classe. |
4 | Os métodos na linguagem C# não são métodos virtuais por padrão. Na linguagem Java todos métodos não estáticos, não finais e não privados, são virtuais por padrão o que pode afetar o desempenho. |
5 | As classes na linguagem C# são agrupadas em Namespaces ao passo que na linguagem Java elas são agrupadas em Packages. |
6 |
Os Namespaces na linguagem C# não
estão relacionados com diretórios. Na linguagem Java os Packages estão
diretamente relacionados com nomes de diretórios. Na linguagem C# você pode ter múltiplos Namespaces em um arquivo. Na linguagem Java um arquivo pertence a um Package (pacote). |
7 | As variáveis do tipo de dados primitivos na linguagem C# são mais poderosas. Na linguagem C# as variáveis do tipo de dados primitivos são objetos e podem chamar funções. Na linguagem Java as variáveis do tipo primitivo não podem chamar funções. |
8 | A linguagem C# possui recursos como Properties e Indexers. A linguagem Java não possui esses recursos. |
9 | A linguagem C# suporta Estruturas (Structure), Sobrecarga de operadores e diretivas de pré-processadores. A linguagem Java não suporta esses recursos. |
10 | Na linguagem C# podemos facilmente chamar funções API do Windows e acessar componentes COM. Na linguagem Java essas tarefas são muito mais difíceis de realizar. |
Devemos levar em conta que a linguagem C# veio depois da linguagem Java e 'trouxe' consigo muito dos recursos do Java.
Desta forma, atualmente a linguagem C# não é mais apenas uma linguagem para o desenvolvimento para aplicações Windows mas pode ser usada para construir aplicações web, Windows Store e aplicações para dispositivos móveis incluindo o Android e o iOS.
Por ser uma linguagem mais nova ela tem a 'obrigação' de trazer algumas melhorias, senão não teria sentido criar uma nova linguagem.
Outro detalhe é, que não possuir determinado recurso, não faz a linguagem pior ou melhor, pois temos que levar em conta a filosofia da linguagem, e, como ela foi pensada e estruturada.
E outro detalhe, não existe linguagem melhor ou pior, existe a ferramenta mais adequada para fazer um determinado trabalho.
Veja nas referências outros artigos que comparam a plataforma .NET e a plataforma Java.
Porque há um só Deus, e um só Mediador
entre Deus e os homens, Jesus Cristo homem.
1 Timóteo 2:5
Veja os
Destaques e novidades do SUPER DVD Visual Basic
(sempre atualizado) : clique e confira !
Quer migrar para o VB .NET ?
Quer aprender C# ??
Quer aprender os conceitos da Programação Orientada a objetos ? Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ? |
Referências:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
Super DVD C# - Recursos de aprendizagens e vídeo aulas para C#
Curso Fundamentos da Programação Orientada a Objetos com VB .NET