Your SlideShare is downloading. ×
0
Mono 2.0 入門 Mono meeting 2008-10-22(Wed.)
What is .NET? what is Mono? <ul><li>.NET: Windowsのプログラムを簡単に開発できるようにMicrosoftが作った環境 </li><ul><li>ECMA, ISOで標準化
Microsoftのコード、Windows依存コードが多い </li></ul><li>Mono: .NETをGNU/Linuxその他の環境でも実現 </li><ul><li>GNU/Linuxのプログラムを.NETで簡単に作れる
.NETアプリケーションをGNU/Linuxでも動作させる = Windowsのロックインから解放
.NETで出来ることの多くが、Monoでもできる </li></ul></ul>
.NET outside Windows <ul><li>*nix: GNU/Linux, Solaris,  BSD (6 以前 ) </li><ul><li>GNOME/Gtk+ - Monoはこの系譜 ※Ximian
KDE/Qt – 伝統的にGNOMEとライバル ※qyoto </li></ul><li>Mac OS X </li><ul><li>Cocoa, Objective-C </li></ul><li>arch: i386,x86-64,PPC,...
.NET apps on Mono <ul><li>動作するアプリケーション </li><ul><li>ASP.NET: MS starter kitsなど
WinForms: paint-mono (paint.net) など
Novellがテストしてみた </li><ul><li>約2000件動作 / 全4600件
約1000件が6箇所以下の変更で動作 </li></ul><li>OpenSUSE build serviceの Mono:Community </li></ul><li>MoMA (mono migration analyzer)でチェック ...
Mono apps <ul><li>Gtk# : GNOMEのGUIツールキットGtk+をP/Invokeする.NETバインディング </li><ul><li>Banshee music player
F-Spot photo management tool
Beagle desktop search
GNOME Do
その他多数 </li></ul><li>Moonlight : silverlight on GNU/Linux </li><ul><li>2.0でmonoを利用 </li></ul></ul>something
Mono behind ... <ul><li>SourceGear Vault
Mainsoft Grasshopper
Unity3D
SecondLife
POP辞書
その他多数 </li></ul>
Use Mono 2.0
install Mono 2.0 <ul><li>packages  - “mono-complete” </li><ul><li>SUSE - OpenSUSE10.2~, SLES-9~
MAC OS X, Windows - あり
10/21時点でまだ無し - Solaris, 他distro </li><ul><li>Ubuntu 8.10には含まれない方向
野良package </li></ul></ul><li>OpenSUSEのinstalled images </li><ul><li>VMWare
LiveCD </li></ul></ul>
build Mono 2.0 <ul><li>sources: configure; make; make install </li><ul><li>mono (deps: glib-devel, zlib-devel, bison, xorg...
mono-basic (VBサポート)
winforms support </li><ul><li>libgdiplus (System.Drawing)
gluezilla (WebBrowser. deps: {mozilla}-devel) </li></ul><li>ASP.NET support </li><ul><li>xsp (ASP.NET server)
Upcoming SlideShare
Loading in...5
×

Monomeeting 20081022

1,533

Published on

Slides for Mono meeting Tokyo 2008-10-22 (Mono 2.0 introduction)

http://d.hatena.ne.jp/atsushieno/20081023/p1

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
1,533
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
6
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Transcript of "Monomeeting 20081022"

  1. 1. Mono 2.0 入門 Mono meeting 2008-10-22(Wed.)
  2. 2. What is .NET? what is Mono? <ul><li>.NET: Windowsのプログラムを簡単に開発できるようにMicrosoftが作った環境 </li><ul><li>ECMA, ISOで標準化
  3. 3. Microsoftのコード、Windows依存コードが多い </li></ul><li>Mono: .NETをGNU/Linuxその他の環境でも実現 </li><ul><li>GNU/Linuxのプログラムを.NETで簡単に作れる
  4. 4. .NETアプリケーションをGNU/Linuxでも動作させる = Windowsのロックインから解放
  5. 5. .NETで出来ることの多くが、Monoでもできる </li></ul></ul>
  6. 6. .NET outside Windows <ul><li>*nix: GNU/Linux, Solaris, BSD (6 以前 ) </li><ul><li>GNOME/Gtk+ - Monoはこの系譜 ※Ximian
  7. 7. KDE/Qt – 伝統的にGNOMEとライバル ※qyoto </li></ul><li>Mac OS X </li><ul><li>Cocoa, Objective-C </li></ul><li>arch: i386,x86-64,PPC, SPARC,ARM,S390,MIPS </li><ul><li>Unity3D: Wii , PS3?, XBOX 360?, iPhone </li></ul></ul>
  8. 8. .NET apps on Mono <ul><li>動作するアプリケーション </li><ul><li>ASP.NET: MS starter kitsなど
  9. 9. WinForms: paint-mono (paint.net) など
  10. 10. Novellがテストしてみた </li><ul><li>約2000件動作 / 全4600件
  11. 11. 約1000件が6箇所以下の変更で動作 </li></ul><li>OpenSUSE build serviceの Mono:Community </li></ul><li>MoMA (mono migration analyzer)でチェック </li></ul>paint-mono / MonoForum
  12. 12. Mono apps <ul><li>Gtk# : GNOMEのGUIツールキットGtk+をP/Invokeする.NETバインディング </li><ul><li>Banshee music player
  13. 13. F-Spot photo management tool
  14. 14. Beagle desktop search
  15. 15. GNOME Do
  16. 16. その他多数 </li></ul><li>Moonlight : silverlight on GNU/Linux </li><ul><li>2.0でmonoを利用 </li></ul></ul>something
  17. 17. Mono behind ... <ul><li>SourceGear Vault
  18. 18. Mainsoft Grasshopper
  19. 19. Unity3D
  20. 20. SecondLife
  21. 21. POP辞書
  22. 22. その他多数 </li></ul>
  23. 23. Use Mono 2.0
  24. 24. install Mono 2.0 <ul><li>packages - “mono-complete” </li><ul><li>SUSE - OpenSUSE10.2~, SLES-9~
  25. 25. MAC OS X, Windows - あり
  26. 26. 10/21時点でまだ無し - Solaris, 他distro </li><ul><li>Ubuntu 8.10には含まれない方向
  27. 27. 野良package </li></ul></ul><li>OpenSUSEのinstalled images </li><ul><li>VMWare
  28. 28. LiveCD </li></ul></ul>
  29. 29. build Mono 2.0 <ul><li>sources: configure; make; make install </li><ul><li>mono (deps: glib-devel, zlib-devel, bison, xorg-x11)
  30. 30. mono-basic (VBサポート)
  31. 31. winforms support </li><ul><li>libgdiplus (System.Drawing)
  32. 32. gluezilla (WebBrowser. deps: {mozilla}-devel) </li></ul><li>ASP.NET support </li><ul><li>xsp (ASP.NET server)
  33. 33. mod_mono (Apache module for xsp) </li></ul><li>mono-tools (各種外部ツール)
  34. 34. debugger </li></ul></ul>
  35. 35. build MonoDevelop 2.0 alpha <ul><li>1.0より2.0alphaの方が安定している(たぶん)
  36. 36. deps </li><ul><li>gtk-sharp, gnome-sharp, gtkmozembed-sharp, gtksourceview2-sharp, mono-addins </li><ul><li>けっこう面倒
  37. 37. -develライブラリが必要 </li></ul><li>configure - ここでビルドする機能を選択
  38. 38. make; make install </li></ul></ul>
  39. 39. use Mono 2.0 <ul><li>gmcs MyApp.cs </li><ul><li>-pkg:dotnet
  40. 40. csc MyApp.cs </li></ul><li>mdtool build (未完成) </li><ul><li>MonoDevelop tool
  41. 41. MSBuild代替機能 </li></ul></ul><ul><li>mono MyApp.exe </li><ul><li>java MyApp.class </li></ul><li>mdb MyApp.exe </li><ul><li>gdb MyApp </li></ul><li>xsp2 (web server)
  42. 42. ilasm2, xsd, wsdl2, …
  43. 43. gacutil2
  44. 44. monodevelop </li></ul>MonoDevelop
  45. 45. debugging with Mono 2.0 <ul><li>Console.WriteLine() !
  46. 46. mono (runtime): --debug, --trace, --profile
  47. 47. mdb: Mono debugger </li><ul><li>gdbライクなコマンドラインツール
  48. 48. MonoDevelop 2.0でIDE統合 </li></ul><li>gendarme </li><ul><li>FxCopライクなアセンブリコード検査 </li></ul><li>heap-shot : ヒープ プロファイリング </li></ul>
  49. 49. port Apps to Mono
  50. 50. porting blockers <ul><li>未実装ライブラリ/メンバの使用 (MoMA it!)
  51. 51. P/Invoke </li><ul><li>Windows専用のdll
  52. 52. ANSI文字列のマーシャリングの相違 </li></ul><li>SQL Server依存
  53. 53. private実装の非互換: serialization/remoting
  54. 54. Windowsと*nixのファイルシステムの相違 </li><ul><li>環境変数MONO_IOMAP={drive|case|all} で解決 </li></ul><li>bugs! </li></ul>MoMA
  55. 55. not supported <ul><li>Windows依存の機能 </li><ul><li>COM (System.EnterpriseServices) </li><ul><li>XPCOM, ICE等類似の技術はあるが、その結果呼び出されるコンポーネントがWin32依存 </li></ul><li>MSMQ (System.Messaging) </li><ul><li>experimental binding to RabbitMQ </li></ul><li>WMI (System.Management)
  56. 56. ACL (System.Security.AccessControl) </li><ul><li>POSIX ACLなどもあるが、不完全にしかマッチせず、実質的に意味がない </li></ul></ul></ul>
  57. 57. not supported <ul><li>一部のランタイム機能 </li><ul><li>generational GC </li><ul><li>GC自体はもちろんある
  58. 58. sgen-gc : 開発者がmono全般の面倒を見る役なのでなかなか進まない </li></ul><li>CAS (コードアクセスセキュリティ) </li><ul><li>CASの仕組みは存在するが、膨大なクラスライブラリの監査がまだなので、デフォルトで無効
  59. 59. 有効にすると NRobot が試せる
  60. 60. ClickOnce (System.Deployment)も動作しない </li></ul></ul></ul>
  61. 61. not supported <ul><li>.NET 3.0 </li><ul><li>WPF : 対応予定なし ※WPF/E
  62. 62. WF : 対応予定なし(一部古い実装あり)
  63. 63. WCF : 一部実装済 </li><ul><li>BasicHttpBinding, WebHttpBindingなどは動作
  64. 64. Moonlight 2.0で必要になったので、現在ではmonoに含まれている </li></ul></ul></ul>
  65. 65. .NET and Mono internals
  66. 66. CLI <ul><li>仮想マシンに基づくプログラム実行環境 </li><ul><li>実行環境中立なIL(Intermediate Language)
  67. 67. JITがILをCPU命令に変換して実行する </li></ul><li>複数のプログラミング言語で共通の型システム
  68. 68. 豊富なランタイム機能 </li><ul><li>ガベージコレクション
  69. 69. AppDomain
  70. 70. ジェネリック型
  71. 71. セキュリティ
  72. 72. バージョン管理 </li></ul></ul>
  73. 73. CLR / Mono runtime <ul><li>.NET: CLR </li><ul><li>.exeを直接実行->mscoree.dllの呼び出し->ランタイムの選択->Main()実行 </li></ul><li>mono (runtime) - Cで実装 </li><ul><li>written in C. 標準Unix, glibにのみ依存
  74. 74. mono Foo.exeで実行  ※ binfmt
  75. 75. 実装: </li><ul><li>io-layer (Win32 I/O API), GC, メタデータAPI (icall, アセンブリローダ, side by side), ”mini” JITエンジン, セキュリティ (CAS, coreclr) </li></ul></ul></ul>
  76. 76. <ul><li>コンパイラ/開発言語 </li></ul><ul><li>.NET Framework </li><ul><li>C#, VB.NET, C++/CLI, JScript.NET, ilasm
  77. 77. 標準ライブラリ(Reflection.Emit / CodeDom)で簡単に独自の言語設計が可能 </li></ul><li>Mono </li><ul><li>gmcs (C# 3), vbnc (VB 8), mjs (JS.NET), ilasm2
  78. 78. C++/CLIは未実装 ※GCC-CIL </li></ul><li>その他の言語 : 多くがMonoでも利用可能 </li><ul><li>IronPython, Nemerle, Boo, F# … </li></ul></ul>
  79. 79. クラスライブラリ <ul><li>.NET </li><ul><li>コアライブラリ (mscorlib/System/System.Xml) </li><ul><li>一部はECMA/ISO標準 </li></ul><li>DB接続 (ADO.NET) , Webアプリ (ASP.NET), GUI (Windows.Forms, WPF), Workflow … 多杉 </li></ul><li>Monoの実装 : ほぼC# </li><ul><li>たまにP/Invoke
  80. 80. たまに MethodImplOptions.InternalCall </li></ul></ul>
  81. 81. クラスライブラリ <ul><li>ADO.NETの実装 </li><ul><li>SqlClient </li><ul><li>Mono.Data.Tds (TDSのマネージド実装) </li></ul><li>Odbc : unixodbc
  82. 82. OleDb : libgda </li></ul><li>サードパーティ プロバイダ </li><ul><li>ほとんどが.NETと同様にMonoでも動作 </li><ul><li>ODP.NET は無理(OCI以外のdllをP/Invoke) </li></ul></ul></ul>
  83. 83. クラスライブラリ <ul><li>ASP.NETの実装 </li><ul><li>System.Web.dllは通常のC#実装
  84. 84. xsp2 : HttpWorkerRequestの実装 (C#) </li><ul><li>Mono.WebServer (xsp)
  85. 85. Mono.WebServer.ModMono </li><ul><li>mod_mono (Cのモジュール) </li></ul><li>Mono.WebServer.FastCgi </li></ul></ul></ul>
  86. 86. クラスライブラリ <ul><li>Windows Formsの実装 </li><ul><li>System.Drawing.dll - [DllImport (“gdiplus”)] </li><ul><li>libgdiplus : 非Windows用にC/cairoで実装 </li></ul><li>System.Windows.Forms.dll - ”XplatUI” </li><ul><li>XplatUIWin32 : Win32 APIで実装
  87. 87. XplatUIX11 : X11 APIで実装 </li><ul><li>かつてXplatUIGtkという試みもあった
  88. 88. Mono 1.2は日本語入力不可 -> Mono 2.0で解消 </li></ul><li>XplatUICarbon : OS X Carbon APIで実装 </li></ul></ul></ul>
  89. 89. <ul><li>統合開発環境 </li></ul><ul><li>Visual Studio .NET
  90. 90. コードエディタ
  91. 91. デバッガ
  92. 92. winforms GUI デザイナ
  93. 93. ASP.NET プロジェクト </li><ul><li>コードエディタ
  94. 94. GUI デザイナ </li></ul><li>データベースサポート
  95. 95. アドイン API </li></ul><ul><li>MonoDevelop 1.0
  96. 96. コードエディタ
  97. 97. ASP.NET プロジェクト
  98. 98. Gtk# GUI デザイナ
  99. 99. アドイン API (Mono.Addins)
  100. 100. MonoDevelop 2.0a
  101. 101. デバッガ
  102. 102. ASP.NET コードエディタ </li></ul>
  103. 103. Mono History
  104. 104. timeline 2000/09: .NET 1.0 beta1 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 ← いまここ !
  105. 105. 2.0 updates since 1.2 <ul><li>C# 2.0 -> 3.0
  106. 106. VB 7 -> 8
  107. 107. Windows Forms 1.1 -> 2.0
  108. 108. ADO.NET, ASP.NET: 1.1 -> 2.0
  109. 109. ASP.NET AJAX
  110. 110. Linq to Objects | XML | DataSet
  111. 111. パフォーマンス </li><ul><li>ASP.NETで3倍高速化 他は不明 </li></ul></ul>
  112. 112. Future versions <ul><li>Mono 2.2: 11月にブランチ、年内リリース </li><ul><li>JIT: Linear IR, ジェネリック コード共有
  113. 113. full AOT
  114. 114. MoMA Web tool
  115. 115. ADO.NET: TDS8
  116. 116. C#シェルとC# evaluator API
  117. 117. ASP.NET Abstractions/Routing (多分) </li></ul></ul>
  118. 118. Future versions <ul><li>Mono 2.4: 2009/Q1 </li><ul><li>IL verifier
  119. 119. ASP.NET 3.5 updates
  120. 120. Winforms OS X updates
  121. 121. MonoDevelop 2.0
  122. 122. Linq to SQL
  123. 123. MSBuild 改良版alpha </li></ul></ul><ul><li>Mono 2.6: 2009/Q2 </li><ul><li>moonlight 2.0 preview
  124. 124. Visual Studio plugin </li></ul><li>Mono 2.8: 2009/Q3 </li><ul><li>moonlight 2.0 beta
  125. 125. MonoDevelop 2.4
  126. 126. compacting GC </li></ul></ul>
  127. 127. おしまい おつかれさまでした contact: [email_address] http://d.hatena.ne.jp/atsushieno http://twitter.com/atsushieno
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×