Mono (software)

Mono arquitetura simplificada Em formação
O Criador Miguel de Icaza
Desenvolvido por Xamarin , Ximian e Novell
Primeira versão 30 de junho de 2004
Última versão 6.12.0 (30 de julho de 2020)
Depósito github.com/mono/mono
Escrito em C , C # e linguagem de marcação extensível
Sistema operacional Linux , Microsoft Windows e macOS
Modelo Plataforma de estrutura de TI
Licença GNU General Public License Versão 2 , GNU Lesser General Public License e X11 License ( d )
Local na rede Internet www.mono-project.com

Mono é uma fonte aberta implementação (licenciado sob a GNU GPL , GNU LGPL, ou X11 dependendo do item) da Microsoft .NET CLI- baseado plataforma de desenvolvimento .

Mono foi iniciado por Miguel de Icaza dentro de sua empresa Ximian , que foi adquirida pela Novell em 2003 . Após a aquisição da Novell pela Attachmate em 2011, a Mono foi adquirida por uma empresa criada para a ocasião: a Xamarin .

Apresentação

Mono é uma plataforma de desenvolvimento completa baseada em uma implementação do ambiente de execução de código .NET e APIs centrais definidas na ECMA (também padrões ISO ). Mono atualmente suporta a versão 4.0 do framework .NET da Microsoft.

Mono oferece entre outras:

Comparação com a plataforma Java

Frequentemente comparada à plataforma Java , esta plataforma compartilha muitos aspectos técnicos, como o uso de uma linguagem intermediária (IL para linguagem intermediária , equivalente ao bytecode Java), suporte a aplicativos da web , portabilidade e uma API estendida fornecida como padrão.

Mono se destaca da solução da Oracle , no entanto  :

A plataforma é projetada para linguagens compiladas e orientadas a objetos. No entanto, a implementação do IronPython mostrou que é possível obter um desempenho semelhante com uma linguagem historicamente interpretada. Além disso, a plataforma pode ter interface com outras linguagens compiladas de maneira tradicional, como a linguagem C.

Os componentes do Mono

Mono consiste em quatro grupos de componentes:

  1. os principais componentes;
  2. a camada de desenvolvimento Mono / Linux / GNOME;
  3. a camada de compatibilidade da Microsoft;
  4. as ferramentas.

Os componentes principais incluem o compilador C #, a máquina virtual e as bibliotecas de classe base. Esses componentes são construídos de acordo com os padrões Ecma-334 e Ecma-335, permitindo que o Mono forneça uma máquina virtual de linha de comando aberta e em conformidade com os padrões.

A Camada de Compatibilidade Mono / Linux / GNOME fornece ferramentas para o desenvolvimento de aplicativos, complementando o GNOME existente e outras bibliotecas gratuitas. Esta camada inclui: Gtk # para desenvolvimento de interface gráfica do usuário , bibliotecas para interagir com o mecanismo de renderização Gecko da Mozilla, bibliotecas de integração Unix, bibliotecas de conexão de banco de dados, uma camada de segurança e o esquema de linguagem RelaxNG XML . Gtk # permite que aplicativos Mono se integrem naturalmente ao ambiente de desktop GNOME. Bibliotecas de conexão de banco de dados permitem interação com MySQL , SQLite , PostgreSQL , Firebird , Open Database Connectivity (ODBC), Microsoft SQL Server (MSSQL), Oracle , db4o e muitos outros. O projeto Mono rastreia o desenvolvimento de componentes de conexão de banco de dados em seu site.

A Camada de Compatibilidade Microsoft fornece uma maneira de portar facilmente aplicativos Windows .NET para GNU / Linux. Este grupo de componentes inclui, entre outras coisas, ADO.NET , ASP.NET e Windows.Forms . Como esses componentes não são cobertos pelos padrões ECMA, eles permanecem sujeitos à preocupação de patentes e licenças detidas pela Microsoft.

