Thursday, February 15, 2007

101 Reasons Why Java is Better than .NET (Reloaded)



 



101 Reasons Why Java is Better than .NET (Reloaded)



 


The original edition was put together using a blogging system, this edition
is now based on a Wiki system. Hopefully, the comments and contributions will be
richer this time.


The list is structured such that all 101 entries can be viewed on a single
page (unlike the original!). Each entry would be accompanied by a "sound bite"
that bests captures the intent of the entry (if you got a good one, please let
me know!). Each entry is also a link that you can navigate to examine more
details and supporting information. At this time there is no particularly reason
for the ordering and that will change at a later date (so please don't cite the
entries number when you make an external comment!).


For an easy to remember url to link to this list and all future editions use
101.manageability.org . Feel free to post this url in response to articles and
posts falsely promoting the benefits of .NET.


Finally, for those who unfortunately have legacy .NET deployments, here a
series of articles that will help you migrate to a superior Java platform . 



  • Public Domain APIs - Any Java public apis are part of the public domain,
    .NET apis are proprietary and can open the door to a law suit.

  • Standard Library Source Code Availability - Java source code for the core
    libraries are available in every J2SDK distribution, .NET sources can only be
    seen by resorting to illegal means.

  • dotNet Purity Is A Myth - Java promotes 100% pure Java libraries, for .NET
    purity is nothing more than a myth.

  • 75% Of Enterprise Software Development - Avoid becoming one of the 25% of
    "use-less" employees.

  • Preferred Platform for Implementing WebServices - Despite billions spent
    by Microsoft in marketing, surveys continue to reveal that Java is the
    preferred platform when it comes to Web Services.

  • Superior Platform for Web Development - ASP.NET is a poorly designed and
    crippled framework as compared to the richness of frameworks found in Java.

  • Write Stored Procedures using Java - Most relational databases support
    writing of stored procedures in the Java language. There has yet to be a
    production release of a database that supports any .NET languages.

  • An Abundance of Experienced Practitioners - Nobody seems to know how to
    write .NET programs well and that's giving .NET a bad name! A pretty lame
    excuse I must say!

  • Supportive Open Source Communities - Open Source communities that support
    distributed development are a plenty in the Java world.

  • Proven Security - 2 Years after Trust Worthy initiative is launched and we
    collectively lose $55 billion last year.

  • No Lizard Brain - .NET programmers continue to struggle with the
    complexities of a hybrid managed/unmanaged environment.

  • More Languages - The JVM is more "common" than the CLR.

  • Smaller Runtime Download - You can't run your app if you don't have the
    runtime.

  • No Mandatory Upgrade Fees - 3 things a Microsoft shop can't avoid: Death,
    Taxes and License 6.

  • More Vendor Choices - .Net is a marketing program. Java is a Market.

  • Industrial Strength Collection Classes - The .Net libraries look like they
    were designed by high-school students, First year CompSci? students at best.

  • FutureProof - The way to ensure your return on investment (i.e. ROI) is
    that your choice of platform doesn't get obsolete in 5 or even 10 years. Avoid
    the Microsoft upgrade treadmill!

  • Larger Talent Pool - Majority of Universities not only teach but require
    knowledge of Java. That's a big talent pool that you need to consider before
    you off-shore your project to a different time-zone.

  • More Contributions From Researchers - Research institutions and
    universities have consistently provided innovative research not only built on
    top of Java but also contributing to Java.

  • US Government Approved - Guess where the billions of dollars spent on the
    U.S. government's IT renovation is going to?

  • NoEvilTypeCoercion - Some C++ constructs are meant to be entombed forever,
    .NET resurrects them with disastrous consquences.

  • More Mature And Robust O/R Mapping - You can't beat the wealth of O/R
    mapping solutions found in Java.

  • Superior Coding Tools - Like having your own personal Java fairy dancing
    through your code, anticipating your every thought and keystroke.

  • Sane Coding Conventions - I don't know what's worse Hungarian notation or
    .NET coding conventions.

  • Higher Paying Jobs - Somehow you've got to afford those skyrocketing
    housing prices don't you?

  • Favored for Implementing P2P - Gnutella and JXTA, anything else legally
    more pervasive?

  • PureJavaRDMS - Can't beat the ease of installation when the RDMS is Java
    based and packaged with the application in a .zip file.

  • More Exception Handling Options - .NET has no analog to the throws clause
    in method signatures.

  • Better Structured Diagramming Frameworks - When going beyond forms and
    windows, Java can't be beat.

  • Reusable Open Source IDE Frameworks - Why re-invent the wheel? Start
    building your killer GUI application on top of killer IDE frameworks.

  • RobustParserGenerators - Want to build a new language, well you'll need
    some robust parser building tools.

  • AspectOrientedProgramming - The next advance in modular software
    development, get a head start by using Java.

  • PureJavaWebServers - Customizations and extensions are easier in a web
    container that's built using the same language as applications. Furthermore,
    managed environments support better reliability and security.

  • OpenSourceJavaCompilers - Your tools have got to be able to parse the code
    before it has any chance in understanding it.

  • Distributed Caching - Sometimes embarassingly parallel applications aren't
    the only things that you need to scale.

  • MultipleReliableMessagingChoices - Java provides more choices for the
    backbone that integrates the Enterprise.

  • Faster Development Turnaround - Incremental compilation is unavailable in
    the .NET environment.

  • Lightweight Persistence - Sometimes a relational database (RDMS) has too
    big a footprint.

  • Open Community Process - How does one contribute to the specification of
    standards?

  • Hardware Accelerators - Performance boosting hardware.

  • More Flexible Licensing Options - Ultimate flexibility in licensing.

  • EmbeddedDevices - Java inside small packages.

  • Faster Virtual Machines -

  • MickrokernelArchitectures

  • ContinuousBuild

  • WholeProgramOptimization - Please sir may I have a linker?

  • Comprehensive RDMS Driver Support - Can you find a ADO.NET driver for an
    open source database?

  • Superior Code Analysis Tools

  • NetworkingSupport - Why is MSN managed by a Java based tool?

  • More Garbage Collection Options

  • ReliabilityConcerns

  • Better Web Services Interoperability

  • Better Domain Specific Languages Support

  • Painless Upgradability

  • Simple Side By Side Execution

  • More Business Rules Engines

  • Lightweight Containers

  • Better Business Process Management

  • Sixty Four Bit Support

  • Millions Of Java Phones

  • Garbage Collect Classes - The only way to unload MSIL code is to unload an
    entire application domain.

  • More Alternative VM Implementations

  • Hard Realtime Capabilities

  • Cross Platform Language Integration

  • More Extensive XML Support

  • Better Support For Dynamic Distributed Systems

  • Superior 2D Drawing

  • Better GUI Framework - Why isn't VS.NET written in a .NET language?

  • SuperiorBranding

  • No Anti Open Source Agenda

  • Standardized Portal Frameworks - Standardized ""Integration at the
    glass"".

  • RunInIntepreterMode - ""We're just not optimized for interpreting""

  • More Semantic Web Research

  • Leads In Software Process Best Practices

  • Better Concurrency Utilities

  • More Multicasting Libraries

  • Superior Refactoring Tools

  • Higher Demand Therefore More Jobs

  • Faster And More Reliable Regex

  • SuperiorBuildEnvironments - A .NET practitioner's concept of a build is
    F7.

  • Embarassingly Rich Information Sources

  • More Open Source Projects

  • Affordable Industrial Grade IDEs

  • Standardized Enterprise Connectivity

  • DynamicLanguagesSupport

  • MorePDASupport - Why limit oneself to a single PDA brand?

  • OpenTechnologyRoadmap - .NET is like a five year plan in the former USSR:
    You know it doesn't actually make sense or help anything, but if you live
    under it, you're certainly not going to say anything negative about it.

  • EmergingStandardsSupport

  • JavaCard - JavaCards? are becomming the preferred method of keeping tabs
    on your citizenry or customers. If Microsoft ever co-opts this technology then
    "1984" will become more than just a paperback novel.

  • Complete Open Source Stack - Open Source code visibility spanning all
    layers of an application.

  • NonStopServers - .NET not fault-tolerant enough for
    Hewlett-Packard-Compaq?

  • Out Of This World - Java runs on other planets, .NET has yet to leave
    Terra Firma.

  • Better Unit Testing Support - More extensions and comprehensive IDE
    support

  • More Identity Management Solutions - Can you trust Microsoft to keeping
    your customer's identity secure and available?

  • Most UML Tools Implement In Java - Ever wonder why the best UML tools are
    implemented in Java?

  • More R&D On Intelligent Agents - Java is the preferred implementation
    platform for Intelligent Agents.

  • Easy Rich Client Deployment - No-Touch development was shaky.

  • Lower Cost for Massively Parallel Systems - How much does it cost to
    deploy a .NET application on a platform with 10,000 servers like google?

  • More Profilers - Profilers mitigate the risk of not finding the root cause
    of show stopping bugs.

  • Eclipse

  • OneHunderedReasons


  • 1 comment:

    Unknown said...

    1. .NET is ECMA/ISO standard so the APIs are public
    2. Microsoft has an implementation called ROTOR (aka SSCLI) which has the source code
    3. Mono does an implementation of .NET on *NIX, what purity?
    4. Microsoft focusses on Windows implementation and many enterprise have UNIX hence mostly Java
    5. Same as previous point.. because Server run UNIX historically, web services are implemented in Java. In fact SUN had refused to be part of webservice standard initially promoting ebXml instead
    6. ASP.NET vs. JSP... Take a relook at development times..Framework is fine, where are the tools for JSP developement? Eclipse?
    7. SQL 2005, Oracle 10.2g and IBM DB/2..ALL of them support .NET data types in their DB
    8. I think you need to re-check .NET expertise availability. My experience is completely different
    9. open source has been favourable to Java as open source and java both have been anti-MS. but there are NUnit, Nant, NDoc, NHibernate, Spring.NET etc for .NET too
    10. Heard of CAS in .NET?
    11. Most teams dont require managed/unmanaged and its simpler than JNI for sure
    12. .NET supports 20 languages, what does JVM support (officially 1 - Java)
    13. .NET runtime is smiliar size as JVM and its bundled in WinXP SP and Vista, so no download required
    14. .NET framework is free.
    15. MS, Mono, Portable.NET
    16. Industrial strength Libraries.. whose opinion is that?
    17. Upgrade? are we talking about .NET or MS now? .NET upgrades are free. .NET 2.0/3.0 work on WinXP
    18. Talent pool is based on market requiement. Java is 10 years old, .NET is 5
    19. Look at some reasearch from Eiffel, Haskell, Python teams
    20. No idea about US govt approve. ANyways I dont take permission from US govt before i write either Java or .NET apps
    21. If i remember correctly, the C++ constructs Java threw out are back.. like enums, attributes in Java 5???
    22. No opinion on O/R mapping even though there is nHibernat
    23. Superior coding tool? eclipse? lets eclipse first do a JSP or Swing based WYSIWYG
    24. The coding convention are very similar in Java and .NET. Hungarian was C++
    25. I dont think Java is higher paying than .NET. At least in Indian companies programmer at the same grade get paid the same regardless of whther they are working on Java or .NET
    26. No opinion..dont know much about P2P implementation
    27. Check SQL2K5/Oracle102.g/DB/2 for integration with .NET
    28. I would need a separate section for comments on throw clause in Java and you can read Anders Hejlsberg comment on that.
    29. What do you mean by better structured diagramming???
    30. Heard of SharpDevelope?
    31. Java has a built in parse generator? check CodeDom
    32.
    33.
    34. Open source .NET compiler from mono
    35.
    36. COM+, IIS integration
    37. In my andmy customers experience, the developement lifecycles is slower on Java (primarily due to IDE support)
    38. ADO.NET provides for wide variety of persistence, doesnt have to be DB only.. how about DataSet.WriteXml() ?
    39. .NET is ECMA/ISO standard and yes SUN is a committee member on it.
    40. What has hardware booster gotto do with either Java or .NET?
    41. No licensing required for .NET. You only pay for VisualStudio. Dont want to? User SharpDeveloper
    42. Heard of .NET CompactFramework and MicroFramework? Tiny CLR?
    43. Care to produce benchmark for FastVM? In fact the initial MS VM for Java was faster than SUN's own VM
    44. Check point 42.
    45. JDK has Continuous build? or are you talking about IDE. VS compiles code in background from day 1.
    46. Where did you discover a linker for .NET ;)
    47. .NET supports ODBC and OLEDB drivers. Let me know which one you couldnt find
    48. Code Analysis? Heard of VSTS?
    49. MSN based on Java based tool? I would really like to know more of this. Link please?
    50. ServerCLR vs. WorkstationCLR. Preoptimized based on application type, GC included
    51. Reliability concers? elaborate?
    52. Better Webservice interoperability? need some facts here

    I dont think i have patience to respond to claims without facts and benchmarks and whole lot of inaccuracies...