Projeto MonoBrasil: O retorno no Jedi

51
 http://www.monobrasil.org http://www.monobrasil.org Alessandro Binhara MONO BRASIL

description

Depois de um longo tempo sem participar em evento de Software livre o MonoBrasil retorno ao Latino Ware em 2009 falando do Mono de usa novidades como IronPython, IronRuby, Mono CLI, C# shell, MonoGames, Unity e muitas outras tecnologias como o inicio do MonoDroid e MonoTouch

Transcript of Projeto MonoBrasil: O retorno no Jedi

   http://www.monobrasil.orghttp://www.monobrasil.org

Alessandro BinharaMONO BRASIL

   http://www.monobrasil.orghttp://www.monobrasil.org

AgendaAgenda● O lado Negro da Força

● Projeto Mono

– O que é ? Status. RoadMap, Plataforma, 

– Características, C# 3.0, Linq● Além do .NET

– Mono CLI, MonoDevelop

– MoMA, VSTools, MonoTouch

– MoonLigth, MonoGames

   http://www.monobrasil.orghttp://www.monobrasil.org

Nascimento do MONONascimento do MONO

● Criado por Miguel de Icaza em 2001

● Mono é uma implementação OpenSource do .NET Permite a execução e desenvolvimento de software .Net em ambiente Não Windows.

– Inicialmente ● 5 engenheiros, Foco em aplicações desktop

– Necessidade da criação de uma comunidade● Uso de licenças GPL,LGPL e MIT

   http://www.monobrasil.orghttp://www.monobrasil.org

Microsoft em 2000Microsoft em 2000

● Microsoft Lança a plataforma .Net

– Coloca o C# como um padrão– O Core do .Net é colocado como padrão

● Plataforma Microsoft .Net

– Multi-linguagem– Coletor de Lixo– C# tem mais recursos que o java

   http://www.monobrasil.orghttp://www.monobrasil.org

O Lado Negro da ForçaO Lado Negro da Força● Armadilha do .NET

● Boicote ao Mono

● Lembram: “Não usem o KDE(RMS)”

● Risco de Patentes

● Miguel de Icaza é o Anakin Skywalker do Software Livre!!!

   http://www.monobrasil.orghttp://www.monobrasil.org

O Lado Negro da ForçaO Lado Negro da Força

● Patentes de Software● Acordo Microsoft e NOVELL● Microsoft Patent License● CodePlex Foundation???● Flex ou Moonligth ?

Mono é Software Livre !– LGPL, MIT, BSD

Para o lado negro seria o Mono um caminho ? 

   http://www.monobrasil.orghttp://www.monobrasil.org

Runtime do MonoRuntime do Mono● É a máquina virtual do Mono

● O runtime do Mono está pronto e tem possibilidade de executar programas através de:

– um compilador JIT (mono), com e sem otimizações

– um interpretador (mint)

– Atualmente estão trabalhando na implementação de um gerenciador de memória mais eficiente

● Os programas podem ainda ser precompilados com um Ahead-of-Time Compiler (aot)

   http://www.monobrasil.orghttp://www.monobrasil.org

Mono Compilador C# 3.0Mono Compilador C# 3.0● Compilador C# escrito em C#

– Primeiro bootstrap em 2001, 10.000 linhas em 17s

– Hoje tem 82.000 linhas, compila em 2.2s

– 1.6x mais lento que o csc 

'

   http://www.monobrasil.orghttp://www.monobrasil.org

Suporte C# 3.0Suporte C# 3.0● mcs: compilador para rutime 

1.1.

● gmcs: compilador para runtime the 2.0 runtime.

● smcs: compiledor para rutime 2.1para compilar aplicações Moonlight.

● dmcs:  iniciado com Mono 2.6 parar C# 4.0  

 

   Características já suportadas: 

anonymous methods , iterators,partial classes , Generics , Nullable Types, friend assemblies , static classes, 

property accessor accessibility, fixed buffers, external assembly alias, namespace alias qualifier , inline 

warning control , Extension Methods, LINQ syntax, Expression trees, Automatic properties, Lambda 

expressions, Anonymous types. 

   http://www.monobrasil.orghttp://www.monobrasil.org

● Compatibilidade Binária com Microsoft .NET 1.0 / 1.1/ 2.0 / 3.0 , 3.5 e 4.0 (preview)

