Campus - (C#) Aula 1 A Microsoft lancou a linguagem C# em meados do ano 2000. Desde entao, um dos argumentos mais usados pelos concorrentes para desmerecer a nova linguagem e que o C# nao passa de um clone do Java. Este artigo mostra que embora existam varias semelhancas, o C# traz diversos recursos importantes e que simplesmente nao existem ou sao muito dificeis de implementar no Java. Linguagem ou Plataforma? Em primeiro lugar, antes de fazer qualquer comparacao entre Java e alguma outra tecnologia, e bom enfatizar que Java pode significar duas coisas bastante diferentes: Uma linguagem de programacao. Uma plataforma de execucao, que inclui, no minimo, um runtime e uma biblioteca de classes, usualmente conhecidos como Java Virtual Machine. Por uma questao de objetividade, esta comparacao limita-se a linguagem de programacao Java e nao compara as plataformas da Sun e da Microsoft. Algumas caracteristicas bastante interessantes no desenvolvimento de software, como por exemplo, o amplo suporte a diferentes culturas presente no C# foram deixados de lado por tecnicamente fazerem parte da .NET Framework. Nao estou tambem comparando o Visual Studio.NET com nenhum ambiente integrado de desenvolvimento para Java, embora o Visual Studio seja, na minha opiniao, um produto muito mais completo. Semelhancas O C# foi sem duvida influenciado por diversas linguagens, dentre as quais evidentemente Java, C++, Delphi e Smalltalk. Veja no quadro a seguir algumas das semelhancas com o Java: Semelhancas entre C# e Java Caracteristica Implementacao Inspirado no C/C++ Boa parte da sintaxe de ambas as linguagens foi inspirada no C/C++, especialmente declaracao de variaveis, funcoes e estruturas de controle. Orientacao a objetos Ambas as linguagens suportam conceitos de programacao orientada a objetos com a palavra reservada class. Heranca Heranca simples de classes a partir de ancestral comum e heranca multipla de interfaces. Gerenciamento de memoria Automatico, com coletor de lixo. Tipagem forte Todas as atribuicoes tem os tipos validados. Os casts sao sempre verificados em tempo de execucao. Nao e possivel violar o sistema de tipos. Compila para codigo intermediario 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 padrao Unicode para representar caracteres e strings. Classe que nao 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#. Os aspectos acima sao auto-explicativos e refletem o pensamento atual no desenvolvimento de software, especialmente o uso de orientacao a objetos em um ambiente gerenciado, no qual o programa nao pode danificar o ambiente de execucao. Novidades do C# O C# tem diversas novidades que tornam o desenvolvimento de software mais facil e produtivo, como mostrado a seguir: Recursos novos no C# Caracteristica Java C# Compilado para codigo nativo Raramente. O Java e quase sempre interpretado. Sempre compilado para codigo nativo. A compilacao pode ser feita na instalacao ou na primeira execucao do programa. Todos os tipos derivados de ancestral comum Nao. Sim, todos os tipos sao