Vous êtes sur la page 1sur 35

Platform Comparison

Java and .NET


Pat Palmer
University of Pennsylvania

Mar 20, 2015

compare.ppt

Java and .NET

Java was created by Sun in 1992


Microsoft introduced .NET and C# in 2000
both platforms are object-oriented, type safe, and have
automatic garbage collection
the two platforms have been competing vigorously on the
desktop
but especially in the area of server technology

many developers become expert on one platform


few have time to learn both

the schism of understanding the two platforms widens


due to misinformation and disinformation

what are the strengths and issues for each platform?

Mar 20, 2015

compare.ppt

2008 forecast for market share of OS by platform:


Windows
Unix
Linux
Others

(2q 06)

40%
29%
15%
16%

forecast market share of OS unit sales:


in 2002
Windows
45%
Linux
20%
Unix
16%
Others
19%

in 2003
59%
24%
10%
7%

(05)

in 2007
59%
33%
5%
3%

market share of server shipments by platform in 2005:


Windows
Linux
Unix
NetWare
Others

65.6%
20.0%
9.5%
4.2%
0.7%

FROM: InfoTech Trends http://www.infotechtrends.com/


report from 2Q 2006, accessed on 4/8/2007
Mar 20, 2015

compare.ppt

main sections

1. simple programs

2. overview of platforms

3. why did Sun do it?

4. why did Microsoft do it?

5. Service Oriented Architecture the peacemaker?

Mar 20, 2015

compare.ppt

Mar 20, 2015

simple programs

compare.ppt

console programs
// Java
public class Hello {
public static void main(String[] args) {
System.out.println("Hello world in Java");
}
}
// C#
namespace Hello {
public class Hello {
static void Main(string[] args) {
System.Console.WriteLine ("Hello world in C#");
System.Console.ReadLine();
}
}
}

VB
Module HelloWorld
Sub Main
System.Console.WriteLine(Hello World in VB.NET)
System.Console.ReadLine()
End Sub
End Module
Mar 20, 2015

compare.ppt

how much work is it to get this?

Mar 20, 2015

compare.ppt

mininal window
import java.awt.*;
import javax.swing.*;
public class Hello extends JFrame implements
Runnable
using System.Windows.Forms;
{
namespace TinyWindowApp
{
public static void main(String[] args)
public class HelloForm : Form
{
{
SwingUtilities.invokeLater(new Hello());
static void Main()
}
{
Application.Run(new HelloForm());
public void run()
}
{
this.setSize(new Dimension(200,200));
public HelloForm()
this.setTitle("Hello in Java");
{
this.setVisible(true);
ClientSize = new
}
System.Drawing.Size(200, 200);
}
Text = "Hello in C#";
}
}
}
Mar 20, 2015

compare.ppt

Mar 20, 2015

overview of platforms

compare.ppt

identical types of runtime environments


J2SE (Standard) runtime
desktop applications

J2EE (Enterprise) runtime


web applications

J2ME (Micro) runtime


runtime for gadgets

Mar 20, 2015

C# or VB.NET with VS Express


desktop application

IIS with VS Express Web


web applications

.NET compact framework


runtime for gadgets

compare.ppt

10

Java platform - .NET platform

Java Virtual Machine (JVM)


aka Java Runtime Environment (JRE)

Microsoft .NET Framework 2.0


aka .NET common language runtime (CLR)

Linux, Windows, Mac and Unix


download from Sun
JIT compiler and libraries

JIT compiler and libraries

Java Development Kit (JDK)

NET framework 2.0 SDK

Java compiler and utilities


Java bytecode

Eclipse (free - IBM)


Netbeans (free - Sun)

application servers

Tomcat
Glassfish (Sun)
BEA Weblogic
IBM Websphere

Mar 20, 2015

C# and VB.NET compilers and utilities


Common Intermediate Language (CIL)

integrated development env. (IDE)

all versions of Windows (40+)


download from Microsoft

integrated development env. (IDE)

Visual Studio Express (free - Microsoft)

FREE
NOT

application servers

Microsoft Internet Information Server (IIS)

compare.ppt

11

features 1
virtual machine
platforms (all major OSs)
spec
implementations

libraries
languages
Java
Jython
Groovy

web servers (many vendors)


platforms (Unix, Linux)
scalability
cost

web capabilities
servlet
JSP
JSF
Mar 20, 2015

virtual machine
platforms (all versions of Windows)
spec
implementations

libraries
languages
C#, VB.NET, J# from Microsoft
many others from third parties
(Haskell, Lisp, Python, COBOL, Fortran, etc.)

web servers (just one!)


platforms (most Windows)
scalability
cost

web capabilities
handler
ASP (.NET)
(forgot equivalent name)

compare.ppt

12

features 2
native code calling
components
beans

