View
231
Download
3
Category
Preview:
Citation preview
MESDA Conference 2002
MESDA Annual Conference 2002MESDA Annual Conference 2002Software Development TrackSoftware Development Track
Java vs. C#Java vs. C#
MESDA Conference 2002
Presenters
Jeffrey Hoffman, Starlit Software<jeff@starlitsoftware.com>
Paul Stubbs, UnumProvident Corp.UnumProvident Corp. <pstubbs@unumprovident.com>
MESDA Conference 2002
Java
This is a placeholder.
C#
Paul StubbsMCSD, MCSE 4.0, MCP+I, MCT, MCAD .Net
Agenda
Language Features Development Environment Performance Total Cost of Ownership (TCO)
Hello World
using System;using System;
class Helloclass Hello{{ static void Main() {static void Main() { Console.WriteLine("Hello world");Console.WriteLine("Hello world"); }}}}
Operating SystemOperating System
Common Language RuntimeCommon Language Runtime
Base Class LibraryBase Class Library
ADO .NET and XMLADO .NET and XML
ASP .NETASP .NETWeb Forms Web ServicesWeb Forms Web Services
Mobile Internet ToolkitMobile Internet Toolkit
WindowsWindowsFormsForms
Common Language SpecificationCommon Language Specification
VBVB C++C++ C#C# J#J# ……V
isua
l Stud
io .NE
TV
isua
l Stud
io .NE
T
.Net Framework
Design Goals
Component Oriented 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 No memory leaks
Versioning Built into the framework
Exceptions Baked into the language and framework
Type Safe No unsafe casts
Design Goals
Multi-Platform Win32 , Win64
Rotor 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 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);
Foo.size++;
Label.font.bold = true;
Java/C++
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 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/
Recommended