<Session>.

Slides:



Advertisements
Similar presentations
この部分こそが必 要とされている ! Runtime 自身と Expression が カバーする!
Advertisements

本プレゼンテーション ( 以下、本書 ) で提供されている情報は、本書が 発表された時点における Microsoft の見解を述べたものです。市場 ニーズの変化に対応する必要があるため、本書は記載された内容の実 現に関する Microsoft の確約とはみなされないものとします。また本 書に記載された情報の正確さについて、保証するものではありません。
Windows Azure ハンズオン トレーニング Windows Azure Web サイト入門.
Visual Studio 2010 の新機能 Coded UI Test
D&UNITE 株式会社 代表取締役 株式会社 T-Planning 取締役 Microsoft MVP for ASP.NET/IIS
Doxygen ~ IGModel を一例にした, 数値モデルのドキュメンテーションにおける Doxygen の利用
.NET Framework 4.0 世代の Expression Trees
D2-301 現時点の本資料は 完成版のスライドではありません。
榮樂 英樹 LilyVM と仮想化技術 榮樂 英樹
第3回参考文献発表 PHP言語 岩永逸平.
IBM Power Systems Linux センター のご紹介
JPAを利用した RESTful Webサービスの開発
.NET テクノロジー を利用した SAP ソリューションの拡張 (3階層化) (評価環境構築ガイド)
自社製ミドルウエアをDalvikと連携させることが可能になる
オペレーティングシステムⅡ 第11回 講師 松本 章代 VirtuaWin・・・仮想デスクトップソフト.
Docker.
C#でiPhoneアプリ開発 with MonoTouch
C#でiPhoneアプリ開発 with MonoTouch
Expression Blend 3で始めるSilverlight 3アプリケーション開発
Visual Studio 2005による XML Web サービス入門
UNIX Life KMSF M2 saburo.
Mono 2.0入門 Mono meeting (Wed.).
WPF(.NET3.5)   vs Silverlight 2.0 Beta1 中 博俊@わんくま同盟.
Hot Pepper for iPod touch
オープンソースのDarwin は Mac OS Xに何をもたらすのか
Ruby Extended Library Howto
SunSpot環境構築.
.NET Frameworkにおける マネージヒープと ガベージコレクション
Ruby Extended Library Howto
Solid Edge Customization with VB   (Fundamentals)
Microsoft .NET 入門 Silverlight のための 福井コンピュータ株式会社 小島 富治雄
Silverlight とは.
Visual Studio LightSwitchの概要
Perlを用いた 学内専用アップローダの作成
[コース: A1] .NET Framework の基礎
(B2) 親: minami, kazuki 多様な認証機器に対応する 認証システム (B2) 親: minami, kazuki.
TA 高田正法 B10 CPUを作る 2日目 SPIMのコンパイル TA 高田正法
Javaプログラムの実行まで バイト Javaの コード 実行 ソースコード Java ファイル名 ファイル名 abc.java
PHPの基礎と開発手法 Based on PHP5
.NET テクノロジー を利用した SAP ソリューションの拡張 (3階層化) (評価環境構築ガイド)
Titanium Studioを使った アプリ開発 Vol.1
初めてのTSF 囚人.
型付きアセンブリ言語を用いた安全なカーネル拡張
Oracle XEを使ってみよう 初音玲.
Expression Blend 3で始めるSilverlight 3アプリケーション開発
暗黙的に型付けされる構造体の Java言語への導入
オブジェクト指向 プログラミング 第二回 知能情報学部 新田直也.
Windows PowerShell Cmdlet
Microsoftのマルチプラットフォーム戦略
Microsoft Visual Studio 2005 Tools for
.NET Framework 3.0 概要 (旧称 : WinFX)
実行時情報に基づく OSカーネルのコンフィグ最小化
ゲーム開発モデルの基礎.
パソコンのしくみ ハードウェア OS(Operating System) アプリケーション NEC DOS
COM コンポーネント・オブジェクト・モデル.
初めてのTSF 囚人.
JXTA Shell (1) P2P特論 (ソフトウェア特論) 第4回 /
卒業論文に向けて(2) 学部4年生 島本 大輔 2004年10月29日.
Oracle XEを使ってみよう 初音玲.
Ibaraki Univ. Dept of Electrical & Electronic Eng.
Twitterクライアントに学ぶASP.NETアプリ
Java における 先進的リフレクション技術
SQL Server 2008 および 更新プログラムの一括セットアップ
C#プログラミング実習 第3回.
System.AddInを利用したアプリケーション拡張 - アドインの開発 -
プログラム分散化のための アスペクト指向言語
プログラミング基礎a 第9回 Java言語による図形処理入門(1) Javaアプレット入門
Javaとは Javaとはオブジェクト指向言語でJava VM(Java仮想マシン)と呼ばれるプログラム上で動作します。
1.2 言語処理の諸観点 (1)言語処理の利用分野
System.AddInを利用したアプリケーション拡張 - アドインの開発 -
Presentation transcript:

