• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Monomeeting 20081022
 

Monomeeting 20081022

on

  • 3,060 views

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

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

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

Statistics

Views

Total Views
3,060
Views on SlideShare
3,057
Embed Views
3

Actions

Likes
0
Downloads
5
Comments
0

1 Embed 3

http://www.slideshare.net 3

Accessibility

Categories

Upload Details

Uploaded via as OpenOffice

Usage Rights

CC Attribution License

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Monomeeting 20081022 Monomeeting 20081022 Presentation Transcript

    • Mono 2.0 入門 Mono meeting 2008-10-22(Wed.)
    • 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でもできる
    • .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
    • .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
    • 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
    • Mono behind ...
      • SourceGear Vault
      • Mainsoft Grasshopper
      • Unity3D
      • SecondLife
      • POP辞書
      • その他多数
    • Use Mono 2.0
    • 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
    • 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
    • build MonoDevelop 2.0 alpha
      • 1.0より2.0alphaの方が安定している(たぶん)
      • deps
        • gtk-sharp, gnome-sharp, gtkmozembed-sharp, gtksourceview2-sharp, mono-addins
          • けっこう面倒
          • -develライブラリが必要
        • configure - ここでビルドする機能を選択
        • make; make install
    • 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
    • debugging with Mono 2.0
      • Console.WriteLine() !
      • mono (runtime): --debug, --trace, --profile
      • mdb: Mono debugger
        • gdbライクなコマンドラインツール
        • MonoDevelop 2.0でIDE統合
      • gendarme
        • FxCopライクなアセンブリコード検査
      • heap-shot : ヒープ プロファイリング
    • port Apps to Mono
    • porting blockers
      • 未実装ライブラリ/メンバの使用 (MoMA it!)
      • P/Invoke
        • Windows専用のdll
        • ANSI文字列のマーシャリングの相違
      • SQL Server依存
      • private実装の非互換: serialization/remoting
      • Windowsと*nixのファイルシステムの相違
        • 環境変数MONO_IOMAP={drive|case|all} で解決
      • bugs!
      MoMA
    • 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などもあるが、不完全にしかマッチせず、実質的に意味がない
    • not supported
      • 一部のランタイム機能
        • generational GC
          • GC自体はもちろんある
          • sgen-gc : 開発者がmono全般の面倒を見る役なのでなかなか進まない
        • CAS (コードアクセスセキュリティ)
          • CASの仕組みは存在するが、膨大なクラスライブラリの監査がまだなので、デフォルトで無効
          • 有効にすると NRobot が試せる
          • ClickOnce (System.Deployment)も動作しない
    • not supported
      • .NET 3.0
        • WPF : 対応予定なし ※WPF/E
        • WF : 対応予定なし(一部古い実装あり)
        • WCF : 一部実装済
          • BasicHttpBinding, WebHttpBindingなどは動作
          • Moonlight 2.0で必要になったので、現在ではmonoに含まれている
    • .NET and Mono internals
    • CLI
      • 仮想マシンに基づくプログラム実行環境
        • 実行環境中立なIL(Intermediate Language)
        • JITがILをCPU命令に変換して実行する
      • 複数のプログラミング言語で共通の型システム
      • 豊富なランタイム機能
        • ガベージコレクション
        • AppDomain
        • ジェネリック型
        • セキュリティ
        • バージョン管理
    • 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)
      • コンパイラ/開発言語
      • .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# …
    • クラスライブラリ
      • .NET
        • コアライブラリ (mscorlib/System/System.Xml)
          • 一部はECMA/ISO標準
        • DB接続 (ADO.NET) , Webアプリ (ASP.NET), GUI (Windows.Forms, WPF), Workflow … 多杉
      • Monoの実装 : ほぼC#
        • たまにP/Invoke
        • たまに MethodImplOptions.InternalCall
    • クラスライブラリ
      • ADO.NETの実装
        • SqlClient
          • Mono.Data.Tds (TDSのマネージド実装)
        • Odbc : unixodbc
        • OleDb : libgda
      • サードパーティ プロバイダ
        • ほとんどが.NETと同様にMonoでも動作
          • ODP.NET は無理(OCI以外のdllをP/Invoke)
    • クラスライブラリ
      • ASP.NETの実装
        • System.Web.dllは通常のC#実装
        • xsp2 : HttpWorkerRequestの実装 (C#)
          • Mono.WebServer (xsp)
          • Mono.WebServer.ModMono
            • mod_mono (Cのモジュール)
          • Mono.WebServer.FastCgi
    • クラスライブラリ
      • 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で実装
      • 統合開発環境
      • Visual Studio .NET
      • コードエディタ
      • デバッガ
      • winforms GUI デザイナ
      • ASP.NET プロジェクト
        • コードエディタ
        • GUI デザイナ
      • データベースサポート
      • アドイン API
      • MonoDevelop 1.0
      • コードエディタ
      • ASP.NET プロジェクト
      • Gtk# GUI デザイナ
      • アドイン API (Mono.Addins)
      • MonoDevelop 2.0a
      • デバッガ
      • ASP.NET コードエディタ
    • Mono History
    • 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 ← いまここ !
    • 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倍高速化 他は不明
    • 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 (多分)
    • 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
    • おしまい おつかれさまでした contact: [email_address] http://d.hatena.ne.jp/atsushieno http://twitter.com/atsushieno