Presentation is loading. Please wait.

Presentation is loading. Please wait.

Mono 2.0入門 Mono meeting 2008-10-22(Wed.).

Similar presentations


Presentation on theme: "Mono 2.0入門 Mono meeting 2008-10-22(Wed.)."— Presentation transcript:

1 Mono 2.0入門 Mono meeting (Wed.)

2 What is .NET? what is Mono? .NET: Windowsのプログラムを簡単に開発できるように Microsoftが作った環境 ECMA, ISOで標準化 Microsoftのコード、Windows依存コードが多い Mono: .NETをGNU/Linuxその他の環境でも実現 GNU/Linuxのプログラムを.NETで簡単に作れる .NETアプリケーションをGNU/Linuxでも動作させる = Windowsのロックインから解放 .NETで出来ることの多くが、Monoでもできる

3 .NET outside Windows *nix: GNU/Linux, Solaris, BSD (6以前)
GNOME/Gtk+ - Monoはこの系譜 ※Ximian KDE/Qt – 伝統的にGNOMEとライバル ※qyoto Mac OS X Cocoa, Objective-C arch: i386,x86-64,PPC, SPARC,ARM,S390,MIPS Unity3D: Wii, PS3?, XBOX 360?, iPhone

4 paint-mono / MonoForum
.NET apps on Mono 動作するアプリケーション ASP.NET: MS starter kitsなど WinForms: paint-mono (paint.net) など Novellがテストしてみた 約2000件動作 / 全4600件 約1000件が6箇所以下の変更で動作 OpenSUSE build serviceのMono:Community MoMA (mono migration analyzer)でチェック paint-mono / MonoForum

5 Mono apps Gtk# : GNOMEのGUIツールキットGtk+をP/Invokeする .NETバインディング
Banshee music player F-Spot photo management tool Beagle desktop search GNOME Do その他多数 Moonlight : silverlight on GNU/Linux 2.0でmonoを利用 something

6 Mono behind ... SourceGear Vault Mainsoft Grasshopper Unity3D
SecondLife POP辞書 その他多数

7 Use Mono 2.0

8 install Mono 2.0 packages - “mono-complete”
SUSE - OpenSUSE10.2~, SLES-9~ MAC OS X, Windows - あり 10/21時点でまだ無し - Solaris, 他distro Ubuntu 8.10には含まれない方向 野良package OpenSUSEのinstalled images VMWare LiveCD

9 build Mono 2.0 sources: configure; make; make install
mono (deps: glib-devel, zlib-devel, bison, xorg-x11) mono-basic (VBサポート) winforms support libgdiplus (System.Drawing) gluezilla (WebBrowser. deps: {mozilla}-devel) ASP.NET support xsp (ASP.NET server) mod_mono (Apache module for xsp) mono-tools (各種外部ツール) debugger

10 build MonoDevelop 2.0 alpha
deps gtk-sharp, gnome-sharp, gtkmozembed-sharp, gtksourceview2-sharp, mono-addins けっこう面倒 -develライブラリが必要 configure - ここでビルドする機能を選択 make; make install

11 use Mono 2.0 gmcs MyApp.cs -pkg:dotnet csc MyApp.cs mdtool build (未完成)
MonoDevelop tool MSBuild代替機能 mono MyApp.exe java MyApp.class mdb MyApp.exe gdb MyApp xsp2 (web server) ilasm2, xsd, wsdl2, … gacutil2 monodevelop MonoDevelop

12 debugging with Mono 2.0 Console.WriteLine() !
mono (runtime): --debug, --trace, --profile mdb: Mono debugger gdbライクなコマンドラインツール MonoDevelop 2.0でIDE統合 gendarme FxCopライクなアセンブリコード検査 heap-shot : ヒープ プロファイリング

13 port Apps to Mono

14 porting blockers 未実装ライブラリ/メンバの使用 (MoMA it!) P/Invoke Windows専用のdll
ANSI文字列のマーシャリングの相違 SQL Server依存 private実装の非互換: serialization/remoting Windowsと*nixのファイルシステムの相違 環境変数MONO_IOMAP={drive|case|all} で解決 bugs! MoMA

15 not supported Windows依存の機能 COM (System.EnterpriseServices)
XPCOM, ICE等類似の技術はあるが、その結果呼び出 されるコンポーネントがWin32依存 MSMQ (System.Messaging) experimental binding to RabbitMQ WMI (System.Management) ACL (System.Security.AccessControl) POSIX ACLなどもあるが、不完全にしかマッチせず、実 質的に意味がない

16 not supported 一部のランタイム機能 generational GC GC自体はもちろんある
sgen-gc : 開発者がmono全般の面倒を見る役なのでな かなか進まない CAS (コードアクセスセキュリティ) CASの仕組みは存在するが、膨大なクラスライブラリの監 査がまだなので、デフォルトで無効 有効にするとNRobotが試せる ClickOnce (System.Deployment)も動作しない

17 not supported .NET 3.0 WPF : 対応予定なし ※WPF/E WF : 対応予定なし(一部古い実装あり)
WCF : 一部実装済 BasicHttpBinding, WebHttpBindingなどは動作 Moonlight 2.0で必要になったので、現在ではmonoに含 まれている

18 .NET and Mono internals

