|
COMPARATIVO ENTRE DUAS LINGUAGEM DE PROGRAMAÇÃO:
C# E
JAVA
Escolhemos a linguagem Java e
C# pelo motivo que o Java é uma linguagem multiplataforma e
o C# por ser uma linguagem nova que pode ser que possa
substituir o Java, além disso as duas linguagens, de um
certo modo são descendente do C e C++. As duas linguagens
são linguagem orientada a objetos (OOP) e possuem muitas
semelhanças como mostra o quadro abaixo:
|
Característica |
Implementação |
|
Inspirado no C/C++ |
Boa parte da sintaxe de ambas as
linguagens foi inspirada no C/C++, especialmente
declaração de variáveis, funções e estruturas de
controle. |
|
Orientação a objetos |
Ambas as linguagens suportam
conceitos de programação orientada a objetos com
a palavra reservada class. |
|
Herança |
Herança simples de classes a
partir de ancestral comum e herança múltipla de
interfaces. |
|
Gerenciamento de memória |
Automático, com “coletor de
lixo”. |
|
Tipagem forte |
Todas as atribuições tem os tipos
validados. Os “casts” são sempre verificados em
tempo de execução. Não é possível violar o
sistema de tipos. |
|
Compila para código intermediário |
Sim. No caso da Microsoft compila
para “Intermediate Language” e no Java para “bytecode”. |
|
Tratamento de erro |
Exceptions. |
|
Reflections |
Ambas as linguagens suportam “reflections”. |
|
Unicode |
Ambas as linguagens usam o padrão
Unicode para representar caracteres e strings. |
|
Classe que não pode ser herdada |
“final” em Java; “sealed” em C#. |
|
Campo constante |
“static final” em Java; “const”
em C#. |
|
Operador que verifica
compatibilidade de tipos |
“instanceof” em Java; “is” em C#. |
A seguir falaremos um pouco
sobre as linguagens Java e C#.
Java foi desenvolvida por um
grupo de pesquisadores da SUN Microsystems por volta de
1990, pouco antes da explosão da Internet. Essa linguagem
possui estrutura muito semelhante à da linguagem C, da qual
descende imediatamente. Java tem em comum com a linguagem
C++ o fato de ser orientada a objetos e mantém com esta uma
alto grau de semelhança. Esse paradigma de programação
consiste de um grau a mais na abstração da programação, em
comparação com a programação estruturada, e tem se mostrado
extremamente útil na produção de programas cada vez mais
sofisticados, em menor tempo e com maior qualidade. A
programação orientada a objetos é hoje universalmente
adotada como padrão de mercado, e muitas linguagens
tradicionais foram aperfeiçoadas para implementar esse
paradigma, como C++, Object Pascal, etc.
Tendo sido originalmente
concebida para o desenvolvimento de pequenos aplicativos e
programas de controle de aparelhos eletrodomésticos e
eletroeletrônicos, Java mostrou-se ideal para ser usada na
rede Internet. O que a torna tão atraente é o fato de
programas escritos em Java poderem ser executados
virtualmente em qualquer plataforma, mas principalmente em
Windows, Unix e Mac. Em meio a essa pluralidade, Java é um
idioma comum, falado por todos. Isto significa que Java é
ideal para expressar idéias em forma de programas
universalmente aceitos. Soma-se a isso o fato de programas
Java poderem ser embutidos em documentos HTML, podendo assim
ser divulgados pela rede. Diferente da linguagem C, não é
apenas o código fonte que pode ser compartilhado pela rede,
mas o próprio código executável compilado, chamado
bytecodes.
Em contraste com a letargia de
documentos tradicionais, Java acrescenta a interatividade
entre o usuário e o documento que está sendo consultado,
tornando-o mais expressivo, agradável e surpreendente. Java
é ideal para a elaboração de material educacional, pois
permite ilustrar claramente os conceitos enquanto
possibilita um ensino individualizado.
Há uma certa curiosidade por
detrás do nome dado a essa linguagem de programação. Java é
o nome de uma ilha do Pacífico, onde se produz uma certa
variedade de café homônimo. A inspiração bateu à equipe de
desenvolvimento ao saborear esse café em uma lanchonete
local. Deram-se conta de como era extremamente apreciado por
profissionais da área de software (ao menos nos Estados
Unidos), de modo que não foi menos justo fazer-lhe homenagem
ao batizar uma nova linguagem de programação.
Um programa fonte escrito em
linguagem Java é traduzido pelo compilador para os
bytecodes, isto é, o código de máquina de um processador
virtual, chamado Java Virtual Machine (JVM). A JVM é
um programa capaz de interpretar os bytecodes produzidos
pelo compilador, executando o programa cerca de 20 vezes
mais lento do que C. Pode parecer ruim, mas é perfeitamente
adequado para a maioria das aplicações. Com isto, um
programa Java pode ser executado em qualquer plataforma,
desde que esteja dotada de uma JVM. É o caso dos programas
navegadores mais populares, como o Netscape Navigator e o
Internet Explorer, que já vêm com uma JVM. A vantagem desta
técnica é evidente: garantir uma maior portabilidade para os
programas Java em código-fonte e compilados. Porém, as JVM tendem
a ser programas extensos que consomem muitos recursos,
restringindo assim o tamanho das aplicações escritas em
Java.
Atualmente, já existem
compiladores capazes de traduzir bytecodes para instruções
de máquina nativas, como o Just In Time compiler (ou
JIT), tornando os programas ainda mais rápidos. Este
compilador requer uma versão específica para cada plataforma
onde se pretende que o programa Java seja executado. Em
contrapartida à maior velocidade de execução está também uma
maior necessidade de memória, pois os bytecodes compilados,
em geral, ficam três vezes maiores do que o original. Uma
alternativa bem mais interessante, e talvez muito mais
viável, é a implementação da JVM em hardware na forma de uma
placa ou microchip. A primeira iniciativa neste sentido é da
Sun Microelectronics, que está produzindo os chips PicoJava
I, MicroJava e UltraJava. Estes são capazes executar
diretamente bytecodes, acelerando em milhares de vezes a
velocidade de execução. Isto permitirá o desenvolvimento
viável de aplicativos cada vez mais complexos, abrangentes e
funcionais. Espera-se que estas soluções sejam brevemente
empregadas na fabricação de telefones celulares, pagers,
jogos, organizadores pessoais digitais, impressoras e
eletrodomésticos de consumo, além aplicações mais sérias
como estações de trabalho dotadas do sistema operacional
JavaOS. Trata-se certamente do futuro das
soluções para aplicações de rede.

