emily's picture
From emily rss RSS  subscribe Subscribe

Java vs. .Net 



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.

 

 
 
Tags:  Java  vs.  .Net 
Views:  6555
Downloads:  262
Published:  August 29, 2007
 
4
download

Share plick with friends Share
save to favorite
Report Abuse Report Abuse
 
Related Plicks
Microsoft .Net vs. J2EE

Microsoft .Net vs. J2EE

From: emily
Views: 5111 Comments: 1

 
Java vs. .NET

Java vs. .NET

From: gavi
Views: 2892 Comments: 0
Java vs. C#
Swing vs. WinForms
 
online basketball

online basketball

From: nirabota2
Views: 135 Comments: 0
NBA, Nets vs Wizards, Nets vs Wizards live, Nets vs Wizards live Basketball, Nets vs Wizards live stream
 
Java One 2002 Overview

Java One 2002 Overview

From: emily
Views: 2931 Comments: 0
Moscone Center, San Francisco
Sixth annual
March 25th – 29th, 2002
Over 15,000 in attendance
Joe Antonoff, Compendium Technologies, Inc. attended (more)

 
Comparing .NET and Java

Comparing .NET and Java

From: emily
Views: 23965 Comments: 1
NET
The .NET Framework
Java
Java application servers
Products include:
IBM WebSphere Application Server (more)

 
See all 
 
More from this user
Java One 2005 Technical

Java One 2005 Technical

From: emily
Views: 3548
Comments: 0

NSDI - Poland

NSDI - Poland

From: emily
Views: 2780
Comments: 0

Welcome to the Minnesota SharePoint User Group

Welcome to the Minnesota SharePoint User Group

From: emily
Views: 6343
Comments: 0

Java One 2002 Overview

Java One 2002 Overview

From: emily
Views: 2931
Comments: 0

SQL Server 2005

SQL Server 2005

From: emily
Views: 3961
Comments: 1

CATPDG Quick Start Demo

CATPDG Quick Start Demo

From: emily
Views: 1807
Comments: 0

See all 
 
 
 URL:          AddThis Social Bookmark Button
Embed Thin Player: (fits in most blogs)
Embed Full Player :
 
 

Name

Email (will NOT be shown to other users)

 

 
 
Comments: (watch)
plicker dsfdf (3 years ago)
http://smartphone-news.net46.net
 
 
Notes:
 
Slide 1: Java vs. .Net Bent Thomsen bt@cs.auc.dk Department of Computer Science Aalborg University 1
Slide 2: A typical .NET Enterprise Solution IIS on W2k Server Browser ASP .NET .NET managed component SQL Server Windows Client 2
Slide 3: A typical J2EE Enterprise Solution Browser Java App Server Servlet EJB JSP Java Client DB Server 3
Slide 4: 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. 4
Slide 5: 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 Source: http://www.gotdotnet.com/compare Implements the same functionality as Java Pet Store Illustrates best coding practices for .NET Framework • The .NET Petshop is a port of the J2EE Java Pet Store to .NET – – – • 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 5
Slide 6: 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. 6
Slide 7: Java Pet Store vs. .Net Pet Shop 7
Slide 8: Porting Java Pet Store to .NET 15500 14000 14,273 Lines of Code Required .NET Petshop 11500 Java Pet Store 9000 7500 4,410 2,865 2500 5,891 5,404 5000 2,566 710 761 412 74 Total Lines of Code User Interface Middle Tier Data Tier Configuration 8
Slide 9: TMC Pages per Second 9
Slide 10: TMC Max Supported Users 10
Slide 11: How Microsoft interprets the data – – – 1.0 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 Response Time (Seconds) 0.8 0.6 2800% Better performance 0.4 0.2 0 0 500 1000 1500 2000 User Load Level 2500 2750 11
Slide 12: 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? 12
Slide 13: 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 13
Slide 14: 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 14
Slide 15: 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 15
Slide 16: Comparing the stacks Enterprise solutions … … Third party extensions P&P blocks Extensions: Extensions: Phoenix, Tiles, Java Faces Eclipse Python Struts Visual Studio.net ASP.Net JSP Servlets Webshpere Studio Perl Java ADO.NET Base Class Library CLR JDBC J2EE Class Library Java runtime J2EE App Servers Websphere, Weblogic, Tomcat, etc. C++ C# Win32 MSMQ, COM+, IIS, WMI, AD, ADAM, Indexing, UDDI, etc. BEA Weblogic VB JMS Apache Win32, Unix, Linux 16
Slide 17: 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! 17
Slide 18: 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"); } } } 18
Slide 19: Primitives • Java – – – – 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; } } 19
Slide 20: 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 { public void foo() { } } // 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() 20
Slide 21: Exceptions • Java – 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 – throws an IOException public void myFunc(int a) throws IOException { // Work… } // Java and C# try { // Stuff… } catch { // Ack! } finally { // Always! } 21
Slide 22: Java vs. C# 22
Slide 23: Java vs. C# vs. C++ vs. VB 23
Slide 24: Java vs. C# in High-performance computations 24
Slide 25: 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 25
Slide 26: CLR vs JVM C# VB .Net Managed Lots of other C/C++ Languages Java Byte Codes JRE (JVM) GC Security Runtime Services Mac Win Unix Linux MSIL CLR CTS GC Security Runtime Services Windows OS Both are ‘middle layers’ between an intermediate language & the underlying OS 26
Slide 27: .Net on other platforms • ECMA standardisation – 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 27
Slide 28: 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 (?) 28
Slide 29: 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. JVML: MSIL: iload 1 iload 2 iadd istore 3 ldloc.1 ldloc.2 add stloc.3 • • 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. 29
Slide 30: JVM vs. CLR at a glance JVM X X X X CLR X X X X Managed execution environment Garbage Collection Metadata and Bytecode Platformabstraction class library Runtime-level security Runs across hardware platforms X X X ? 30
Slide 31: J2EE 1.5 • J2EE (1.5) preview of 26.4.2004 – 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) 31
Slide 32: 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 32
Slide 33: Two Devices Nokia 6600 Orange SPV E200 33
Slide 34: Two Devices 34
Slide 35: 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 35
Slide 36: 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 36
Slide 37: Student Project • Group of Master Level Students (Hovedfag) – – – – Bjørn D. Rasmussen Casper S. Jensen Jimmy Nielsen Lasse Jensen • Collaboration with DEIF • Project Goals – Build end-to-end mobile client, wireless, webservices based application with back-end interface to SCADA – In Java (J2ME/J2EE) and in .Net – Compare the two solutions on a set of criteria 37
Slide 38: 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 38
Slide 39: DEIF M-Vision (SCADA up and running in 30 minutes) 39
Slide 40: SCADA on SmartPhones 40
Slide 41: 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 41
Slide 42: 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 42
Slide 43: Performance - Throughput 43
Slide 44: Performance – Average response time 44
Slide 45: Performance – Failure rate 45
Slide 46: Development time • Slow start-up when developing in Java – Jungle of web service implementations – IDE incompatibility problems • Emulators • kSOAP • Trouble-free implementation in .NET 46
Slide 47: Subjective Measures • Developer 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 47
Slide 48: 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! 48
Slide 49: My 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 49
Slide 50: 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 50
Slide 51: 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 51
Slide 52: 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 52
Slide 53: Sun vs. Microsoft Stock Prices 53
Slide 54: 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 … 54

   
Time on Slide Time on Plick
Slides per Visit Slide Views Views by Location