7 de dezembro de 2001
.Net no Linux?
Pedro Carlos Silva Oliveira *
A comunidade que defende o software livre sempre repudiou todas as iniciativas da Microsoft, alegando que a empresa mantém o monopólio do mercado de software através de programas de código fechado, preços altos e qualidade duvidosa.
Porém, uma parte desta comunidade, representada pela empresa de desenvolvimento Ximian e por seu chief technical officer, Miguel de Icaza, figura ilustre da comunidade do software livre, parece ter mudado de opinião, pelo menos em parte, sobre os produtos da Microsoft. Isto porque a Ximian decidiu criar um projeto para desenvolver uma versão código livre da plataforma .Net para o sistema operacional Linux: o projeto Mono.
O Mono tem como objetivo principal a criação de uma infra-estrutura de desenvolvimento que permita a implementação de aplicações .Net para o Linux. O projeto consiste de três elementos críticos: um compilador para a linguagem de programação C#, a máquina virtual (CLI) e uma biblioteca de classes (class library).
Código gerenciado
A linguagem C# é a aposta da Microsoft na concorrência com o Java, oferecendo todos os recursos de uma linguagem de programação moderna, como orientação a objetos, suporte para interfaces/componentes e, principalmente, código gerenciado (managed code).
O código gerenciado criado pelo C# não é um código específico para um determinado tipo de máquina, portanto ele independe de CPU. Isso permite que o mesmo código seja executado em uma grande variedade de máquinas diferentes, tais como computadores pessoais (PCs), máquinas RISC, handhelds ou palms e celulares. É necessário, apenas, que exista uma máquina virtual (CLI) para cada tipo de máquina em que o código será executado.
Outra grande vantagem que resulta do código gerenciado é o aumento na segurança e na estabilidade do código gerado. Isto é obtido pelo modo como o código gerenciado e a máquina virtual tratam a execução do programa. Eles impedem qualquer operação que ponha a máquina em risco, mesmo que o código tente realizar este tipo de operação (as permissões do que pode ou não ser feito são atribuídas pelos administradores de rede). Este conjunto de recursos foi um dos principais motivos para a mudança de rumos da Ximian, que antes desenvolvia usando linguagens tradicionais como C.
Máquina virtual
A CLI é uma máquina virtual que contém um carregador (loader) de classes (carrega as classes que um programa usa para executar sua funcionalidade), um compilador JIT (just-in-time), que compila o programa na sua primeira utilização gerando um código para a CPU nativa) e um ambiente de coleta de lixo (garbage collection), que gerencia o uso da memória do computador, eliminando os famosos GPFs e similares).
A CLI tem a mesma função que a Java Virtual Machine (JVM) tem na linguagem Java. A CLI é o componente que irá permitir que programas escritos em C# sejam executados em sistemas operacionais não-Windows, como o Linux.
A biblioteca de classes é o elemento que permitirá que as aplicações realizem funções vitais, tais como processamento XML, entrada/saída e conexão a redes. O projeto Mono pretende criar uma biblioteca que seja compatível com a CLI da Microsoft, permitindo que os programas escritos para Linux/Mono sejam executados com a mesma funcionalidade no Windows/.Net. Além disso, existe uma grande expectativa de que a comunidade código livre crie bibliotecas adicionais que façam diversos tipos de funcionadades extras e que também sejam compatíveis com a CLI.