Figura 1:
Funcionamento do interpretador JVM
O C# (pronuncia-se “C Sharp”)
é uma nova linguagem criada pela Microsoft em conjunto com a
arquitetura .NET. O símbolo # significa que a nota deve ser
meio tom mais aguda. O C# traz este símbolo, pois possui uma
linguagem com toda a robustez e cientificidade de sintaxe do
C, só que agora "meio tom" melhorado.
Nas últimas duas décadas, C e
C++ foram as linguagens mais amplamente usadas para o
desenvolvimento de software comercial e de negócios. Embora
as duas linguagens proporcionem ao programador uma
quantidade enorme de controle granular, esta flexibilidade
possui um custo para a produtividade. Comparadas com uma
linguagem como o Microsoft Visual Basic, aplicações C e C++
equivalentes frequentemente demoram mais para serem
desenvolvidas. Devido a complexidade e longos tempos de
ciclo associados a essas linguagens, muitos programadores C
e C++ vêm procurando uma linguagem que ofereça um melhor
balanceamento entre poder e produtividade.
A solução Microsoft para este
problema foi a criação da linguagem C#. Ele é uma moderna
linguagem orientada a objeto que habilita os programadores a
construir rapidamente uma ampla gama de aplicações para a
nova plataforma Microsoft .NET, a qual proporciona
ferramentas e serviços que exploram totalmente a computação
e as comunicações.
Devido ao seu elegante projeto
orientado a objeto, C# é uma escolha excelente para
arquitetar uma ampla gama de componentes – de objetos de
negócio de alto nível a aplicações no nível do sistema.
Usando construções de linguagem C# simples, estes
componentes podem ser convertidos em serviços Web,
permitindo que eles sejam invocados pela Internet, a partir
de qualquer linguagem rodando em qualquer sistema
operacional.
Principalmente, C# é projetado
para trazer desenvolvimento rápido para o programador C++
sem sacrificar o poder e o controle que têm sido a
característica fundamental do C e C++. Devido a esta
herança, C# possui um alto grau de fidelidade com C e C++.
Desenvolvedores familiarizados com estas linguagens podem se
tornar produtivos em C# rapidamente. Porém o C# modifica
bastante o C++ e não tem a pretensão de manter a
compatibilidade, apenas a “familiaridade”.
Os fontes em C# tem extensão “cs”.
Todos os fontes em um “projeto” são compilados diretamente
para um único “assembly” (.EXE ou .DLL). Não existe um
arquivo intermediário (.OBJ ou .DCU) como no Delphi.
Todo programa criado pelo
compilador C# é dito “verificável”. Isto quer dizer que o
compilador JIT (Just In Time Compiler)
pode, em tempo de execução / compilação, verificar e
garantir que o programa não faça nenhuma operação que possa
comprometer a segurança e integridade do sistema.
Pode parecer estranho, mas
existem instruções MSIL
(Microsoft
Intemediate Language) capazes de abrir brechas na
segurança do sistema, como por exemplo, para manuseio direto
de ponteiros ou “casts” inseguros. Estas instruções são
necessárias em alguns casos, como por exemplo para que a
própria biblioteca chame a API do Windows. Programas que
contém estas instruções são ditos “não-verificáveis”.
O compilador C# pode criar
programas não-verificáveis, incluindo manipulação direta de
ponteiros, com a opção “/unsafe”. Já o compilador C++ sempre
gera código não-verificável. Evidentemente é necessário um
privilégio especial de segurança para rodar programas
não-verificáveis.
É perfeitamente possível criar
programas bastante úteis sem violar os critérios de
“verificabilidade” e, conseqüentemente, segurança.
Embora compartilhe
características com o Java, o C# é uma linguagem
que traz vários recursos muito interessantes que não ou
existem no Java ou dão muito trabalho para implementar ou
têm performance ruim. Porem o Java possui uma grande
preferência por seu uma linguagem multiplataforma
facilitando muito o serviço de muitos programadores. O C# é
um grande candidato a se tornar uma linguagem utilizados
pela maioria dos programadores, mas ainda é necessário
analisar e efetuar muitos teste.
C#: A nova linguagem da
arquitetura .NET
http://www.msdnbrasil.com.br/colunas/falandoc/col_falandoc_2.aspx
C# e Java
http://www.msdnbrasil.com.br/colunas/falandoc/col_falandoc_3.aspx
Por que o C# é melhor que o
Java
http://www.mas.com.br/Artigos/CSharp_Java.htm
C# Language Specification
http://www.csharpbr.com.br/mostra_artigo.asp?id=0007
Introdução
ao Java
http://www2.dm.ufscar.br/~waldeck/curso/java/introd.html
|