<Session>

魅せます、Monoの実力。 Atsushi Enomoto Novell, Inc. 最初にatokとbansheeを起動. SL,unityのsshots, simdのtextを展開 paintdotnet, MoMA, gsharp, remixtokyo, rubyclock using System.IO; from f in Directory.GetFiles ("/etc") where f.EndsWith ("rc") select f; gsharp with Banshee using Banshee.ServiceStack; using Banshee.Sources; Describe (typeof (SourceManager)); var engine = ServiceManager.PlayerEngine; engine; Describe (engine); engine.IsPlaying (); engine.Pause(); engine.CurrentTrack; Describe (engine.CurrentTrack); engine.Play(); Atsushi Enomoto Novell, Inc.

はじめに About this session first public mono/moonlight session at Microsoft the best of PDC2008 About me mono contributor since 0.17 (2002) sys.xml, and random stuff

Topics Mono introduction Mono and .NET interop PDC 2008 Mono session highlights Moonlight

The Mono Project Mono - .NET everywhere Moonlight - silverlight on Linux (so far) .NET Mono Windows x86 Mac x86,ppc Linux etc. x86,ppc,arm ... Silverlight Moonlight

Mono: Introduction

2001: the bootstrap Miguel de Icaza: GNOMEプロジェクト創始者 ※Ximian でもMicrosoft技術が大好き COM → “Unixをもう少しマシなものにしよう” .NET → “ECMA標準の利用” (@MSDN) Mono rationale: .NETの生産性をLinux/GNOME環境で実現 .NETアプリケーションをcross platformに オープンソース.NET環境の実現

Mono: .NET everywhere できること .NETアプリケーションのビルドと実行 everywhere! 再ビルドは原則不要 主な開発内容 mono: CLI ランタイム (VES) mcs: C# コンパイラ, 各種ツール クラスライブラリ xsp: ASP.NETサーバ $ mono [options] xsp2.exe [options]

Mono: GNOME dev. platform GTK#: C# binding for gtk+ GTK#アプリケーション: banshee, f-spot, beagle, tomboy, gnome do ... MonoDevelop IDE (Gtk# GUIデザイナ)

Mono in games Second Life (Linden Lab) オブジェクト - Linden scriptで記述 ILにコンパイルしてmonoで実行 Unity (Unity3D) Mac OS X上で動作する統合ゲーム開発実行環境 Nintendo WiiやiPhoneでも実行可能 ※ Mono on Wii, Mono on iPhone FusionFall (Cartoon Network)

Mono for .NET Interoperability

Demo Windows Forms on Linux [paint-mono] ASP.NET on Linux

Mono does not support ... .NET 3.0: 未実装 Windows依存: COM, MSMQ, WMI, ACL etc. 一部のランタイム機能 世代別GC コード アクセス セキュリティ ※ClickOnce

