Mais conteúdo relacionado Semelhante a Os Rego (20) Os Rego1. 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 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 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 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 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 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 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 41. 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.