Paul Stubbs MCSD, MCSE 4.0, MCP+I, MCT, MCAD .Net
Agenda Language Features Development Environment Performance Total Cost of Ownership (TCO)
Hello World using System; class Hello { static void Main() { Console.WriteLine("Hello world"); }
.Net Framework Common Language Specification VB C++ C# J# … Visual Studio .NET Base Class Library ADO .NET and XML ASP .NET Web Forms Web Services Mobile Internet Toolkit Windows Forms Common Language Runtime Operating System
Design Goals Component Oriented Everything is an Object Properties, methods, events Design-time and run-time attributes Integrated documentation using XML No header files, IDL, etc. Everything is an Object
Design Goals Garbage Collection Versioning Exceptions Type Safe No memory leaks Versioning Built into the framework Exceptions Baked into the language and framework Type Safe No unsafe casts
Design Goals Multi-Platform Rotor Mono Multi-Language Win32 , Win64 FreeBSD Mono GNU/Linux , Unix, Mac OS X, Solaris Multi-Language Over 20 languages supported
Interoperability No need to rewrite everything Interop with COM+, XML, SOAP, DLL and other .Net assemblies Use .Net assemblies from COM C++ Pointers (in unsafe code) Unsigned integers Can only be run from FullyTrusted code
C# only Delegates Provide callbacks Eventing model Type safe function pointers Multicast Asynchronous
C# only Enumerations Structs (value types) Group together user defined constants Type Safe Structs (value types) Created on the stack Passed by value No need to garbage collect
C# only Foreach Iterate through arrays, collections and classes Consistent and concise String[] months = {“Jan”,”Feb”,”Mar”,”Apr”,”May”}; Foreach{string month in months} Console.WriteLine(“The month is “ + month);
C# only Properties Accessed as if it were a field Same as getter and setter pattern Maintains relationship between get and set Foo.setSize(getSize() + 1); Label.getFont().setBold(true); Java/C++ Foo.size++; Label.font.bold = true; C#
C# only Preprocessor Directives Runtime code generation Pass by reference Variable length parameter lists Explicit Interface Implementation
Development Tools Visual Studio .Net Rich Client development Web Client development Mobile Client (WAP) development Windows CE (PocketPC) development Office 11 (soon) development XML/XSL development Integrated Source Control
Visual Studio .NET
Performance / Pet Shop
Maintainability / Pet Shop
Affordability Windows on Intel delivers more bang for the buck than the Mainframe or UNIX-based servers Visual Studio .NET Less code End to End Debugging XCOPY deployment Integrate existing code Use existing developers skills
Summary C# and Java are very similar Power of C++ simplicity of VB C# is a standard ECMA-334 C#, ECMA-335 CLI, ISO Robust Development Environment High Performance Lower cost
Links MaineBytes .Net User Group Pet Shop benchmark test http://www.MaineBytes.com Pet Shop benchmark test http://www.middleware-company.com/j2eedotnetbench/ Comparison of C# and Java http://www.25hoursaday.com/CsharpVsJava.html (80 page white paper)
Links Mono http://www.go-mono.com Rotor http://www.corel.com/ssclii/