A Comparative Analysis of Microsoft’s .NET and Sun’s J2EE Outline Part 1 Part 2 High level description Pros & Cons Paralleling Technologies Part 3 Introduction Key Differences/ Underlying Philosophies JVM vs CLR Part 4 .NET Overview Part 1 Introduction 1. Application Servers In the beginning, there was darkness and cold. Then, … mainframe terminals terminals Centralized, non-distributed Application Servers In the 90’s, systems should be client- server Application Servers Today, enterprise applications use the multi-tier model What is...? Enterprise Computing A framework Ties together a bunch of discrete objects/components Makes it easier to use complex technologies. A Wrapper A skeleton/building block J2EE and .NET Forrester Report: The State of Technology Adoption Source: http://download.microsoft.com/download/c/7/5/c75837dc-90bb-44d8ae70-db7bcc5980b9/TheStateofTechnologyAdoption.pdf Part 2 High level description Pros & Cons Paralleling Technologies J2EE High Level Description A specification (not a product) Based on J2SE http://java.sun.com/j2ee/compatibility.h tml J2EE High Level Description App 1 App 2 Application Client Dynamic HTML Pages JSP Pages Client Tier Client Machine Web Tier J2EE Server Machine EJB DB EJB Business Tier DB EIS Tier DB Server Machine J2EE High Level Description Containers Access underlying Services Interface between component and lowlevel functionality Specific types of containers for different components: EJB Container Web Container J2EE High Level Description Server Tier Client Tier Web Container EIS Tier EJB Container Applet Container Session Beans Entity Beans Application Client Container JSP Pages & Servlets JavaBeans Message-Driven Beans Datab ase J2EE High Level Description Client Tier Web Clients Applets, HTML, XML, etc.. Application Clients GUI J2EE High Level Description Web Tier Servlets javax.servlet.Servlet JSP Pages Compiled into a servlet J2EE High Level Description Business Tier Enterprise Java Beans Session Beans Stateless Statefull Entity Beans Message Driven Beans .NET High Level Description Developer Choice Common Language Runtime Platform Interoperability "You very seldom want to port an existing application between platforms, but you do want to interoperate between applications regardless of platform; therefore, industry standard support for Web Services is of great importance.” -Dan Fox, Solutech, Inc. Author of: Building Distributed Applications with Visual Basic.NET .NET Framework Web Services Windows Forms Web Forms Data and XML Classes (ADO.NET, SQL, XML, etc.) Framework Base Classes (IO, string, net, security, threading , text, etc.) Common Language Runtime (debug, exception, type checking, JIT compilers) Windows Platform .NET Framework Programming model of the .NET environment for building, deploying, and running Web-based applications, smart client applications, and XML Web services. It manages much of the plumbing, enabling developers to focus on writing the business logic code for their applications. .NET Framework The .NET Framework includes the common language runtime and class libraries. The .NET Framework VB C++ C# J# Other Common Language Specification Web Forms XML Web Services Windows Forms Base Class Library Common Language Runtime (JIT compilation, memory management, etc.) Windows Common Language Runtime The Common Language Runtime (CLR) is a runtime engine Manages .NET Code (such as C# applications) Provides features such as memory management, thread management, object type safety, security, etc. Is a part of the .NET Framework Managed code Code that targets the CLR Any .NET Language, including C#, Visual Basic, C++, Java, Cobol, etc. Running User Written Code When you compile your application, you create an assembly IL contains all information about your application Intermediate language (IL) Methods, properties, events, security, etc JIT Just in time compilation Happens when someone executes your code Turns IL into actual machine specific code JIT Process Compilation Source Code Language Compiler IL Data Metadata Execution JIT Native Compiler Code Common Language Specification CLS describes the requirements that make a .NET language compliant with the common language runtime Allows .NET languages to interoperate Languages may include non-compliant features No interoperability The Framework Class Library A huge collection of reusable types For use by any managed code Classes, interfaces, enumerations and structures Including code written in any managed programming language Types for Common tasks such as collections, file IO, memory and thread management GUI and window manipulation Web form and web service applications The Framework Class Library Totally object oriented toolbox for developers Ships as part of the .NET Framework Using the FCL Types are arranged in a hierarchy of Namespaces A type’s full name includes its namespaces Form class is actually System.Windows.Forms.Form Use using to indicate namespaces in source code Using the FCL Assembly references are necessary for many types The SDK documentation is critical for using SDK types Includes descriptions Often includes useful code samples Indicates namespaces and assemblies for types Pros and Cons of J2EE Pros Portability Vendor choices for tools and application servers Proven Track record (Java – 1995, J2EE – 1998) Rich developer community, many free tools. Cons Complex application development environment Tools can be difficult to use Java Swing limited for developing GUI's (?) No provided IDE Performance Pros and Cons of .Net Pros Easy to use tools Strong framework for building GUI's Language support Performance Cons Portability Choice of IDE's Limited A lot of piecing together components. Paralleling Technologies Microsoft .NET J2EE Language Supported Over 20 languages Java Support Libraries .NET framework SDK J2SE, plus the APIs : JDBC, JSP, EJB, JMS, JAXP, JCA, JFC, JNDI etc as defined in the J2EE specification IDE’s Visual Studio Jgrasp, Jbuilder, Eclipse, Netbeans Presentation Tier ASP.NET JSP and Servlets Database Tier ADO.NET and ODBC JDBC Paralleling Technologies Microsoft .NET J2EE Business Tier COM EJB Source Compilation MSIL, .EXE, .DLL .CLASS Desktop support Windows Forms and Web Forms Java Swing and AWT Web Services SOAP and XML JAXP and SOAP Server Technology IIS Weblogic and Websphere IL CLR vs. JVM IL Common Language Runtime Java Virtual Machine Part 3 Key Differences JVM vs CLR .Net and J2EE key differences Fundamental Philosophy: “One language, Many Systems” vs. “Many Languages, One System.” Languages Supported CLR vs. JVM J2EE's Java Virtual Machine hypothetical computer. Translates compiled Java code (byte-code) into machine language for your computer. A Java byte-code interpreter. Provides the portability of the J2EE framework. Java can run on any computer with a JVM .NET's Common Language Runtime Runtime Engine CLR Portable Executable (PE) files are either EXE or DLL files Loads classes, performs JIT compilation, executes code, handles garbage collection. Consist of metadata and code. Run on top of CLR. Microsoft Intermediate Language (MSIL or IL) Any .Net language can be converted into IL. .NET's Common Language Runtime .Net treats all languages as equal C# class == VB.NET class How: Common Type System (CTS) Common Language Specification (CLS) .NET's Common Language Runtime Common Type System Every language must abide by CTS Important types supported: Value types Reference types Boxing and unboxing Interfaces Delegates .NET's Common Language Runtime Common Language Specification Problem: C++ is case sensitive but VB.NET is not. Solution: define a set of basic rules that are required for language integration. .NET's Common Language Runtime CLR Execution Major components: Class loader Verifier JIT compilers Execution Support and Management .NET PE Files (Metadata and IL) Class Loader CLR Virtual Execution Engine Verifier JIT Compilation JIT Compiler Execution Support and Management garbage collector, security engine, code manager, exception manager, thread support, etc. JVM vs. CLR Both abstract the underlying platform differences. JVM only supports Java, CLR supports any language represented in its Common Intermediate Language (IL) Portability (J2EE JVM) vs. Language Support (.NET CLR) April, 2003: CLI (subset of CLR) recognized as an international standard. JVM interprets Java, IL is never interpreted. Part 4 .NET Overview .NET Developer Tools Visual Studio.NET is an integrated development environment for developing .NET applications It includes support for multiple languages Visual Basic.NET Visual C#.NET Visual J#.NET ASP.NET .NET Developer Tools It can be used to develop client based applications and Web based applications ASPX Microsoft Active Server Pages, .NET Old ASP IIS Server HTML with embedded server scripts Session Support VB Scripts ASPX.NET Separation of HTML and code Additional State Preservation Capabilities Multiple Languages Running .NET Applications IIS is comparable to the J2EE Application Server The .NET Framework redistributable package includes everything you need to run applications developed using the .NET Framework. Version 1.1 is the current version of the .NET Framework Internet Information Services IIS Internet Information Services (IIS, sometimes Server or System) is a set of Internet-based services for servers using MS Windows Used for corporate, commerce and secure websites. Originally, it was supplied as part of the server editions of Windows NT IT is integrated with Windows 2000 and Windows 2003 Server. IIS IIS is bundled with Windows operating systems Default web directory is C:\Inetpub\wwwroot Publish applications to http://localhost Installation of Visual Studio .NET will install the .NET Framework On systems without Visual Studio, you need to install the .NET Framework insure that the .NET Framework matches that used by Visual Studio .NET IIS The current version is IIS 6.0 and includes servers for FTP, SMTP,NNTP and HTTP/HTTPS and is only available for Windows Server 2003. IIS 6.0 major security enhancements IIS 5.1 , a restricted version, that supports one web site and a limited number of connections is also supplied with Windows 2000 and Windows XP .NET Online Resources http://www.msdn.microsoft.com/netfra mework/ http://www.gotdotnet.com/ http://www.startvbdotnet.com http://www.asp.net http://www.dotnetwire.com J2EE Online Resources http://java.sun.com/j2ee/index.jsp http://library.theserverside.com/rlist/ter m/J2EE.html http://www.javaworld.com http://www.springframework.org http://www.eclipse.org Additional References Platt, David S.: Introducing Microsoft .NET 3rd Edition Thai, Thuan & Lam, Hoang Q.: .NET Framework Essentials, 3rd Edition Sharp, John & Jagger, Jon: Microsoft Visual C# .NET Step by Step. Farley, Jim, Crawford, William & Flanagan, David: O'Reilly's Java Enterprise In a Nutshell