As ferramentas reúnem as ferramentas necessárias para o desenvolvimento de aplicativos .NET em plataformas diferentes do Windows. Isso inclui o IDE MonoDevelop , bem como seus componentes, como seu depurador .

O diagrama a seguir resume a situação do projeto com relação ao .NET Framework, bem como as separações entre os diferentes componentes e sua disponibilidade nos principais sistemas operacionais  :

Estrutura do projeto Mono e comparação com Microsoft .NET

Licença

O Mono é distribuído sob uma licença dupla da Novell , como outros produtos como a suíte Mozilla . O compilador C # e as ferramentas do Mono são distribuídos sob a licença GNU GPL (apenas v2; começando com Mono versão 2.0, o código-fonte do compilador C # também estará disponível sob a licença MIT X11 ). As bibliotecas de tempo de execução são lançadas sob a licença GNU LGPL (apenas v2) e as bibliotecas de classes são lançadas sob a licença MIT . Todas essas licenças são gratuitas e de código aberto, tornando o projeto Mono um projeto de código aberto gratuito.

Patentes Mono e Microsoft

A portabilidade para Mono de componentes .NET não submetidos ao ECMA para padronização foi, desde o início, uma fonte de preocupação sobre violações de patentes de software. Em particular, tem havido discussões sobre a possibilidade de a Microsoft destruir o Project Mono por meio de ações judiciais de violação de patente.

As tecnologias subjacentes ao Mono, submetidas à ECMA, não são problemáticas. Isso também inclui a camada de compatibilidade Mono / Linux / GNOME, que não usa tecnologias que podem ser cobertas por patentes da Microsoft. Portanto, C # , bibliotecas e outras camadas de software do Projeto GNU não são afetadas por essas preocupações.

No entanto, é diferente para a camada de compatibilidade da Microsoft, que diz respeito às tecnologias que compõem o .NET framework . Isso inclui, entre outros, ASP.NET, ADO.NET, a camada de comunicação do framework .NET 3.0 (Windows Communication Foundation) e Windows.Forms. Essas tecnologias ainda não estão totalmente implementadas no Mono; Richard Stallman disse que pode ser "perigoso" usar o Mono devido à possibilidade de violação de patentes da Microsoft. No entanto, o uso de componentes potencialmente problemáticos não é necessário para programar aplicativos Mono.

Acordo entre Novell e Microsoft

Microsoft e Novell anunciaram o 2 de novembro de 2006a assinatura de um contrato no qual a Microsoft concorda em não processar a Novell ou seus clientes por violação de patentes de software. De acordo com Miguel de Icaza, chefe de desenvolvimento do Mono, o projeto Mono é afetado por este acordo, mas apenas para desenvolvedores Novell e seus clientes. Isso tem sido criticado por muitos no movimento do software livre, pois viola os princípios da igualdade de direitos entre todos os usuários de um determinado programa definido para software livre.

Projetos usando Mono

Notas e referências

  1. "  https://github.com/mono/mono/releases/tag/mono-6.12.0.90  " (acessado em 6 de novembro de 2020 )
  2. Compilador Mono C # (in) sob licença MIT X11 , Novell Inc., 8 de abril de 2008.
  3. (em) Stallman, Richard, Transcrição de Richard Stallman sobre o movimento do Software Livre , Free Software Foundation , 9 de março de 2006
  4. (in) Microsoft e Novell anunciam ampla colaboração na interoperabilidade e suporte do Windows e Linux SUSE , Novell Inc., 2 de novembro de 2006
  5. Declaração (in) no blog do líder do projeto Mono, Miguel de Icaza, sobre proteção de patente para o Mono , 4 de novembro de 2006
  6. (in) A Definição de Software Livre
  7. (em) "Colaboração Microsoft e Novell, siga" , explicações de Miguel de Icaza .
  8. (in) Artigo por David Sugar (Revista de Software Livre): "Da liberdade à escravidão; uma semana de duas distros" .

Veja também

Artigos relacionados

links externos