● Completamente escrito em licenças LGPL e BSD● Integração completa com ambientes Linux e Windows● Diversos toolkits gráficos: GTK, QT, Coca, Wxwindows,

Windows.Forms 1.0 e 2.0 !!● Suporte completo a ASP.NET 1.0 / 1.1/ 2.0 , Asp.NET MVC• Ajax.NET ,• Silverligth/Moonligth e Silverligth ToolKit

● Suporte a Banco de Dados● Todas as ferramentas da plataforma são escritas em C#● Várias bibliotecas estendidas: Mozilla, OpenGL, Zip#, oog#

Caracteríticas do MonoCaracteríticas do Mono

   http://www.monobrasil.orghttp://www.monobrasil.org

APISAPIS

   http://www.monobrasil.orghttp://www.monobrasil.org

PlataformasPlataformas

   http://www.monobrasil.orghttp://www.monobrasil.org

Linguagens DisponíveisLinguagens DisponíveisAda for .NET – A#

(http://www.usafa.af.mil/df/dfcs/bios/mcc_html/a_sharp.cfm)VisualBasic.NET – mbas e bmcs (http://www.mono-project.com)C# - mcs (mono-project) e cscc (DotGNU)Cobol• NetCOBOL - COBOL for .NET (Fujitsu -) • Net Express (Micro Focus) • KICKS for .NET™ (Intensity Software)

Hasquel - Hugs98 for .NET http://galois.com/~sof/hugs98.net/Lisp• RDNZL - http://www.weitz.de/rdnzl/• Foil - http://foil.sourceforge.net/• L Sharp .NET - http://www.lsharp.org/

   http://www.monobrasil.orghttp://www.monobrasil.org

Linguagens DisponíveisLinguagens DisponíveisLogo• TurtleTracks Logo - http://www.mech.upatras.gr/~robgroup/logo/turtletracks/index.html• Mono Logo - http://monologo.sourceforge.net/

Perl • PerlSharp - http://taubz.for.net/code/perlsharp/

LUA• Lua.NET - http://www.lua.inf.puc-rio.br/luanet/

Pascal • TMT .NET Project • RemObjects Chome - http://www.chromesville.com/

JavaScript• JScript .NET • Jscript - (DotGNU)• JANET - http://janet-js.sourceforge.net/

PHP• IronPHP - http://ironphp.sourceforge.net/• PHP4Mono - http://php4mono.sourceforge.net

   http://www.monobrasil.orghttp://www.monobrasil.org

Linguagens DisponíveisLinguagens DisponíveisPython• IronPython - http://www.ironpython.com/• Python for .NET compiler - http://starship.python.net/crew/mhammond/dotnet/• Python for .NET - http://www.zope.org/Members/Brian/PythonNet/index_html

Boo• Liguagem Boo - http://boo.codehaus.org/

Ruby • Ruby/.NET - http://www.saltypickle.com/rubydotnet/• NETRuby - http://www.geocities.co.jp/SiliconValley-PaloAlto/9251/ruby/nrb.html

Smalltalk• SmallScripts - http://www.smallscript.org/• LSWVST.Net - http://www.lesser-software.com/en/content/products/lswvst/lswvst-net.htm

Criada pelo BrasileiroRodrigo Bamboo

   http://www.monobrasil.orghttp://www.monobrasil.org

Suporte ao JavaSuporte ao Java

O IKVM é uma VM JAVA escrita em C# que possibilita executar byte code Java no Mono com o uso do GNUClassPath além de um conjunto de ferramentas para: 

conversão bytecode (java) ­> IL (mono)e IL (mono)­> bytecode (java)

✔ http://www.ikvm.net

   http://www.monobrasil.orghttp://www.monobrasil.org

Mono 1.0 Mono 1.1.5 Python 2.3 Pyhon 2.40

10000

20000

30000

40000

50000

60000

Pystones/second

Atualmente o IronPython é financiado pela Microsoft e  licenciadosob uma Linceça de Software Livre. 

   http://www.monobrasil.orghttp://www.monobrasil.org

www.trypython.orgwww.trypython.org

   http://www.monobrasil.orghttp://www.monobrasil.org

http://ecn.channel9.msdn.com/o9/ch9/5/3/4/2/9/4/techtalkmdccironpython_2MB_ch9.wmv . 

   http://www.monobrasil.orghttp://www.monobrasil.org

www.ironruby.netwww.ironruby.net

   http://www.monobrasil.orghttp://www.monobrasil.org

CASE Brasileiro – Mono BasicCASE Brasileiro – Mono Basic

● Números do Mono Basic– Engenheiros de Software : 2– Programadores: 4 – Suporte: 2 – Coordenação e Administração: 5– Prof. Colaboradores: 5– Parceiros: 10– Voluntários : 28– Países: EUA, México, Índia, Itália, Alemanha, 

Liechtenstein, Christmas Island, Brasil. 

   http://www.monobrasil.orghttp://www.monobrasil.org

Indo Além do .NETIndo Além do .NET

   http://www.monobrasil.orghttp://www.monobrasil.org

Escrita em C# com GTK#.

Integra o browser de documentação, como pode ser visto.

O debugger está sendo atualizado.

MonoDevelopMonoDevelop

   http://www.monobrasil.orghttp://www.monobrasil.org

MONO CLIMONO CLI

● Compiler service● C# shell● Mono linker● Injeção de Código num processo vivo

   http://www.monobrasil.orghttp://www.monobrasil.org

C# ShellC# Shell

● Um shell interativo para C# como python ou ruby. 

● Em console ou em GTK

● Demonstração

   http://www.monobrasil.orghttp://www.monobrasil.org

C# ShellC# Shell

   http://www.monobrasil.orghttp://www.monobrasil.org

C# ShellC# Shell

 

   http://www.monobrasil.orghttp://www.monobrasil.org

LINQ!!!LINQ!!!

   http://www.monobrasil.orghttp://www.monobrasil.org

LINQLINQ

public void Linq1() {    int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };    var lowNums =        from n in numbers        where n < 5        select n;

    Console.WriteLine("Numbers < 5:");    foreach (var x in lowNums) {        Console.WriteLine(x);    }}

   http://www.monobrasil.orghttp://www.monobrasil.org

