Mono é uma implementação em comunidade aberta do Framework .NET para uma ampla faixa de sistemas operacionais e arquiteturas de CPU (tradução de parte da documentação oficial do Mono). Neste artigo darei uma visão pessoal do projeto Mono. Alguns detalhes técnicos também serão abordados.
Lá você encontrará pacotes para várias distribuições do Linux
e para outros sistemas operacionais. Dependendo da distribuição que
você estiver utilizando, alguns pacotes extras (que não se encontram
no site) podem ser necessários.
Baixei os pacotes para o Fedora Core 1. A última versão até o
momento (17 de janeiro de 2005) é a 1.0.5. De acordo com a
documentação oficial, o projeto Mono atualmente em exercício inclui
o básico:
Compilador C#, uma máquina virtual, um mecanismo avançado de
geração de código (compilação Just-in-Time (na hora) e pré-compilação de código).
Bibliotecas de classes para suportar WebForms ASP .NET, Web Services, base de dados ADO .NET e Windows.Forms.
Há até uma IDE para desenvolvimento, o MonoDevelop. É uma
IDE que podemos classificar como boa. O MonoDevelop suporta
complementação de código, coloração de sintaxe, gerenciamento de
projetos, entre outras características que uma boa IDE pode ter.
Após ter o Mono instalado em seu sistema, para executar um aplicativo
escrito no Mono ou mesmo no .NET da Microsoft, podemos chamar via
linha de comando o comando "mono" ou "mint". Um programa compilado
para rodar na plataforma .NET ou com o Mono não é compilado
diretamente para código nativo, mas sim para um código intermediário
(tipo os bytecodes gerados por um compilador Java). Dessa
forma, o arquivo gerado é que deve ser executado pelo interpretador
Mono.
O comando mint representa uma forma adicional de interpretação.
A diferença é que o comando mono gera o código nativo para execução
e ainda utiliza um compilador JIT, enquanto o mint simplesmente
interpreta o código a ser executado.
Além de executarmos aplicações .NET, podemos desenvolver aplicativos
que podem rodar sobre o Mono. Podemos utilizar o compilador mcs
para compilar códigos escritos em C#. Há uma série de opções para o
compilador que podem ser exploradas a partir da documentação oficial.
Na próxima página veremos um exemplo funcional de utilização do Mono.
[1] Comentário enviado por jragomes em 04/02/2005 - 10:19h
Gostei do seu artigo, veio elucidar algumas coisas. Dá pra ver que poderemos usar o famigerado C# e rodar no linux sem problemas, isto é, até qdo a M$ deixar as coisas mais ou menos faceis. Vou arrumar uma maquineta mais potente pra por o Mono pra rodar :-)
Parabéns pelo artigo.!
[2] Comentário enviado por morvan em 04/02/2005 - 15:37h
Boa tarde, kaos666.
Antes de tudo, parabéns pela coragem de abordar um tema meio "tabu" para nós linuxistas militantes - he, he, he.
Kaos, eu teria titulado o seu artigo de "Mono, Porque não Usá-lo?", por uma questão de semântica. Repare que partícula "NÃO" muda bastante o enfoque; nada que esmaeça a qualidade do seu trabalho.
O .NET é uma virada de mesa fenomenal, por parte da M$oft. Houve uma guinada de 180º nos aplicativos, no modo de se programar e de se analisar os algoritmos. Mas, conforme você relata, e tal como preconizam os idealizadores do Mono, podemos e devemos tirar proveito desta empreitada da M$Tiplim!!! Agora, com este modelo de programação, enfim nos parece possível programar para resolver os problemas pontuais. E, é bom que se afirme, aí está a verdadeira implementação de um "esperanto" de programação.
[3] Comentário enviado por removido em 07/02/2005 - 21:07h
Ola kaos666
Gostaria de falalo que esse mono é do .NET so que é so um pouco do codigo .net não é total e alem disso a .net ta cheio de restrições e ainda por cima é tudo registrado portanto que usa da Boa Fé da Microsof se engana ela esta estrategiando pra derrubar o linux a plataforma .NET é toda cercadas de patentes e se usarmos ela pra desemvolvermos programas nos ficamos presos a patentes assim sendo muitissimo prejudicado até os Desenvolvedores do GNome é contra e não vai por na distribuiçao o Criador do Apache tambem é contra essa artimanha tão bem bolada da microsoft e tem outras pessoas de nomes famosos que são contra esse mono e devemos intender que quem colabora com o .NET tambem colabora com o desenvolvimento da Microsoft e nos Linuxistas de bom senso não desejamos que nossa arqui rival que de nada nos ajuda alias nos prejudica e retarda o crecimento do linux segurando e processando empresas que mudam para a Plataforma Linux então GALERA não vamos ser seduzindos por essa terrivel maldição. Como nota gostaria que intendessem e consientisasse.
Leia mais Por Favor http://beam.to/taq/mono.php
Leia mais Por Favor http://beam.to/taq/mono.php
Leia mais Por Favor http://beam.to/taq/mono.php
[4] Comentário enviado por kaos666 em 07/02/2005 - 22:13h
Tohho,
repeito sua opinião, mas acredito que até mesmo a Microsoft pode criar boas tecnologias. O que eu não concordo é com o modelo de negócio da Microsoft e com o monopólio que ela representa. Mas não podemos ignorar o fato que o .NET é uma tecnologia em ascencão e que temos algo semelhante(Mono) para rodar no Linux. O Mono tem um compilador C# completo(sem restrição), o básico, o necessário para falar a verdade, dos namespaces do .NET. Há coisas no .NET da Microsoft que não tem no Mono, assim como há coisas que tem no Mono que não tem no .NET da Microsoft. A Microsoft já liberou o básico, Miguel de Icaza foi lá e com a junto com um equipe começaram o projeto Mono e ainda criaram coisas que só tem no Mono(como construir aplicações com GUI utilizando Gtk). Riscos! Nós vivemos num mundo cheio de riscos, boas intenções... Java não é Open Source e new Free Software, tem patentes também envolvida na tecnologia Java. E tem muita gente que defende o free software que utiliza Java. A maioria das licenças que regem o Mono(versão free) lhe dá o status de free software, como o compilador C# mcs que é regido pela licença. Veja o texto abaixo, tirei do monodoc(que vem junto com o Mono):
-------------------------------
Mono and Licensing
The Mono runtime is licensed under the terms of the GNU LGPL, but it is also available under a commercial license for those who want to add proprietary extensions to the virtual machine. For licensing details, contact mono-licensing@ximian.com.
The Mono Compilers (C#, VB.NET) are licensed under the terms of the GNU GPL.
The Mono class libraries are licensed under the terms of the MIT X11 license, which is a very lax open source license.
-------------------------------------------------------------------------------------
Qual a licença que rege Java?
[5] Comentário enviado por kaos666 em 07/02/2005 - 22:20h
Esqueci de uma coisa: Mono não é uma chance para o Monopólio, mas apenas uma opção que surge para os usuários de outras plataformas que não o famigerado Windows. Devemos utilizar menos palavrões e palavras sem sentido(como maldição) e utilizar mais o raciocínio, pois palavrões mostra apenas a fraqueza emocional daqueles que não são capazes de expressar o que pensam de uma forma mais inteligente.
[6] Comentário enviado por fhrc em 17/02/2005 - 17:12h
Parabens kaos666, pelo artigo. O idéal Eclético é o mais sensato para um profissional de tecnologia. o uso de fanatismo e demagogia futeis não enobrecem e evoluem o linux, apenas denegride a imagem do mesmo.
[7] Comentário enviado por Terramel em 24/02/2005 - 15:04h
O mono com certeza é algo interessante, mas não apoio e espero q ninguém use, pois ele também representa uma grande ameaça ao Linux.
Nem os desenvolvedores do GNOME nem do APACHE são a favor do mono(polio).
Espero q nao só o mono, mas principalmente q o .NET nao va pra frente.
Só vou ser a favor do mono quando a m$ cair, o .NET cair, o Bill Gates morrer e tudo da M$ perder tudo quanto é patente! hehehehe! E ainda assim vou ficar com um pé atrás!
[8] Comentário enviado por kaos666 em 26/02/2005 - 20:40h
Caro Leornardo,
como o próprio Miguel me falou (na lista mono-brasil), qualquer software (e não só o Mono) está sujeito ao "ataque" das patentes. Seja ele a própria linguagem C++, Apache, PHP ou o que você quiser. Mono não só é interessante, como também é viável. Se você quer lutar contra o Monopólio, lute contra as patentes, pois enquanto elas existirem (não importa se Mono ou a Microsoft exitem), haverá o perigo da Monopolização (não sei se este termo existe, mas quero me referir ao ato de monopolizar) existirá. Até o Linux que tanto adoramos está sendo ameaçado pelas patentes (isto antes mesmo do Mono existir). Existem milhões de patentes registradas nos EUA (não só patentes de software). A Monsanto patenteia tipos de sementes, a Miracles (empresa Francesa) patenteia sequências de genes (algo q demorou milhões de anos para atingir o estado q existe hoje). Portanto, temos q lutar para as patentes serem extinguidas nos países onde elas são permitidas e lutar para q elas "não se tornem leis" nos países onde elas não existem.
Há a possibilidade de o uso do direito das patentes aumentar a mortalidade me países pobres. E práticas semelhantes entregaram o controle de qualquer bem comum (inclusive a água) sob o controle de grandes corporações. Mono?! Mono é mais uma opção livre que tem o objetivo de atrair programadores do Windows para o ambiente Linux, sem exigir daqueles que passem por uma curva de aprendizagem muito acentuada. Pense no q você fala, pense no todo e não somente num caso específico.
[9] Comentário enviado por removido em 07/12/2005 - 13:41h
Eu prefiro muito mais o Linux do que o Windows, mas não podemos ser fanáticos!
Trabalho em uma empresa (Focusnetworks - http://www.focusnetworks.com.br) que desenvolve sistemas baseados na web. Especificamente eu desenvolvo sistemas de Gestão Comercial e Orçamentária. Programo para Windows Server 2003, IIS 6. Utilizo MS SQLServer, e por aí vai...
Sinceramente, eu preferia trabalhar com PHP, Linux, Apache, MySQL, Postgresql, mas se o melhor que consegui até agora é trabalhar com Windows, e a empresa cresce bastante a cada dia que se passa, então vou estudar para crescer com ela!
Comprei, sábado passado (05/12) um livro sobre C# (PROFESSIONAL C# PROGRAMANDO) de 1072 páginas. Vou estudá-lo para, quem sabe, ano que vem tirar certificação Microsoft.
O que quero dizer é: quando falamos de programação, de TI, temos que pensar no que precisamos naquele momento, quais são as ferramentas que melhor atenderão as nossas necessidades, o cliente tem prefência por alguma tecnologia em especial, e assim por diante...
Se hoje só programamos para Linux e um cliente diz que precisa de um programa em C#, teremos o Mono para nos ajudar a permanecer no Linux, sem deixar de atender a necessidade desse cliente...