Java vs. .Net.

Slides:



Advertisements
Similar presentations
Welcome to Middleware Joseph Amrithraj
Advertisements

Introduction to .NET Framework
Tahir Nawaz Introduction to.NET Framework. .NET – What Is It? Software platform Language neutral In other words:.NET is not a language (Runtime and a.
.NET Framework Overview Pingping Ma Nov 16 th, 2006.
.NET Technology.
J2ME Web Services Specification.  With the promise to ease interoperability and allow for large scale software collaboration over the Internet by offering.
.Net Overview Giuseppe Attardi Università di Pisa.
CSE3030Lecture 11 Know Your User The First Slogan.
ISYS 512 Business Application Design and Development with.Net David Chao.
J2EE vs..NET Tom Tong. Enterprise Application 1 distributed 2 multiple-platform 3 critical 4 performance 5 security 6 multiple-data sources.
J2EE vs..NET Nigam Patel. Topics Background –Web Services, J2EE and.NET Similarities Differences Conclusion –Pros and Con (J2EE and.NET)
.net Microsofts ’ Platform for Web Services Naveed Arshad.
Java Server Team 8. Overview What is a Java Server? History Architecture Advantages Disadvantages Current Technologies Conclusion.
SM3121 Software Technology Mark Green School of Creative Media.
DotNET A Developer’s Perspective Mike Litzkow University of Wisconsin - MadisonOne.
L EC. 01: J AVA FUNDAMENTALS Fall Java Programming.
01 Introduction to Java Technology. 2 Contents History of Java What is Java? Java Platforms Java Virtual Machine (JVM) Java Development Kit (JDK) Benefits.
Platforms and tools for Web Services and Mobile Applications Introduction to C# Bent Thomsen Aalborg University 3rd and 4th of June 2004.
Intro to dot Net Dr. John Abraham UTPA – Fall 09 CSCI 3327.
Java vs. “Dot.Net vs. Java” VB C++ C# Perl Python … Visual Studio.net Win32 MSMQ, COM+, IIS, WMI, AD, ADAM, Indexing, UDDI, etc. CLR Base Class Library.
Java Vs .Net Presented By, Naveen Kumar Ratkal.
Microsoft.Net vs. J2EE Suresh Ramachandran Duke Energy.
Rajeswari Indupuri Introduction to.NET Framework.
.NET vs J2EE An Architectural and Performance Comparison of.NET and J2EE Applications Greg Leake, Microsoft Corporation Vertigo Software, Inc. James Duff.
1 Platforms and tools for Web Services and Mobile Applications FUTURE Bent Thomsen Aalborg University 3rd and 4th of June 2004.
A Free sample background from © 2001 By Default!Slide 1.NET Overview BY: Pinkesh Desai.
Overview of Microsoft.Net and Vb.Net ITSE 2349 Spring 2002 Material from Microsoft.Net an Overview for ACC faculty by Stuart Laughton and Introduction.
ISYS 350 Business Application Development
Architecture Of ASP.NET. What is ASP?  Server-side scripting technology.  Files containing HTML and scripting code.  Access via HTTP requests.  Scripting.
IBSS Inc (International Business Software Solutions Inc.) Microsoft.NET.
ISYS 512 Business Application Design and Development with.Net David Chao.
J2EE /.NET Liz Farricker Whitney Mayoras Patrick Bailey.
C# A 1 CSC 298 Introduction to C#. C# A 2 What to expect in this class  Background: knowledge of an object oriented language of the C++, Java, … family.
Introduction to.NET Framework. .NET – What Is It? Software platform Language neutral In other words:.NET is not a language (Runtime and a library for.
Microsoft.NET Vs Sun JAVA
Introduction to .NET Rui Ye.
Compiling and Executing Code in.Net Microsoft Intermediate Language and Common Language Runtime.
WebLogic Versus JBoss.
WINS Data provides customized software solutions, web development, client-server applications using all major up-to-date technologies. We have experience.
ISYS 573 Special Topic – VB.Net David Chao. The History of VB Early 1960s:BASIC-Beginner’s All-Purpose Symbolic Instruction Code –Teaching –Simple syntax,
® IBM Software Group © 2007 IBM Corporation J2EE Web Component Introduction
.NET Language Supports. .NET Language Support Operating System Common Language Runtime Base Class Library ADO.NET and XML ASP.NET Web Forms Web Services.
Component-Based Software Engineering Introduction to.NET Paul Krause.
Mono Update. Miguel de Icaza
Introduction to VB.Net. What is.NET? A brand of Microsoft technologies A platform for creating distributed Web applications A combination of new and updated.
Rajiv and Shipra Introduction to.NET (asp.net,c#,vb)
ASP.NET &.NET Environment. Overview Part of Microsoft’s.NET environment Used for Development of  Websites  Internet applications  Web Services & XML.
By: PHANIDEEP NARRA. OVERVIEW Definition Motivation.NET and J2EE Architectures Interoperability Problems Interoperability Technologies Conclusion and.
DotNet Vs. J2EE Mosaad Alomery CIS Mosaad Alomery - CIS 764 the internet platform –Services Electronic commerce Communications ( , news, chat,
Microsoft.NET Norman White Stern School of Business.
Intro to dot Net Dr. John Abraham UTPA CSCI 3327.
PRIOR TO WEB SERVICES THE OTHER TECHNOLOGIES ARE:.
Microsoft.Net vs. J2EE. J2EE – Enterprise Java  J2EE: Java 2 Enterprise Edition  Superset of Java 2 Standard Edition (J2SE)  Adds enterprise features.
ISYS 512 Business Application Design and Development with.Net David Chao.
INTRODUCTION CHAPTER #1 Visual Basic.NET. VB.Net General features It is an object oriented language  In the past VB had objects but focus was not placed.
Text Introduction to.NET Framework. CONFIDENTIAL Agenda .NET Training – Purpose  What is.NET?  Why.NET?  Advantages  Architecture  Components: CLR,
ITP 109 Week 2 Trina Gregory Introduction to Java.
A Detailed Introduction To Visual Studio.NET CRB Tech ReviewsCRB Tech Reviews introduces you to the world of Visual.
Introduction to the Microsoft.NET Framework Chris Wastchak Student Ambassador to Microsoft.
Introduction to .NET Framework
Chapter 13 Web Application Infrastructure
Introduction to .NET framework
Suresh Ramachandran Duke Energy
.NET Omid Darroudi.
Introduction to .NET Framework Ch2 – Deitel’s Book
Introduction to .NET By : Mr. V. D. Panchal Content :
BHUBANESWAR,KHURDA,ODISHA
.Net Framework Details Imran Rashid CTO at ManiWeber Technologies.
Introduction to .NET Framework
(Computer fundamental Lab)
Presentation transcript:

Java vs. .Net

A typical .NET Enterprise Solution SQL Server IIS on W2k Server .NET managed component ASP Windows Client Browser

A typical J2EE Enterprise Solution DB Server Java App EJB Servlet JSP Java Client Browser

Java vs .Net Solutions Both multi-tiered, similar computing technologies Both support “standards” Both offer different tools & ways to achieve the same goal. A lot of parallelism can be seen. Very difficult to compare and qualify the comparison because each has its own advantages & disadvantages.

The TMC Petshop Performance Case Study Java Pet Store is Sun’s primary blueprint application for J2EE Source: http://java.sun.com/j2ee/blueprints Illustrates best coding practices for J2EE Ships as a sample application in IBM Websphere, Oracle Application Server 9i, Sun iPlanet, and BEA WebLogic The .NET Petshop is a port of the J2EE Java Pet Store to .NET Source: http://www.gotdotnet.com/compare Implements the same functionality as Java Pet Store Illustrates best coding practices for .NET Framework In the TMC Petshop Performance Case Study, The Middleware Company implemented both the Java Pet Store and the .Net Petshop. The J2EE version ran on two different application servers All versions used the same hardware and OS

Java Pet Store Components The Storefront presents the main user interface in a Web front-end. Customers use the Storefront to place orders for pets. The Order Processing Center (OPC) receives orders from the Storefront. The Supplier fulfills orders from the OPC from inventory and invoices the OPC. The Admin presents the administrator interface in a JFC/Swing front-end. Administrators use the Admin to examine pending orders and approve or deny them.

Java Pet Store vs. .Net Pet Shop

Porting Java Pet Store to .NET 15500 Lines of Code Required 14,273 14000 .NET Petshop 11500 Java Pet Store 9000 7500 5,891 5,404 4,410 5000 2,865 2,566 2500 710 761 412 74 Total Lines of Code User Interface Middle Tier Data Tier Configuration

TMC Pages per Second

TMC Max Supported Users

How Microsoft interprets the data Based on Oracle-published data for tuned version of Java Pet Store Using Oracle’s test scripts from their “9i App Server Challenge” Run on equivalent hardware Supporting 6 times more users 1.0 0.8 0.6 2800% Better performance Response Time (Seconds) 0.4 0.2 500 1000 1500 2000 2500 2750 User Load Level

The “Conclusions” Microsoft concludes: ".NET is 28 times faster than J2EE" Because: “Java PetShop” is Sun’s “best practice” example Numbers compared with published Oracle results Identical functionality, all code published and documented Can we believe the raw numbers? Yes! Why? Microsoft delivers full docs on the entire scenario But 28 times really?

The Shootout afterwards Java PetShop: J2EE blueprint application Built by Sun to show "best practice" design Implementation by TMC missed quite a few optimizations .NET PetShop Built by TMC (with help from MS) with different design Plain classes instead of container managed components Middle tier moved into ASP.NET Using stored procedures instead of ad-hoc SQL Uses server-side caching of ASP.NET Many performance optimizations applied Most Java devotees find this highly unfair

TMC revisits the Pet Shop Re-implementation of J2EE version 17 times performance increase Second version showed some J2EE implementation equal .Net Second version is a testimony to performance tuning

What does the comparison tell us? It is very difficult to make such comparisons That .Net has gained maturity extremely fast That the two frameworks are very similar The Devil is in the detail So let’s look at some details

Comparing the stacks Win32 MSMQ, COM+, IIS, WMI, AD, ADAM, Enterprise solutions BEA Weblogic Webshpere Studio Eclipse … Third party extensions Extensions: Phoenix, Tiles, Java Faces P&P blocks ASP.Net Struts JSP Servlets VB C++ C# Perl Python … Visual Studio.net Java ADO.NET JDBC Base Class Library J2EE Class Library CLR Java runtime Win32 MSMQ, COM+, IIS, WMI, AD, ADAM, Indexing, UDDI, etc. J2EE App Servers Websphere, Weblogic, Tomcat, etc. JMS Apache Win32, Unix, Linux

Java vs. C# C# is an object oriented language of the C++/Java flavor Syntax similar to Java and C/C++. Quite an impressive design and care for details Java developers will feel comfortable most of the time and frustrated when things are different MS says: “C# combines the power of VC++ with the ease of usage of VB” Not really true: C# is really powerful BUT It is not easy to learn for non C++/Java programmers It is the language to learn if you are serious about .NET!

Java vs. C# // This is a comment in Java code class HelloWorld{ public static void main(String[] args){ for(int i= 1; i<= 100; i++) System.out.println("Hello!");   } } // This is a comment in C# using System; class HelloWorld{ static void Main(){ for(int i=1; i<=100; i++)      Console.WriteLine("Hello");   } }

Primitives Java C# int, float, double, etc. Allocated on stack Not an Object Not extensible C# int, float, double, etc. structs Allocated on stack Inherited from object class structs can implement interfaces Cannot inherit from another class // C# struct Point { int x; int y; Point(int x, int y) { this.x = x; this.y = y; }

Classes – Overriding Methods Java All methods are implicitly virtual C# Explicitly use ‘virtual’ and ‘override’ keywords class B { public void foo() { } } class D extends B // D’s foo() overrides B’s foo() class B { public virtual void foo() { } } class D:B public override void foo() { } // D’s foo() overrides B’s foo()

Exceptions Java C# C++-style try/catch blocks finally– action done even after an exception is caught throws – methods identify what exceptions they throw C# C++-style try/catch blocks finally – same as Java Does not support throws clause // Java and C# try { // Stuff… } catch { // Ack! finally { // Always! // Java – throws an IOException public void myFunc(int a) throws IOException { // Work… }

Java vs. C#

Java vs. C# vs. C++ vs. VB

Java vs. C# in High-performance computations

C# Features not in Java No automatic fall-through from one case block to the next Strongly-typed enums By reference calls are explicit at caller AND callee Method overrides are explicit Supports versioning Structs (value types) Integrated support for properties and events Can still use pointers with RAD language Can share data and use functionality with components written in many different languages

CLR vs JVM C# Java MSIL Byte Codes CLR CTS GC Security VB .Net Managed C/C++ Lots of other Languages Java MSIL Byte Codes CLR CTS GC Security Runtime Services JRE (JVM) GC Security Runtime Services Windows OS Mac Win Unix Linux Both are ‘middle layers’ between an intermediate language & the underlying OS

.Net on other platforms ECMA standardisation The Mono Project ECMA 334 and 335 The Mono Project Shared Source Common Language Runtime CLI, C# and Jscript FreeBSD and Windows implementations Linux port underway DOT GNU project Portable .Net implementation C# for both CIL and JVM

JVM vs. CLR JVM designed for platform independence Single language: Java (?) A separate JVM for each OS & device CLR designed for language independence Multiple languages for development C++, VB, C#, (J#) APL, COBOL, Eiffel, Forth, Fortran, Haskel, SML, Mercury, Mondrian, Oberon, Pascal, Perl, Python, RPG, Scheme, SmallScript, … Impressive usage of formal methods and programming language research during development Impressive extensions for generics and support for functional languages underway Underlying OS: Windows (?)

Java Byte Code and MSIL Java byte code (or JVML) is the low-level language of the JVM. MSIL (or CIL or IL) is the low-level language of the .NET Common Language Runtime (CLR). Superficially, the two languages look very similar. One difference is that MSIL is designed only for JIT compilation. The generic add instruction would require an interpreter to track the data type of the top of stack element, which would be prohibitively expensive. MSIL: ldloc.1 ldloc.2 add stloc.3 JVML: iload 1 iload 2 iadd istore 3

JVM vs. CLR at a glance JVM CLR Managed execution environment X Garbage Collection Metadata and Bytecode Platform-abstraction class library Runtime-level security Runs across hardware platforms ?

J2EE 1.5 J2EE (1.5) Focus on ease of development Generics and metadata as in J2SE 1.5 (more like C#) Java Studio Creator tool (in beta from April 2004) (more like Visual Studio .Net) Timeframe To be discussed at JavaOne in June Finalized in approximately one year IBM push for truly open source Java Others hesitate (even Open Source JBoss)

What about mobile? Web Services are fine as n-tier applications with UI provided through browser, but … On mobile devices WAP hasn’t really caught on Even iMode hasn’t caught on in Europe Renewed Thin/Thick client discussion Java applications on Mobile devices are reasonably successful Now Microsoft is moving fast into the field with .Net Compact Framework

Two Devices

Building Mobile Solutions is harder Mobile device Software infrastructure, hardware requirements Communication technology On-/Offline scenario Wireless Wide Area Networks/ Wireless Local Area Networks Communication protocol Application architecture scenario Thin/fat client Data management Synchronisation On-/offline capabilities Security issues Dangers for mobile devices Threats of communication technology Danger of exposing enterprise data

The Java vs. Net discussion goes mobile Therefore ... The Java vs. Net discussion goes mobile Java 2 Micro Edition (J2ME) is not ONE Java edition An J2ME compliant application consists of Configuration Profile (e.g. Personal, Mobile Information Device Profile (MIDP)) Application code Vendor specific UI 3 Contenders to compare Java 2 Micro Edition – Connected Device Configuration (CDC) Java 2 Micro Edition – Connected Limited Device Configuration (CLDC) Microsoft .NET Compact Framework

Student Project Project Goals Build end-to-end mobile client, wireless, webservices based application with back-end interface to …. In Java (J2ME/J2EE) and in .Net Compare the two solutions on a set of criteria

Basis of comparison Objective measurements Lines of code Development tools Documentation Infrastructure Performance Architectural pattern Security Price Development time Subjective measurements Developer satisfaction End-user satisfaction

SCADA on SmartPhones

Development tools and Documentation Server-side is well supported by both Java and .NET IDEs On the client-side .NET IDEs benefit from the fact that .NET CF is so close to .NET (With Java there are separate IDEs for desktop and mobile application development) Compatibility problems between Java vendors Java IDEs are slow! C# is a richer/more complex language than Java Both Java and .NET have well documented API Web service documentation .NET - MSDN Java – Google Support for encryption of web services .Net CF: HTTPS and SOAP extensions J2ME: HTTPS, but only in CDC & MIDP 2.0

Performance Server-side web service performance study with: Microsoft Application Server (v. 5.1) Sun ONE Application Server (v. 7.0) Tested for: Throughput Failure rate Average response time

Performance - Throughput

Performance – Average response time

Performance – Failure rate

Development time Slow start-up when developing in Java Jungle of web service implementations IDE incompatibility problems Emulators kSOAP Trouble-free implementation in .NET

Subjective Measures Developer satisfaction End-user satisfaction VS.NET integrates web service and mobile application development far better than any Java IDE A subset of an API is a better solution for mobile devices instead of an entirely new API End-user satisfaction DEIF would choose a .NET based solution since startup time is very important DEIF only needs a limited number of IDE licenses Extra price for a SmartPhone 2003 is insignificant compared to the value it gives The SmartPhone 2003 is more ”fancy” than the Java phones

Students Conclusions We see .NET as a better designed framework because: it eliminates the language barrier while also being platform independent it makes only little distinction between desktop and mobile application development Sun’s application server performance is very poor compared to IIS. License fees for a Java based solution are cheaper but .NET might catch up when considering development time We tried a combined .NET and Java solution but this has shown to be very troublesome!

Conclusions The two worlds are becoming more and more similar But it seems that you have to work harder in Java than in .Net .Net is currently driving technology transfer from Research to Product Windows generation at University now Watch-out in the mobile world Vodafone to offer Microsoft Smart phones http://msmobiles.com/news.php/2504.html Fed-up with Nokia promoting own brand, rather than operator brand

What do these comparisons tell us? It is very difficult to make such comparisons That .Net has gained maturity extremely fast That the two frameworks are very similar You will not be sacked for choosing the right J2EE application server ;-) The Devil is in the detail C# is not Java ADO.NET is not JDBC CLR is not JVM CF.Net smartphones are very different from Java Smartphones

Choosing between Java and .Net The ultimate choice usually depends not on technical superiority, but on: cultural/”religious”/political preferences Skill set of your developers Customer preference Vendor relations

The future of Java and .Net The two frameworks are becoming more and more alike However: .Net is Microsoft’s core strategy .Net will be part of OS in the next generation of Windows Lot’s of innovation in Longhorn – Avalon, indogo, WinFS Is Java in Sun’s core strategy? Java 1.5 SE is very close to C# 2.0/.Net CLR Sun Java Studio Creator somewhat close to VS.Net Some talk of JVM as multi-language platform, but not really so far … Sun in “Java as Open Source” battle with IBM

Sun vs. Microsoft Stock Prices

Choosing between Java and .Net You are most likely to be developing in both environments for the foreseeable future Gartner Group: 30+% of all enterprise applications will have both J2EE and .Net code Often IIS in front of J2EE infrastructure Interoperability issues Web Services (often too slow or doesn’t support …) J2EE/.Net bridge (IL -> JBC or JBC ->IL) Look out for “The third way” Linux, Apache, MySQL, PhP, … Look out for disruptive technologies It only takes one guy to get the right idea and a small team to implement a completely new platform and One large company to productise it or a lot of grassroots …