LINQLINQ

    string [] cities = { “Auckland”, “Oslo”, “Sydney”,           “Seattle”, “Paris”, “Los Angeles” };

    IEnumerable places = from city in cities           where city.Length > 5                 orderby city descending           select city;

   http://www.monobrasil.orghttp://www.monobrasil.org

MoMAMoMA

   http://www.monobrasil.orghttp://www.monobrasil.org

Suse StudioSuse Studio

http://susestudio.com/

   http://www.monobrasil.orghttp://www.monobrasil.org

Mono ToolsMono Tools● Verifique a compatibilidade do seu Verifique a compatibilidade do seu 

aplicativo com o Mono Migration aplicativo com o Mono Migration Analaizer diretamente do Visual Analaizer diretamente do Visual StudioStudio

● Teste no Windos, Teste no LinuxTeste no Windos, Teste no Linux

● Debug remoto no LinuxDebug remoto no Linux

● Empacote para linuxEmpacote para linux

● Crie um Distro customizada para Crie um Distro customizada para seu aplicativo com o Suse Studioseu aplicativo com o Suse Studio

   http://www.monobrasil.orghttp://www.monobrasil.org

Don't talk , WALK!!!Don't talk , WALK!!!

   http://www.monobrasil.orghttp://www.monobrasil.org

Mono­TouchMono­Touch­ Versão comercial do mono para IPHONE­ Versão comercial do mono para IPHONE­    C# and .NET on the iPhone­    C# and .NET on the iPhone          .NET Bindings to Native APIs.NET Bindings to Native APIs          Distribute on the Apple App StoreDistribute on the Apple App Store          Enterprise deployableEnterprise deployable          MonoDevelop IntegrationMonoDevelop Integration          XCode IntegrationXCode Integrationhttp://monotouch.net/http://monotouch.net/http://monotouch.net/Tutorialshttp://monotouch.net/Tutorials

http://www.youtube.com/watch?v=M0VoyhKFmWghttp://monotouch.info/MonoTouch/Videoshttp://monotouch.net/http://www.codesnack.com/storage/screencasts/

   http://www.monobrasil.orghttp://www.monobrasil.org

Mono­touchMono­touch

   http://www.monobrasil.orghttp://www.monobrasil.org

Mono no NOKIA!Mono no NOKIA!

   http://www.monobrasil.orghttp://www.monobrasil.org

MoonLightMoonLight

● Implementação do SilverLigth da Microsoft● Baseado em XAML ● Integração com qualquer linguagem .NET● Construção de RIA – Rich Internet Aplication● Concorrente do Flash, Java FX

   http://www.monobrasil.orghttp://www.monobrasil.org