19 CLI 仮想マシンに基づくプログラム実行環境 実行環境中立なIL(Intermediate Language)
JITがILをCPU命令に変換して実行する 複数のプログラミング言語で共通の型システム 豊富なランタイム機能 ガベージコレクション AppDomain ジェネリック型 セキュリティ バージョン管理

20 CLR / Mono runtime .NET: CLR
.exeを直接実行→mscoree.dllの呼び出し→ランタイムの 選択→Main()実行 mono (runtime) - Cで実装 written in C. 標準Unix, glibにのみ依存 mono Foo.exeで実行 ※binfmt 実装: io-layer (Win32 I/O API), GC, メタデータAPI (icall, ア センブリローダ, side by side), ”mini” JITエンジン, セキュリティ (CAS, coreclr)

21 コンパイラ/開発言語 .NET Framework C#, VB.NET, C++/CLI, JScript.NET, ilasm
標準ライブラリ(Reflection.Emit / CodeDom)で簡 単に独自の言語設計が可能 Mono gmcs (C# 3), vbnc (VB 8), mjs (JS.NET), ilasm2 C++/CLIは未実装 ※GCC-CIL その他の言語 : 多くがMonoでも利用可能 IronPython, Nemerle, Boo, F# …

22 クラスライブラリ .NET コアライブラリ (mscorlib/System/System.Xml) 一部はECMA/ISO標準
DB接続 (ADO.NET) , Webアプリ (ASP.NET), GUI (Windows.Forms, WPF), Workflow … 多杉 Monoの実装 : ほぼC# たまにP/Invoke たまに MethodImplOptions.InternalCall

23 クラスライブラリ ADO.NETの実装 SqlClient Mono.Data.Tds (TDSのマネージド実装)
Odbc : unixodbc OleDb : libgda サードパーティ プロバイダ ほとんどが.NETと同様にMonoでも動作 ODP.NETは無理(OCI以外のdllをP/Invoke)

24 クラスライブラリ ASP.NETの実装 System.Web.dllは通常のC#実装
xsp2 : HttpWorkerRequestの実装(C#) Mono.WebServer (xsp) Mono.WebServer.ModMono mod_mono (Cのモジュール) Mono.WebServer.FastCgi

25 クラスライブラリ Windows Formsの実装 System.Drawing.dll - [DllImport (“gdiplus”)]
libgdiplus : 非Windows用にC/cairoで実装 System.Windows.Forms.dll - ”XplatUI” XplatUIWin32 : Win32 APIで実装 XplatUIX11 : X11 APIで実装 かつてXplatUIGtkという試みもあった Mono 1.2は日本語入力不可 → Mono 2.0で解消 XplatUICarbon : OS X Carbon APIで実装

26 統合開発環境 Visual Studio .NET MonoDevelop 1.0 MonoDevelop 2.0a コードエディタ
デバッガ winforms GUIデザイナ ASP.NETプロジェクト GUIデザイナ データベースサポート アドインAPI MonoDevelop 1.0 コードエディタ ASP.NETプロジェクト Gtk# GUIデザイナ アドインAPI (Mono.Addins) MonoDevelop 2.0a デバッガ ASP.NETコードエディタ

27 Mono History

28 timeline 2000/09: .NET 1.0 beta1 2001/04 最初のmcsデモ 2001/06: 1.0 beta2
2002/01: 1.0 / VS.NET 2003/04: 1.1 / VS.NET 2003 2003/11: 1.2 (2.0の前身) 2005/11: 2.0 / VS 2005 2006/11: 3.0 ”WinFX” 2007/04: Silverlight 1.0 beta 2007/11: 3.5 / VS 2008 2008/08: 3.5 SP1 2001/04 最初のmcsデモ 2001/07 Mono project launched 2002/12 first Tokyo meeting [en] 2003/08 NovellがXimianを買収 2004/06 Mono 1.0 2006/04 first Tokyo meeting [jp] 2006/11 Mono 1.2 2007/06 Moonlight launched 2008/03 MonoDevelop 1.0 2008/10 Mono 2.0 ←いまここ!

29 2.0 updates since 1.2 C# 2.0 → 3.0 VB 7 → 8 Windows Forms 1.1 → 2.0
ADO.NET, ASP.NET: 1.1 → 2.0 ASP.NET AJAX Linq to Objects | XML | DataSet パフォーマンス ASP.NETで3倍高速化 他は不明

30 Future versions Mono 2.2: 11月にブランチ、年内リリース JIT: Linear IR, ジェネリック コード共有
full AOT MoMA Web tool ADO.NET: TDS8 C#シェルとC# evaluator API ASP.NET Abstractions/Routing (多分)

31 Future versions Mono 2.4: 2009/Q1 IL verifier ASP.NET 3.5 updates
Winforms OS X updates MonoDevelop 2.0 Linq to SQL MSBuild 改良版alpha Mono 2.6: 2009/Q2 moonlight 2.0 preview Visual Studio plugin Mono 2.8: 2009/Q3 moonlight 2.0 beta MonoDevelop 2.4 compacting GC

32 おしまい おつかれさまでした contact: atsushi@ximian.com


Download ppt "Mono 2.0入門 Mono meeting 2008-10-22(Wed.)."

Similar presentations


Ads by Google