Your SlideShare is downloading. ×

Os Rego

1,781

Published on

Published in: Business, Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

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

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Cross-Platform .NET with Mono Frank Rego Product Manager frego@novell.com Safe Harbor Statement The following is intended to outline our general product direction. It is intended for information purposes only, and may not be incorporated into any contract. It is not a commitment to deliver any material, code, or functionality, and should not be relied upon in making purchasing decisions. The development, release, and timing of features or functionality described for Novell products remains at the sole discretion of Novell.
  • 2. What is Mono®? Mono (mō•nō), n: 1. A complete and modern development platform for Linux 2. The necessary software to develop and run .NET client and server applications on Linux, Solaris, Mac OS X, Windows, and Unix 3. “Monkey” in Spanish What Can You Do with Mono? Migrate Microsoft .NET desktop and server applications to Linux ● without significant investment in rewriting code Target multiple platforms and increase addressable market ● Leverage existing expertise in computer languages for more ● efficient development © Novell Inc. All rights reserved 2
  • 3. Mono® Development Development Groups: • 18 developers at Novell – External contributors: • 400+ collaborators over the history of Mono. – 50+ active on a given month. – Not possible without open source community. • © Novell Inc. All rights reserved 3
  • 4. Project Status
  • 5. Goals Originally: • Improve our development platform on Linux. – As the community grew: • Expand to support Microsoft APIs. – As Mono® got more complete: • Provide a complete cross platform runtime. – Allow Windows developers to port to Linux. – © Novell Inc. All rights reserved 5
  • 6. Mono® Architecture An open source implementation of the .NET standard • with three main components: Class library – comprehensive set Simplified Mono Architecture of facilities for application development that can be used by Your Application (C#, others) any .NET language. 1 Common Language Runtime – Class Library supports the execution of apps written in Intermediate Language (after compilation by Common Language 2 Runtime Mono compiler) Operating System – .NET runs on Windows... Mono provides the 3 Operating System framework to develop and run .NET code on multiple 1: Library 2: Common Language Specification operating systems 3. Native Operating System API © Novell Inc. All rights reserved 6
  • 7. Mono® Stacks D-Bus# MySQL/Postgress Evolution# MySQL/Postgress Gtk#/Gnome ASP.NET ASP.NET ASP.NET Novell APIs: Mozilla Novell iFolder Mozilla Bonjour iFolder, LDAP ADO.NET Apache Mono GTK# Apache Mono Desktop: GTK# ADO.NET Identity ADO.NET Novell LDAP Gnome# Cecil OpenOffice Sqlite# Windows.Forms Windows.Forms Java Compatibility Compatibility Java Windows.Forms Google APIs Java Compatibility Microsoft Compatibility Libraries Mono Libraries .NET Stack Mono Stack Virtual Machine: Multilanguage Mono Runtime (Implementation of ECMA #335) © Novell Inc. All rights reserved 7
  • 8. Platforms, CIL, Code Generation. x86 C# Fortran SPAR Eiffel C C++ Common Code Generation: Intermediate StrongAR Just-In-Time Language or Ahead-of-Time M JavaScript Visual Basic s390 Java Cobol PowerPC © Novell Inc. All rights reserved 8
  • 9. Platform Support 32 bit: Operating Systems: • • x86 Linux – – SPARC Solaris – – S390, IBM MacOS X – – ARM family Windows – – PowerPC Nokia/Maemo – – 64 bit: • Contributed ports: x86-64 • – s390x, IBM Alpha, MIPS (not finished). – – Itanium – © Novell Inc. All rights reserved 9
  • 10. Language Support C# 1.0, C# 2.0: Work on C# 3.0 to start soon. • VB.NET: New compiler for Mono • Java: IKVM library provides Java compatibility, Uses GNU Classpath • Boo: Explicitly typed, Python-inspired language.. • IronPython: Microsoft's own open source implementation. • Nemerle: New hybrid (functional, object-oriented and imperative) • Phalanger: PHP compiler, commercial, recently open sourced. • Ruby.NET (under development): University of Queensland • PHP.NET (under development): Google summer of code 2005 • © Novell Inc. All rights reserved 10
  • 11. Visual Basic.NET New Compiler • A new from-scratch effort, written in Visual Basic 8 – Implements VB.NET 8 (Generics) – Essential for ASP.NET support (ASP.NET has to be able to – compile VB code found in ASPX files at runtime) Can do Visual Basic development *in* Linux (as opposed to – using Linux only as a deployment target) Included in Mono® 1.2.4 release – Visual Basic 8 compiler – targets 2.0 framework > Mainsoft's Visual Basic runtime for 2.0. - supports both 1.0 and > 2.0 profiles. MonoDevelop v 0.14 includes VB support – © Novell Inc. All rights reserved 11
  • 12. Mono® 1.0 (7/04) Windows Vista: .Net 3.0: 2007 .NET 2.0 Server: WCF/Indigo .NET 1.1 C# 2.0 Generics Server: Client Gtk# WinForms ASP.NET Upgrades to WPF/Avalon stack. © Novell Inc. All rights reserved 12
  • 13. Mono® 1.2 (11/06) Windows Vista: .Net 3.0: 2007 .NET 2.0 Server: WCF/Indigo .NET 1.1 C# 2.0 Generics Server: Client Gtk# WinForms ASP.NET Upgrades to WPF/Avalon stack. © Novell Inc. All rights reserved 13
  • 14. Mono® 1.2 Details Reliability and scalability: .NET 2.0 • • ZenWorks and iFolder C# 2.0 Complete – – pushed Mono on the server Some 2.0 API support. – xsp 1.0: 8 request/second – IronPython works. – xsp 1.2: 250 – Debugger: • request/second x86 and x86-64 debugger. – GUI • CLI-only, limited in – Windows Forms 1.1 debuts. – scenarios (no xsp). Gtk# 2.x series: updated – Needs usability testing. – binding, updated to Gtk+ 2.8 © Novell Inc. All rights reserved 14
  • 15. Mono® 1.2.4 Details Since the release in November 9th of 2006 of Mono 1.2, we have made four incremental updates to Mono with the following highlights: VB.NET compiler and runtime were Improved fidelity and performance of • • released. System.Drawing, support for Metafiles. 2.0 support completed for Web MSBuild able to build projects. • • Services (Generics). SafeHandles, HandleRef support. • ASP.NET WebForms are complete • MIPS, Alpha ports and Solaris/amd64 • (except for WebParts). ports. Extensive improvements to • Mono can now run without shared • Windows.Forms and 2.0 updates for it. memory segments. Release of Mono Migration Assistant. • New Mono.DataConvert library • Partial C# 3 support and System.Core • ADO.NET 2.0 updates, and support for • assembly. output parameters on stored System.Media implemented. procedures • HTTPS support in HttpListener. installvst tool for installing ASP.NET • • starter kits. 2.0 Socket API • New Sqlite bindings. • © Novell Inc. All rights reserved 15
  • 16. Mono® 2.0 Windows Vista: .Net 3.0: 2007 .NET 2.0 Server: WCF/Indigo .NET 1.1 C# 2.0 Generics Server: Client Gtk# WinForms ASP.NET Upgrades to WPF/Avalon stack. © Novell Inc. All rights reserved 16
  • 17. Mono 2.0 Directions Mono® 2.0: Core. Gtk# • • .NET 2.0 API support. Databinding support. – – CAS available. – New optimizations. – Languages: • Compacting GC. – VB compiler – MonoDevelop + Debugger. – GCC-based compilers – Improve Support: • Schedule • Windows integration, build. – ASP.NET 1H 2007 – Visual Studio integration. – WinForms 2H 2007 – MacOS X and X-Code. – © Novell Inc. All rights reserved 17
  • 18. C# 3.0 Mono® will support C# 3.0 • Largely incremental release – C# 3.0 introduces several language extensions that build on – C# 2.0 to support the creation and use of higher order, functional style class libraries. implicitly typed local variables, extension methods, lambda expressions, > object initializers, expression trees, and language integrated query (LINQ) Need to fix as many bugs as possible in C# 2.0 – implementation before starting to work on C# 3.0 © Novell Inc. All rights reserved 18
  • 19. Olive Project A set of add-on libraries for the Mono® core that bring some of the new .NET APIs to Mono. Currently Olive contains: • .NET 3.0 Stack in Vista Workflow APIs – .NET Development .NET 3.0 Applications Communication Foundation APIs. Tools – System.Query – .NET 3.0 System.Xml.XLinq – WCF WPF WCS WWF (Indigo) (Avalon) (infocard) (Workflow) PresentationFramework and – WindowsBase (only XAML support) .NET 2.0 CLR .NET 2.0 Base Class Libraries ASP .NET 2.0 ASO.NET 2,0, WinForms 2.0 Status • Pre-alpha state, API is still shifting – Windows (Windows XP,Windows Server 2003/R2 Development still in very early stages – Vista/Longhorn) Contributions, bug reports welcome – PC Hardware 2009 target – © Novell Inc. All rights reserved 19
  • 20. Mono and Silverlight Cross-browser plug-in for creating next • generation rich interactive applications Aimed at the Web, a way of spicing up • existing web applications without rewriting what already works. Mono project team developed the • Silverlight implementation in 21 days. Mono port • Allows Linux/Unix users to have access – to content produced with it Use Linux as a developer platform for – Silverlight-powered web sites. Use .NET languages to create Web – applications that run on any Linux device or other platforms that Mono supports. © Novell Inc. All rights reserved 20
  • 21. Mono® Project Roadmap Mono 1.2 (Q406) Mono 1.2.4 (May'07) Mono 2.0 (Q307) Mono 2.2 (Q407) Olive (Mono 3.0 – mid 2008) • WinForms 1.1 • VB.NET compiler • ASP.NET 2.0 • WinForms 2.0 • Windows Workflow (WF) • C# 2.0 w/generics • 2.0 Web Services • ADO.NET 2.0 • Compacting GC • Windows Comm. (WCF) • System.XML 2.0 (Generics). • WinForms 2.0 Preview • JIT optimization (Phase 2) • LINQ: Language Integrated Query • Full SLES hardware • ASP.NET WebForms • Visual Basic Compiler • Olive (.NET 3.0) preview • JIT optimization (Phase 3) support • Windows.Forms • Windows Dev Tools • C# 3.0 preview • GC tuning improvements • GUI Debugger • Silverlight • Mono Migration Assistant • Partial C# 3.0 support • Other features (below) 1H 2H 1H 2H 2006 2008 2007 Mono 1.2.4 Updates (Continued) System.Core assembly. Mono can now run without shared • • System.Media memory segments. • HTTPS support in HttpListener. New Mono.DataConvert library • • 2.0 Socket API. ADO.NET 2.0 updates, and support for • • System.Drawing updates output parameters on stored • Mono MSBuild procedures. • SafeHandles and HandleRef support installvst tool for installing ASP.NET • • MIPS, Alpha, Solaris/AMD64 ports starter kits. • New Sqlite bindings. • • Mono • As an open source project Mono is in a continuous release cycle • This roadmap is subject to change due to shifting priorities and market conditions • After each .x release, smaller .x.x and .x.x.x releases occur on a regular basis via the Mono-project website as new contributions are added © Novell Inc. All rights reserved 21
  • 22. Porting to Mono®
  • 23. Mono® Migration Analyzer (MoMA) http://www.mono-project.com/Moma New tool for migrating .NET • code Inspects CIL byte code • Looks for uses, compares • with implementation Missing methods • “Todo” methods (flagged • with an attribute) © Novell Inc. All rights reserved 23
  • 24. MoMA Results Nov-Feb ~1,500 results received in 3 months • 11% port today – 16% are VisualBasic.NET applications. – 67% use Windows.Forms – Today 3% use EnterpriseServices, 2% – Mono 1.2.5 MessageQueuing Mono 1.2.7 7% use System.Management < 20 Changes – [20.40] Changes We are not implementing, we are going to WCF > [40,90] Changes directly. [90,-] Changes 24% connect to databases. – 20% hit “To-Do”s (not very accurate) – 28% are .NET 1.1, 72% are .NET 2.0 – © Novell Inc. All rights reserved 24
  • 25. Performance Optimizations
  • 26. Performance We are on par with other similar systems The Computer Language Benchmarks Game http://shootout.alioth.debian.org/ Java 6 Python © Novell Inc. All rights reserved 26
  • 27. IronPython Performance Improvement 75000 70000 65000 60000 55000 50000 IronPython 1.0 Mono 1.1.13 45000 Python 2.4.2 40000 IronPython Mono 1.2.1 35000 IronPython 1.1B1 Mono 1.2.3 30000 25000 20000 15000 10000 5000 0 PyStone © Novell Inc. All rights reserved 27
  • 28. Mono® Successes
  • 29. Driving Desktop Innovation By improving the developer's • productivity on Linux, Mono® is driving innovation on the Linux Desktop: Beagle® – desktop search tool • Banshee – music jukebox • TM Dashboard – personal assistant • F-spot – photo organizer • TomBoy – note-taking app • • © Novell Inc. All rights reserved 29
  • 30. Commercial Mono®-based Apps Hundreds of application developed using Mono, • including: • Patient information system 3D game modeling tool • Windows to Linux migration tool • Test automation software • Managed office wiki • Instant messaging & social networking • Cross-platform CRM • Embeddable SQL database engine • © Novell Inc. All rights reserved 30
  • 31. Games Unity: 3D Game Development • C/C++ Core – Mono for high-level operations – Multiple-languages: JavaScript, Boo and – Mono Second Life: Virtual World • 3000 computers in August, growing at – 300 machines/month. 12,000 distinct scripts, 3 million lines of – script code (user code) Mono gives 50-150x performance – increase in scripts, access to more languages, specialize the AI. Programs consume half the memory. – © Novell Inc. All rights reserved 31
  • 32. Mobile Devices Sansa Connect • First Wi-Fi™ based MP3 player from – SanDisk’s audio line; plays music, photos and Internet radio Running Linux, entire application stack – is built on Mono, running on an ARM processor Developed by zing.net – “Best in Show” at CES – I've been doing stuff like this for the past 4 or 5 years, and I can definitely say that mono is WAY better than MSFT's .NetCF.” --Tim Nichols, Sansa Connect¸ Zing © Novell Inc. All rights reserved 32
  • 33. GUI Toolkits & Development Environments
  • 34. Three GUI Toolkits Gtk# • Native for Linux – A .NET binding for all GNOME APIs – Windows.Forms: • Support for 1.1 on the initial release – Cocoa# and Dumbarton • Frameworks for building native OS/X applications – Binds Cocoa, native API. – © Novell Inc. All rights reserved 34
  • 35. Developing with MonoDevelop Free Gnome IDE • Code completion – Class management – Built-in help – Glade integration – VB support – v 0.14 today – Subversion add-in. > Refactoring operations. > New smart indenting for C# > Project exporting and conversion (includes Visual Studio 2005) > New features in Gtk# designer. > Desktop Integration Features (editor for launchers, .desktop files). > © Novell Inc. All rights reserved 35
  • 36. Licensing
  • 37. Mono® Licensing Licenses chosen to maximize adoption. • Open Source licensed. • Standalone compilers: GPL – Mono Class libraries: MIT X11 – Runtime engine: LGPL – Novell® retains the copyright • Dual license for compiler and runtime under other terms. – Novell relicenses Mono for embedded vendors. – © Novell Inc. All rights reserved 37
  • 38. Embeddable Runtime. Mono® Virtual Machine: • Embeddable in C/C++ applications. – ~4Mb footprint for basic setup (uncompressed). – Allows C code to call managed code. – Allows managed code to call into main application. – Fast: • JIT engine provides the speed. – Choice of languages. – © Novell Inc. All rights reserved 38
  • 39. Mono® Resources Mono community • http://mono-project.com/Mailing_Lists – IRC Chat Room #mono on the irc.gnome.org server – Mono project website www.mono-project.com • Download Mono, Mono VM, Tools – Tutorials, Training – Mono virtual machine • Runs on any Windows or Linux computer that has VMware – Workstation or the free VMware player. Comes with preconfigured Mono installation that contain everything – you need to get started with Mono Novell® consulting • Deployment, migration services – © Novell Inc. All rights reserved 39
  • 40. Safe Harbor Statement The following is intended to outline our general product direction. It is intended for information purposes only, and may not be incorporated into any contract. It is not a commitment to deliver any material, code, or functionality, and should not be relied upon in making purchasing decisions. The development, release, and timing of features or functionality described for Novell products remains at the sole discretion of Novell. Unpublished Work of Novell, Inc. All Rights Reserved. This work is an unpublished work and contains confidential, proprietary, and trade secret information of Novell, Inc. Access to this work is restricted to Novell employees who have a need to know to perform tasks within the scope of their assignments. No part of this work may be practiced, performed, copied, distributed, revised, modified, translated, abridged, condensed, expanded, collected, or adapted without the prior written consent of Novell, Inc. Any use or exploitation of this work without authorization could subject the perpetrator to criminal and civil liability. General Disclaimer This document is not to be construed as a promise by any participating company to develop, deliver, or market a product. Novell, Inc., makes no representations or warranties with respect to the contents of this document, and specifically disclaims any express or implied warranties of merchantability or fitness for any particular purpose. Further, Novell, Inc., reserves the right to revise this document and to make changes to its content, at any time, without obligation to notify any person or entity of such revisions or changes. All Novell marks referenced in this presentation are trademarks or registered trademarks of Novell, Inc. in the United States and other countries. All third- party trademarks are the property of their respective owners.

×