Você está na página 1de 7

INDICE

Introdução .............................................................................................. 2
1 Java................................................................................................... 3
1.1 Processo de Compilação .............................................................. 4
2 C# ..................................................................................................... 5
2.1 Processo de Compilação.............................................................. 6
3 Conclusão ......................................................................................... 7
4 Bibliografia ........................................................................................ 7
Introdução
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
Boa parte da sintaxe de ambas as linguagens foi
Inspirado no C/C++ inspirada no C/C++, especialmente declaração de
variáveis, funções e estruturas de controle.
Ambas as linguagens suportam conceitos de
Orientação a objetos programação orientada a objetos com a palavra
reservada class.
Herança simples de classes a partir de ancestral comum
Herança
e herança múltipla de interfaces.
Gerenciamento de
Automático, com “coletor de lixo”.
memória
Todas as atribuições tem os tipos validados. Os “casts”
Tipagem forte são sempre verificados em tempo de execução. Não é
possível violar o sistema de tipos.
Compila para código Sim. No caso da Microsoft compila para “Intermediate
intermediário Language” e no Java para “bytecode”.
Tratamento de erro Exceptions.
Reflections Ambas as linguagens suportam “reflections”.
Ambas as linguagens usam o padrão Unicode para
Unicode
representar caracteres e strings.
Classe que não pode ser
“final” em Java; “sealed” em C#.
herdada
Campo constante “static final” em Java; “const” em C#.
Operador que verifica
“instanceof” em Java; “is” em C#.
compatibilidade de tipos

A seguir falaremos um pouco sobre as linguagens Java e C#.


1 Java
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.

1.1 Processo de Compilaçã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

2 C#
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”.

2.1 Processo de Compilação


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.
3 Conclusão
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.

4 Bibliografia
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

Você também pode gostar