environments
applet (in browser)
servlet (in server)
Web Start
installs from web
caches on users PC

deployment
.jar
.war
.ear
.class
complex, painful learning
curve that differs for each web
server, container, and IDE

native code calling


components
.DLL

environments
ActiveX (in browser)
handler (in server)
Smart Client
installs from web
caches on users PC

deployment
.exe (on file system)
.exe (in GAC)
.dll (on file system)
all builds and web installation
is automatically handled by
Visual Studio (Microsofts IDE)

automated via ANT


XML, like make on Unix

Mar 20, 2015

compare.ppt

13

features 3
databases
JDBC

CORBA
binary object remoting

XML

databases
ODBC

COM
binary object remoting

XML

via 3rd-party add-ons until Java 6

IDEs

excellent support early one

IDEs

Eclipse, with 1000s of plugins


NetBeans (from Sun) also free

free versions of Visual Studio


some third party IDEs

service oriented architecture (SOA) service oriented architecture (SOA)


annotations appearing
web services WS-I
supported but difficult (3rd party)
new partial automation in Java 6
and latest NetBeans IDE
I havent evaluated these yet

Mar 20, 2015

annotations
web services WS-I
superbly automated by Visual
Studion since 2005

compare.ppt

14

the JRE and .NET runtimes include lots of libraries

programs can call a huge body of pre-written code


these reusable components are called the Class Libraries
in Java, sometimes they are also called packages or Java APIs
in .NET, they tend to be called the framework class libraries

the libraries are designed to be used identically


in Java, regardless of the underlying operating system
in .NET, regardless of the underlying version of Windows
OR which language is being used

Mar 20, 2015

compare.ppt

15

Just in Time (JIT) compilers in JRE (JVM) and .NET runtimes

compilation
source
code

compiler

bytecode
.class file
metadata

before installation,
or the first time
each method is
called

execution
native
code

Mar 20, 2015

JIT
Compiler

compare.ppt

16

console commands for compiling Java and C#.NET

hello.java

hello.cs
csc

javac
hello.class
1001111010001110
Java bytecode

> java hello

hello.exe
1001111010001110
Common Intermediate Language (CIL)

> hello.exe

assembly

these run in different


virtual machines
Mar 20, 2015

compare.ppt

17

.NET platform components

VB

C++

C#

web services automation

J#

Python

Windows Designer

ASP.NET, IIS

download free
Software
Development
Kit (SDK)

compilers

Microsoft Visual
Studio .NET

Data and XML


Microsoft .NET
Framework

framework class libraries


Common Language Runtime (CLR)
virtual machine (like Java)
Microsoft operating systems since Win98

Mar 20, 2015

compare.ppt

free
downloa
d

18

Java platform components

Java JRuby

JPython

web services automation

beans, remoting, servers

Java Server Pages and servlets

download free
Software
Development
Kit (SDK)

compilers

various open source


and proprietary players

Data and XML


Java APIs

JRE and JDK

Java Runtime Environement (JRE)


virtual machine
Unix, Linux, Max OS X, Windows

Mar 20, 2015

free
downloa
d

compare.ppt

19

who implements Java runtimes?


Sun Microsystems
Java HotSpot Virtual Machine
for Windows, Linux, Unix

Hewlett-Packard
Java runtime for HP-UX, OpenVMS,
Tru64, Reliant(Tandem) UNIX)

IBM
Java runtime for MVS, AIX, OS/400, z/OS

Apple Computer
MacOS Runtime for Java (MRJ)
J2SE built-in on Mac OS X
includes JDK (compilers)

BEA Systems
JRockit (for their web server)

Mar 20, 2015

compare.ppt

20

jargon checklist

metadata
bytecode
JVM
JRE

JDK
J2SE

J2ME

J2EE
IDE

GUI

what is an assembly?

what is metadata?

the self-describing information inside a .NET assembly or


Java .class file

What is CIL? (formerly MSIL)

Common Intermediate Language (inside a .NET assembly)

What is the CLR?

Common Language Runtime that executes CIL code

what is managed code?

software that runs in the CLR

what is native code (or unmanaged code)?

Mar 20, 2015

an .exe or .dll file compiled by a .NET compiler

software than can run on Windows without the CLR

compare.ppt

21

Mar 20, 2015

why did Sun do it?

compare.ppt

22

C and C++ perceived common problems

pointers are dangerous


memory leaks (failing to free memory correctly)
function pointers (jumping to the wrong place)
data pointers (pointing to the wrong place)

manual garbage collection is a lot of work


multiple inheritance (C++) can get very complicated
ambiguities like the diamond problem (a.k.a. diamond of
death)

not easily portable across platforms, even with re-compile


and discipline

Mar 20, 2015

compare.ppt

23

a few ways Java improved on C++