クラスライブラリの互換性 互換性の実現と現状の把握 未実装のAPI MonoTODOAttribute throw new NotImplementedException(); アセンブリから公開APIを取得して比較 API status page (http://go-mono.com/status) テストケースの作成と.NET上での動作確認 …といっても、目で確認してはいられない

MoMA MoMA (Mono Migration Analyzer) ユーザ アプリケーションから、未実装のAPIや存 在しないAPI、P/Invokeの利用をチェック 大まかな互換性チェックに有用 DEMO

MoMA MoMA (Mono Migration Analyzer) ユーザ アプリケーションから、未実装のAPIや存 在しないAPI、P/Invokeの利用をチェック 大まかな互換性チェックに有用 DEMO ※アプリケーションがMonoで動くかどうかは、 やってみないと分からない。でも完全には 動かないということを事前に知ることは可能。

more porting blockers ※Monoは.NET互換性実現のためだけに存在しているわ けではない プラットフォーム毎の相違は尊重する ファイルシステムの相違 ドライブ、大文字・小文字、slash/backslash → MONO_IOMAP環境変数 デフォルト文字コード (特にASP.NET) → web.config, gmcs -codepage:932

more porting blockers ランタイム シリアライゼーション private実装に依存 →レポートがあれば簡単なものは修正される P/Invoke [DllImport (“user32.dll”)] ANSI文字列マーシャリング (monoはutf-8) → FooBarW() / <dllmap> in *.config / pray … and bugs (please report!)

ここまでのまとめ Mono: .NET everywhere, rich GNOME, embedded Mono 2.0 ≒ .NET 2.0 + .NET 3.5の一部 no .NET 3.0, no Windows-ism MoMAで移植NGコードをチェック 移植には障害も多いが、解決できることが多い

The Root of Mono Framework

Mono Runtime (VES) written in C (組み込みAPIも公開) VESの機能はほぼサポート ガベージコレクション ※古典的 アセンブリローダ、GAC、side-by-side P/Invoke (*.so on Linux, *.dylib on OS X) (未) コード アクセス セキュリティ ※(済)coreclr IL verifier (Mono 2.4) Win32 I/Oエミュレーション

付論: native code interop P/Invoke - [DllImport (“gdiplus”)] static extern Status GdipCreateLineBrushI(...); icall - [MethodImpl (MethodImplOptions.InternalCall)] static extern bool CreateDirectory(...); Win32 I/Oエミュレーション ves_icall_System_IO_MonoIO_CreateDirectory(...); Sys.Drawing, Windows.Forms libgdiplus

付論: 多様な実行方式 実行方式 インタープリタ [deprecated], JIT (Just In Time), AOT (Ahead Of Time), full AOT (2.2) full AOTは組み込みに有用 実行方式 ネイティブコード生成 処理できるIL 速度 移植性 interp しない(VESが解釈・実行) 全て 遅 易 JIT 実行中随時 速 難 AOT 実行前 一部JIT実行 full AOT 一部エラー

Build your own runtime mkbundle ランタイム、ライブラリ、アプリケーションの一 本化 mono linker 独自のランタイムを作成可能 ※.NET CF linker + mkbundle: minimal deployment mscorlib Hello.exe Console mscorlib Hello.exe

Mono 2.2 highlight: Mono.Simd Mono.Simd.dll managed codeでSIMDの活用が可能 C#/IL上は単なるメソッド/演算子の呼び出し JIT最適化モジュールsimd Mono.Simdの利用を検知して、SIMD命令に変換 mono --optimize=[simd|-simd] -v -v -v -v test.exe

mcs: Mono C# Compiler C#で書かれたC#コンパイラ 当初は.NET上で開発 Mono.CSharp.dll: C# Evaluator C# 5.0 - compiler as a service (API) mcs net1_1.cs gmcs net_2_0_or_3_5.cs smcs net_2_1.cs (silverlight)

Demo: gsharp Mono.Attach 他のMonoプロセスをinjectして操作できるAPI gsharp: C# shell with VM attach API

ここまでのまとめ monoランタイム: いろいろな可能性 Mono.Simd: カスタムJIT最適化の好例 C# Evaluatorはおもしろい。gsharpで試せる

Moonlight

Moonlight brief history 2007/5: MS, Mix '07でSilverlightの公表 これに参加したMiguelが短期間での実装を計画 2007/6: ReMix '07 Franceでデモ成功 2007/9: MS/Novell提携 test cases / media codec 2008/3: Moonlight at Mix '08 ( John Lam ) 2009/1: Moonlight 1.0公開

Moonlight technology layers [1.0] User contents (HTML, JavaScript) silverlight.js media codec mozilla plugin (C++) libmoon (C++) User MS OS Mono

Moonlight technology layers XAP package App DLLs SDK DLLs [2.0] User contents (HTML, JavaScript) silverlight.js CoreCLR DLR言語 media codec mozilla plugin (C++) Silverlight Controls (dll) DLR libmoon (C++) System.Windows .Browser.dll mscorlib.dll, System.dll, System.*.dll DO/DP System.Windows.dll mono runtime (VES) User MS OS Mono

Microsoft helps Moonlight DLR (, IronPython, IronRuby): MS-PL Silverlight Controls: MS-PL testcases media codec その他メール等でのヘルプ

Try Moonlight 1.0 2009/1/20リリース Silverlight 1.0相当 数十件のSL 1.0サイトで確認 (see mono website) 数か月間のバグ修正

Moonlight 2.0 work (ongoing) Silverlight 2.0 - managed codeが利用可能 Moonlightでも2.0から CoreCLRの実装 ランタイム: IL verifier, CoreCLRセキュリティ (monoランタイムで未実装だった) クラスライブラリ - linker, tunerで互換APIを実現 Mono.Cecil: CILを操作するライブラリ full CLRライブラリのDLLを加工 存在しないメンバをinternalにするなどして隠蔽 不要なコードは削除

Demo Moonlight 1.0 Moonlight 2.0

</Session> Mono resources: website: http://mono-project.com blogs: http://go-mono.com/monologue Contact: atsushi@ximian.com search atsushieno mono meeting