Platform Comparison, Java and .NET

advertisement
Platform Comparison
Java and .NET
Pat Palmer
University of Pennsylvania
14-Mar-16
compare.ppt
1
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?
14-Mar-16
compare.ppt
2
2008 forecast for market share of OS by platform:
Windows
Unix
Linux
Others
40%
29%
15%
16%
forecast market share of OS unit sales:
Windows
Linux
Unix
Others
(2q 06)
in 2002
45%
20%
16%
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
14-Mar-16
compare.ppt
3
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?
14-Mar-16
compare.ppt
4
1
14-Mar-16
simple programs
compare.ppt
5
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
14-Mar-16
compare.ppt
6
how much work is it to get this?
14-Mar-16
compare.ppt
7
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()
{
public void run()
Application.Run(new HelloForm());
{
}
this.setSize(new Dimension(200,200));
this.setTitle("Hello in Java");
public HelloForm()
this.setVisible(true);
{
}
ClientSize = new
}
System.Drawing.Size(200, 200);
}
}
14-Mar-16
Text = "Hello in C#";
}
compare.ppt
8
2
14-Mar-16
overview of platforms
compare.ppt
9
identical types of runtime environments
•J2SE (Standard) runtime
•C# or VB.NET with VS Express
•desktop applications
•J2EE (Enterprise) runtime
•desktop application
•IIS with VS Express Web
•web applications
•J2ME (Micro) runtime
•web applications
•.NET compact framework
•runtime for gadgets
14-Mar-16
•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
• all versions of Windows (40+)
• download from Microsoft
• JIT compiler and libraries
•
• JIT compiler and libraries
Java Development Kit (JDK)
•
NET framework 2.0 SDK
• Java compiler and utilities
• C# and VB.NET compilers and utilities
• Java bytecode
•
application servers
•
•
•
•
14-Mar-16
•
integrated development env. (IDE)
• Eclipse (free - IBM)
• Netbeans (free - Sun)
•
• Common Intermediate Language (CIL)
Tomcat
Glassfish (Sun)
BEA Weblogic
IBM Websphere
integrated development env. (IDE)
• Visual Studio Express (free - Microsoft)
FREE
NOT
•
application servers
compare.ppt
• Microsoft Internet Information Server (IIS)
11
features 1
•virtual machine
•platforms (all major OS’s)
•spec
•implementations
•libraries
•languages
•Java
•Jython
•Groovy
•web servers (many vendors)
•platforms (Unix, Linux)
•scalability
•cost
•web capabilities
•servlet
•JSP
•JSF
14-Mar-16
•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
•native code calling
•components
•beans
•.DLL
•environments
•environments
•applet (in browser)
•servlet (in server)
•Web Start
•ActiveX (in browser)
•handler (in server)
•Smart Client
•installs from web
•caches on user’s PC
•installs from web
•caches on user’s PC
•deployment
•deployment
•.jar
•.war
•.ear
•.class
•complex, painful learning curve
that differs for each web server,
container, and IDE
•.exe (on file system)
•.exe (in GAC)
•.dll (on file system)
•all builds and web installation
is automatically handled by
Visual Studio (Microsoft’s IDE)
•automated via ANT
•XML, like make on Unix
14-Mar-16
compare.ppt
13
features 3
•databases
•databases
•JDBC
•ODBC
•CORBA
•COM
•binary object remoting
•binary object remoting
•XML
•XML
•via 3rd-party add-ons until Java 6
•IDE’s
•excellent support early one
•IDE’s
•Eclipse, with 1000’s of plugins
•NetBeans (from Sun) – also free
•service oriented architecture (SOA)
•free versions of Visual Studio
•some third party IDE’s
•service oriented architecture (SOA)
•annotations appearing
•web services WS-I
•annotations
•web services WS-I
•supported but difficult (3rd party)
•new partial automation in Java 6 and
latest NetBeans IDE
•I haven’t evaluated these yet
14-Mar-16
compare.ppt
•superbly automated by Visual
Studion since 2005
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 API’s
• 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
14-Mar-16
compare.ppt
15
Just in Time (JIT) compilers in JRE (JVM) and .NET runtimes
compilation
source
code
compiler
execution
native
code
14-Mar-16
JIT
Compiler
compare.ppt
bytecode
.class file
metadata
before installation,
or the first time
each method is
called
16
console commands for compiling Java and C#.NET
hello.cs
hello.java
csc
javac
hello.exe
hello.class
1001111010001110
Java bytecode
1001111010001110
Common Intermediate Language (CIL)
> java hello
> hello.exe
assembly
these run in different
virtual machines
14-Mar-16
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
framework class libraries
Microsoft .NET
Framework
Common Language Runtime (CLR)
virtual machine (like Java)
Microsoft operating systems since Win98
14-Mar-16
compare.ppt
free download
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
JRE and JDK
Java API’s
Java Runtime Environement (JRE)
virtual machine
Unix, Linux, Max OS X, Windows
14-Mar-16
compare.ppt
free download
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)
14-Mar-16
compare.ppt
20
jargon checklist
•
•
•
•
•
•
•
•
•
•
metadata
bytecode
JVM
JRE
•
JDK
•
J2SE
J2ME
•
J2EE
IDE
•
GUI
14-Mar-16
what is an assembly?
•
an .exe or .dll file compiled by a .NET compiler
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?
•
what is native code (or unmanaged code)?
•
•
software that runs in the CLR
software than can run on Windows without the CLR
compare.ppt
21
3
14-Mar-16
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
14-Mar-16
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 automatically—avoids
memory leaks
• single inheritance
• avoiding the deadly diamond of death
• encapsulation
• all code must be in a class—intended 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
14-Mar-16
compare.ppt
24
4
14-Mar-16
why did Microsoft do it?
compare.ppt
25
Microsoft’s big headache
• prior to .NET, Microsoft had a big headache
• Microsoft was supporting too many operating systems
• application programming interfaces (API’s) were implemented
as dynamic link libraries (DLL’s) 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 doesn’t sound so bad
• after all, there are only a few different kinds of Windows…
…right?
14-Mar-16
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 API’s?
select the closest answer:
a)
b)
c)
d)
14-Mar-16
5
15
25
35
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 98
23.
Windows 98 Second Edition
Windows 2000 Professional with SP4
24.
Windows 2000 Server with SP4
Windows 2000 Advanced Server with SP4
25.
Windows 2000 Datacenter Server with SP4
Windows XP Professional with SP2
26.
Windows XP Home Edition with SP2
Windows XP Media Center Edition 2002 with SP227.
Windows XP Media Center Edition 2004 with SP2
28.
Windows XP Media Center Edition 2005
Windows XP Tablet PC Edition with SP2
29.
Windows XP Starter Edition
Microsoft Windows Millennium Edition
30.
Microsoft Windows Server™ 2003 Standard
Edition
Windows Server 2003 Enterprise Edition
31.
Windows Server 2003 Datacenter Edition
32.
Windows Server 2003 Web Edition
Windows Server 2003 R2, Standard Edition
33.
Windows Server 2003 R2, Enterprise Edition
34.
Windows Server 2003 R2, Datacenter Edition
35.
•
14-Mar-16
Windows XP Professional x64 Edition
Windows Server 2003, Standard x64
Edition
Windows Server 2003, Enterprise x64
Edition
Windows Server 2003, Datacenter x64
Edition
Windows Server 2003 R2, Standard x64
Edition
Windows Server 2003 R2, Enterprise x64
Edition
Windows Server 2003 R2, Datacenter x64
Edition
Windows Server 2003 with SP1, Enterprise
Edition for Itanium-based Systems
Windows Server 2003 with SP1,
Datacenter Edition for Itanium-based
Systems
Windows Server 2003 R2, Enterprise
Edition for Itanium-based Systems
Windows Server 2003 R2, Datacenter
Edition for Itanium-based Systems
Microsoft Windows Mobile™ for Pocket PC
Windows Mobile for Smartphone
Microsoft Windows CE
NOTE: does not include Vista
compare.ppt
28
Windows versions that can not run the .NET framework v2.0
1.
2.
3.
4.
5.
14-Mar-16
Windows
Windows
Windows
Windows
Windows
95
NT® Server
NT Workstation
Server 2003, Enterprise Edition for Itanium-based Systems
Server 2003, Datacenter Edition for Itanium-based Systems
compare.ppt
29
5
14-Mar-16
Service Oriented Architecture – the peacemaker?
compare.ppt
30
who are the big web server and database marketplace players?
•
•
•
•
•
Sun
IBM
BEA
SAP
Oracle
• Microsoft
14-Mar-16
compare.ppt
31
world wide web development
• Java servlets
• Java Server Pages (JSP)
• Beans
• CORBA (binary)
• XML web services (SOA)
14-Mar-16
• .NET handlers
• Active Server Pages (ASP.NET)
• .NET DLL’s and .NET custom controls
• COM (binary)
• XML Web services (SOA)
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
• it’s 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)
14-Mar-16
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?
14-Mar-16
compare.ppt
34
the end of this PowerPoint file
Hooray!
14-Mar-16
compare.ppt
35
Download