MoonLightMoonLight

See me inACTION!!

GO MONO!VIDEOS

   http://www.monobrasil.orghttp://www.monobrasil.org

WEB com MonoWEB com Mono

● Suporte para :– Apache + Modmono– FastGCI– XSP– Novo Site Mono Brasil

   http://www.monobrasil.orghttp://www.monobrasil.org

MONO GAMESMONO GAMES

MONO.SIMDCasesSencondLive mudou do LSL para Mono­ 50x a 300x mais rápidoUnit3d ­ Usa C#, Boo, unityScritpDemo Video

   http://www.monobrasil.orghttp://www.monobrasil.org

Mono GamesMono Games

   http://www.monobrasil.orghttp://www.monobrasil.org

CASE Brasileiro ­ DARUMACASE Brasileiro ­ DARUMA

   http://www.monobrasil.orghttp://www.monobrasil.org

CASE Brasileiro ­ DARUMACASE Brasileiro ­ DARUMA● Apartir de Março de 2006 a Daruma passou a 

surportar o uso de suas impressoras em ambiente Mono com Linux.

● Foram realizados treinamentos da equipe desenvolvedora no Brasil, e foram feitas melhorias internas na estrutura dos device drives linux das impressoras para ficarem 100% compatível com Mono.

   http://www.monobrasil.orghttp://www.monobrasil.org

Aplicações mono

   http://www.monobrasil.orghttp://www.monobrasil.org

DemosDemos

● F­spot● Tomboy● MonoDevelop● Videos...

   http://www.monobrasil.orghttp://www.monobrasil.org

Paint.NETPaint.NET

   http://www.monobrasil.orghttp://www.monobrasil.org

● Simplificando o deployment (em multiplataforma)

● Zip Install

– Baixe– Descompacte– Rode a primeira vez– Está instalado

Problemas: Zip install funciona por empacotar todas as dependências nas versões adequadas o que pode custar espaço em disco de 

bibliotecas instaladas múltiplas vezes. Alguma solução de compromisso onde grandes pacotes de alto reuso 

serem preinstalados e referenciados pode ser aceitável.

DeployDeploy

   http://www.monobrasil.orghttp://www.monobrasil.org

$ cat alomundo­cs.cs alomundo­vb.vb alomundo­boo.booclass AloMundo { public static void Main(string[] args){  System.Console.WriteLine("Alô mundo!!! em C#"); }}

Module AloMundo Public Sub Main(args as string())  System.Console.WriteLine("Alô mundo!!! em MonoBASIC") End SubEnd Module

print "Alô mundo!!! em Boo"

$ mcs /codepage:utf8 alomundo­cs.cs

$ mbas alomundo­vb.vb

$ booc alomundo­boo.boo

$ mono alomundo­cs.exeAlô mundo!!! em C#

$ mono alomundo­vb.exeAlô mundo!!! em MonoBASIC

$ mono alomundo­boo.exeAlô mundo!!! em Boo

A linguagem Boo foi desenvolvida pelo Rodrigo 'Bamboo' Oliveira, para o ambiente CLI (Mono/.NET).

É similar ao Python mas com tipagem estática, o que lhe permite interagir mais facilmente com as outras linguagens CLI.

Ver http://boo.codehaus.org/

Hello WorldHello World

   http://www.monobrasil.orghttp://www.monobrasil.org

$ cat alomundo­gtk­boo.booimport Gtk

Application.Init()

button = Button("Clique aqui!")button.Clicked += { Application.Quit() }

window = Window("Alô mundo em Boo!",                DefaultWidth:  300,                DefaultHeight: 150)window.Add(button)window.DeleteEvent += { Application.Quit() }window.ShowAll()

Application.Run()

$ booc `pkg­config ­­libs gtk­sharp` alomundo­gtk­boo.boo

$ mono alomundo­gtk­boo.exe

Hello worldHello world

   http://www.monobrasil.orghttp://www.monobrasil.org

ConclusãoConclusãoO Mono:

● É mais uma tecnologia para desenvolvimento de aplicações

● Dá flexibilidade na escolha de linguagens

● Endereça problemas de estabilidade de APIs/ABIs e de empacotamento

● É relativamente fácil de usar com ou sem ferramentas sofisticadas

● Já está em uso por vários desenvolvedores livres e tem futuro...