instead of pointers, Java has references
references are similar to pointers, but with protections
(cannot jump into illegal parts of memory)avoids
segmentation fault problems

automatic garbage collection


memory is reclaimed from the heap automaticallyavoids
memory leaks

single inheritance
avoiding the deadly diamond of death

encapsulation
all code must be in a classintended to encourage
information hiding

array bounds checking


libraries
many common tasks already coded and available for reuse
by means of inheritance
many interfaces (behaviors) already coded
Mar 20, 2015

compare.ppt

24

Mar 20, 2015

why did Microsoft do it?

compare.ppt

25

Microsofts big headache


prior to .NET, Microsoft had a big headache
Microsoft was supporting too many operating systems
application programming interfaces (APIs) were
implemented as dynamic link libraries (DLLs) develop using
C++
calling the Windows API was different on every operating
system
developers first had to find out exactly what kind of system
the program was running on
and then determine if the API desired was actually installed on
the system

that doesnt sound so bad


after all, there are only a few different kinds of Windows
right?

Mar 20, 2015

compare.ppt

26

party trivia question

how many different versions of the Windows operating


system existed before Vista, which had their own distinct
mix of APIs?
select the closest answer:
a)
b)
c)
d)

5
15
25
35

Mar 20, 2015

compare.ppt

27

Windows versions which can run the .NET framework


1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.

22. Windows XP Professional x64 Edition


23. Windows Server 2003, Standard x64
Edition
24. Windows Server 2003, Enterprise x64
Edition
25. Windows Server 2003, Datacenter x64
Edition
26. Windows Server 2003 R2, Standard x64
Edition
27. Windows Server 2003 R2, Enterprise
x64 Edition
28. Windows Server 2003 R2, Datacenter
x64 Edition
29. Windows Server 2003 with SP1,
Enterprise Edition for Itanium-based
Systems
30. Windows Server 2003 with SP1,
Datacenter Edition for Itanium-based
Systems
31. Windows Server 2003 R2, Enterprise
Edition for Itanium-based Systems
32. Windows Server 2003 R2, Datacenter
Edition for Itanium-based Systems
33. Microsoft Windows Mobile for Pocket
PC
34. Windows Mobile for Smartphone
35. Microsoft Windows CE
NOTE: does not include Vista

Windows 98
Windows 98 Second Edition
Windows 2000 Professional with SP4
Windows 2000 Server with SP4
Windows 2000 Advanced Server with SP4
Windows 2000 Datacenter Server with SP4
Windows XP Professional with SP2
Windows XP Home Edition with SP2
Windows XP Media Center Edition 2002 with
SP2
Windows XP Media Center Edition 2004 with
SP2
Windows XP Media Center Edition 2005
Windows XP Tablet PC Edition with SP2
Windows XP Starter Edition
Microsoft Windows Millennium Edition
Microsoft Windows Server 2003 Standard
Edition
Windows Server 2003 Enterprise Edition
Windows Server 2003 Datacenter Edition
Windows Server 2003 Web Edition
Windows Server 2003 R2, Standard Edition
Windows Server 2003 R2, Enterprise Edition
Windows Server 2003 R2, Datacenter Edition

Mar 20, 2015

compare.ppt

28

Windows versions that can not run the .NET framework v2.0

1.
2.
3.
4.

Windows
Windows
Windows
Windows
Systems
5. Windows
Systems

95
NT Server
NT Workstation
Server 2003, Enterprise Edition for Itanium-based
Server 2003, Datacenter Edition for Itanium-based

Mar 20, 2015

compare.ppt

29

Service Oriented Architecture the peacemaker?

Mar 20, 2015

compare.ppt

30

who are the big web server and database marketplace players?

Sun
IBM
BEA
SAP
Oracle

Microsoft

Mar 20, 2015

compare.ppt

31

world wide web development


Java servlets
Java Server Pages (JSP)

Beans
CORBA (binary)

.NET handlers
Active Server Pages (ASP.NET)

.NET DLLs and .NET custom controls


COM (binary)

XML web services (SOA) XML Web services (SOA)

Mar 20, 2015

compare.ppt

32

Service Oriented Architectures (SOA)


web services
remotely located programs that use XML to make remote
calls and get the results

XML traveling over HTTP


its all plain text and goes through firewalls
standards are emerging
Jave service end points and Microsoft client endpoints can
talk to each other (and vice versa)

Mar 20, 2015

compare.ppt

33

what we just covered

1. simple programs

2. overview of platforms

3. why did Sun do it?

4. why did Microsoft do it?

5. Service Oriented Architecture the peacemaker?

Mar 20, 2015

compare.ppt

34

the end of this PowerPoint file

Hooray!

Mar 20, 2015

compare.ppt

35

Vous aimerez peut-être aussi