Post on 11-Jun-2015
description
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
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
http://ecn.channel9.msdn.com/o9/ch9/5/3/4/2/9/4/techtalkmdccironpython_2MB_ch9.wmv .
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
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
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
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
MonoTouchMonoTouch 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
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
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
DemosDemos
● Fspot● Tomboy● MonoDevelop● Videos...
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 alomundocs.cs alomundovb.vb alomundoboo.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 alomundocs.cs
$ mbas alomundovb.vb
$ booc alomundoboo.boo
$ mono alomundocs.exeAlô mundo!!! em C#
$ mono alomundovb.exeAlô mundo!!! em MonoBASIC
$ mono alomundoboo.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 alomundogtkboo.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 `pkgconfig libs gtksharp` alomundogtkboo.boo
$ mono alomundogtkboo.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...