# DotGNU

DotGNU faz parte do Projeto GNU, que visa oferecer um software livre para serviços fornecidos na web e para todos os programas em C# e C. O projeto está a ser desenvolvido em três áreas, o DotGNU Portable.NET, o PhpGroupWare e o DGEE. Foi desenvolvido pela Free Software Foundation como meio de substituição de software .NET Framework por software livre. Outros objetivos do projeto são um suporte melhor para sistemas operativos não-Windows e suporte para mais plataformas de processadores. O objetivo principal da base de código do projecto DotGNU é fornecer uma biblioteca de classes que é 100% compatível com a Common Language Specification (CLS).

## Principais projetos de desenvolvimento
### DotGnu Portable.NET

DotGNU Portable.NET, uma implementação do ECMA-335 Common Language Infrastructure (CLI), conhecido como .NET, inclui o software para compilar e executar o Visual Basic .NET, C# e C aplicativos que usam o .NET bibliotecas de classe base, XML e Windows Forms. Portable.NET créditos para apoio a várias arquiteturas de conjunto de instruções incluindo x86, PPC, ARM, e SPARC.

### phpGroupWare

phpGroupWare, um multi-usuário web baseado na GroupWare suite, que também serve para fornecer um conjunto de componentes webservice que pode ser acessado através de XML-RPC para que possa integrá-los facilmente em aplicações webservice.

### DGEE

DotGNU Execution Environment (DGEE), ou ambiente de computação DotGNU é um servidor webservice na base dos serviços de computação web do DotGNU e oferece um serviço de aceitar, validar e satisfazer os pedidos de serviços web. O software e instalado num Servidor Apache, e pode ser obtido em código-fonte ou em programas executáveis.

### libJIT

O libJIT Just-In-Time compilation library, geralmente conhecido como libJIT, é uma biblioteca para desenvolvimento avançado Just-In-Time compilação em implementações de Máquina virtual, linguagens de programação dinâmica, e linguagens de scripts. Ele implementa uma representação intermediária com base em três endereços de código, em que as variáveis ​​são mantidas na atribuição de forma única e estática.
libJIT também tem uso em outros projetos de código aberto, incluindo ILDJIT e HornetsEye .

## Quadro de arquitetura

A biblioteca de classes Portable.NET visa proporcionar facilidades para o desenvolvimento dos aplicativos. Estes são escritos principalmente em C#, mas por causa do Common Language Specification eles podem ser usados ​​por qualquer linguagem .NET. Assim como o .NET, a biblioteca de classes é estruturada em namespaces e assemblies. Ela possui namespaces de alto nível adicionais, incluindo acessibilidade e DotGNU. Em uma operação típica, o Portable .NET gera uma imagem Common Language Specification (CLS), conforme especificado no capítulo 6 da ECMA-335, e o Portable.NET carrega esta imagem e executa ela.

## Software livre

DotGNU salienta que é o Software Livre, e prepara-se para garantir que todos os aspectos da DotGNU minimizar as dependências de componentes proprietários, tais como chamadas para o Windows GUI código da Microsoft. DotGNU foi um das altas prioridades do Projetos de Software Livre a partir de 13 de fevereiro de 2008, no entanto, não está mais na lista que a partir de 5 de outubro de 2008.

## DotGNU e as patentes da Microsoft

DotGNU a implementação dos componentes da rede. pilha não apresentadas ao ECMA para padronização tem sido a fonte das preocupações de violação de patente por grande parte da vida do projeto. Em particular, o debate teve lugar sobre se a Microsoft poderia destruir o projeto DotGNU através de processos de patentes.
As tecnologias de base apresentadas ao ECMA pode ser não-problemático. As preocupações estão primariamente relacionadas com as tecnologias desenvolvidas pela Microsoft em cima do .NET Framework, como ASP.NET, ADO.NET e Windows Forms (ver namespaces não padronizados ), ou seja, partes que compõem a compatibilidade com o Windows DotGNU pilha. Estas tecnologias são hoje não totalmente implementado em DotGNU e não são necessários para o desenvolvimento de aplicações DotGNU.

## Veja também

* Comparação de aplicação de máquinas virtuais
* Portable.NET - Uma versão portátil DotGNU toolchain e runtime
* Mono - popular implementação de software livre .NET
* Common Language Runtime
* Shared Source Common Language Infrastructure