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