Two different beliefs of blogs arguing .NET and Java
Mood
2003-01-12
Article Type: News
101 Reasons Why Java Is Better Than .NET
I am building a list, that's actually inspired by "101 things that the Mozilla browser can do that IE can not". Its a list of 101 reasons of why Java is better than .NET. 101 reasons is actually a pretty ambitious number, however its Always Good to Aim High First. if you don't succeed you Could Always Relax The Criteria for Success!
Anyway, I Have Now Accumulated 71 Reasons. I Will Be Blogging The Goal of 101 Reasons Will Be Achieved.
Here Now Are Reasons 1 To 25:
1. Run on Multiple Platforms from the smallest devices to the largest mainframes.
Run on multiple platforms, from smart cards, embedded devices (JStamp), cell phones (Nokia, Motorola, Ericsson etc), pdas (Palm, Symbian, Sharp), laptops and desktops (MacOS, Linux), servers (Unix based), Non Stop Servers (TANDEM) To Mainframes (IBM).
2. Run Dynamic Languages
Run Dynamic Languages like Python (JPython), Scheme (JScheme, SISC, Kawa), Ruby (JRuby), Smalltalk (Bistro). In comparison a commercial development effort to port Python to .NET showed dismal performance. Furthermore, a paper comparing the CLR AND The JVM Came to Similar Conclusions.
3. Compile in One Platform Run in Another.
Visual Studio.Net and .NET SDK END USER LICENSE AGREEments SPECIFICLY State That COMPILED WITH IT CANNOT RUN NON-Microsoft Platforms.
4. Smaller Runtime Download
The Java Runtime Evironment (JRE) IS A 8MB Runtime Download, .NET Runtime Download Is Over TWICE AS LARGE (I.E. 20 MB).
5. NO MANDATORY UPGRADES. NO SUBSCRIPTION FEES.HO Software Insurance Fees.how MANY MIS Organizations Area Held Hostage TO Microsoft's Draconian Licensing Policies?
6. Run Multiple Versions of the VM (Runtime) on the Same Machine
Its common to have multiple version of the Java Virtual Machine (JVM) available and running simultaneously on the same operating system. This is useful if you need to test your application on different version of the JVM. Try doing this with .NET.
Its common for Windows based products to have several machines with different versions of Windows to do tests. In fact, this is in fact such a big problem that even Microsoft licensed the use of VMWare (a product that allows you to run multiple virtual machines) For ITS 6,000 Salespeople.
7. Large Innovative Open Source Community
The existence of a large body of open source code is value that should not be ignored. This provides developers an enormous repository of code that can be reused. In fact, most .NET open source projects are rewrites of Java projects.
8. Low Cost Commercial Quality IDE's
The Eclipse and Netbeans IDEs are free for any kind of software development. JBuilder and JDeveloper are free for educational use. This is in stark contrast with .NET where Visual Studio.NET costs almost $ 500. Also, if you think sharpdevelop is commercial grade, Think Again!
9. More available jobs
A Search on Monster.com Will Quickly Reveal That There 10 Times More Jobs That Require Java Skill Than C # Jobs. In Fact A Third of C # Jobs Require Java Skills.
10. Better and Standardized Connectivity To Legacy Applications
The Java Connector Architecture (JCA) IS A Standard for Connecting To
Enterprise
Information Systems (EIS). JCA supports access to SAP, IBM CICS, PeopleSoft, Oracle, Siebel, Screens 3270, AS / 400, Unisys, ADABAS-C, VSAM, Codasyl, IMS, Tuxedo etc. This level of connectivity options in unavailable For .NET.11. Multiple Vendor Choice and Support
Java Technologies Aresu Supported by Multiple Vendors Allowing Mix and Match and Best of Breed Solutions. Java Standard Apis Have Always Been Designed To Be Supported by Multiple Implementations.
For example the Java Messaging Service (JMS) standard is supported by multiple vendors IBM, TibCo, Progress, SpiritSoft, Fiorina, Swift, Open3, JBoss, etc. You have the freedom to pick what's the best messaging product for your situation, you don 'T Have That Option with Microsoft Where There IS Only One Choice MSMQ.
12. Compile to Machine Code
Java has several solutions to compiling into machine code, that is when compiling to byte code is an issue for either intellectual property or performance reasons. TowerJ, Jove from Instantiations, Excelsior JET and GNU GCC provide robust solutions to compiling Java to native code.
13. FUTURE Proof
Java is future proof or rather future portable, in the sense that your existing code base will not become obsolete. How so? I can run Java on machines today and machines in the future. You do not have that assurance for Microsoft's technologies like. NET. A vivid example is their support for for VB6, which has been set to expire. It's crucial to consider that every development has a ROI that spans several years. How many years was DNA around before Microsoft declared it obsolete?
14. Most Popular Language In The Corporation
A recent survey reveals "Interestingly, the strong showing of Visual C # .NET divides the Microsoft camp and propels Java into first place as the most popular language over the coming year". In corporations, there are more developers familiar with Java than any other language . The benefit is that there's a higher chance that someone can maintain or fix a java program than that written in any other language. Do you think you'll find someone in your corporation who will be able to fix that legacy VB application 2 years from NOW? 15. Larger talent pool
Java is taught in most universities, this is resource for well trained affordable junior programmers, the same can not be said about C # or VB. Senior Java developers are also easier to find. The same can not be said about C # where there aren 't any seenior developers. Also A Senior VB Developer IS Least Qualified to Lead Development Requiring OO Analysis and Design.
16. More Contributions from R & D Organizations
Java is not only taught at universities, it is also extensively used as part of research and development. Work by Matt Welsh at UC Berkeley contributed to the New IO mechanisms we find in JDK 1.4. Generics was worked done by
University
Of
South Australia
. ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
17. Government Approved
The office of management and budget (OMB) of the
U.S.
Federal Government Recommends to Architects The Use Java 2
Enterprise
Edition over Microsoft .Net as underlying technology. This means that a larger share of billions of dollars that will be spent to upgrade the governments aging IT infrastucture will be done in Java. Expect other governments wary of Microsoft's licensing practices to do the same.18 More Homogeneous and Less Complex Environment
The Java Environment Is More Homogeneous and Less Complex Than .Net. It is not Littered with Obsole TECHNOLOGIES LIKE COM, DCOM, COM ,
ADO
, Nor is it dependent on operating system indiosyncracies like register settings or most recent service patch level. Furthermore, there is no artificial divisions between someone called a VB programmer and someone called a C # or C programmer. Developers are competent whether its UI development or server Development, Everything is in java so its understandable and there product.
19. More Deployment Options
WITH JAVA There More More Ways to Deploy Your Application. Here Are A Few Ways: Applets, WebStart, X-Windows, MIDlet. Furthermore, There IS Standardization for Client Provisioning Being Proposed AS A JSR.
20. More Searchable References
A Search in Google of For "C #" Hits 1,720,000 Documents, for "Visual Basic" Hits 3,270,000. In Comparison A Search For Java Hits 32,100,000, Almost 10 Times More Than Even Visual Basic.
21. Better Support for Software Process Best PRACTICES
Most best practices in software development are done in Java shops. Examples like Refactoring, JUnit testing and Continuous builds. Java developers are familiar with these practices, and by hiring them, you introduce these practices into your organization.
22. Mature Object Oriented Relational mapping Tools
It is best practice in Object Oriented development to decouple business objects from their underlying relational database representation. Java has several mature and robust products that support the mapping of relational databases to objects, notable of which are TopLink and CocoBase. There is no equivalent of such a tool in the .NET world. Microsoft is trying to remedy the situation by buiding something called "ObjectSpaces", however its still in beta and not mature enough to entrust your enterprise business on.23. More Productive Coding Tools
Java IDEs are superior in their support for coding tasks. Features like code refactoring, intention actions, superior code browsing (ie Find Usages) and robust code completion are superior to what you find in Visual Studio.NET. In fact, Visual Studio.NET Is Known to Unintentionally Erase Code.
24. Cross Platform Integration with Other Languages
Integration with Java from other languages like Perl, PHP or Python is cross platform. In otherwords, I can take my PHP scripts that talk to Java and run in windows, place them in a Linux box and have them work without a major porting effort.
25. Higher Paying Jobs
On The average a Java Programmer Earns Quantitatively More Than A VB Programmer with The Same Number of Years Experience.
25 PATHTIC Attempts to make .NET LOOK BAD
Carlos Perez Has Posted 25 Reasons Why He Thinks Java Is A Better Platform Than .NET, AND i Kind of Feel Sorry for Him. Why? Because I've Written Like 100 LINES OF JAVA in My Life and I'm Pretty Sure I Could . come up with better arguments than these Many of Carlos's reasons are only tangentially related to the Java platform and are more about perceptions than technical excellence that makes me sad -. Java deserves better.Unfortunately the reality in this industry is that perceptions matter as much As Technology, SO i Feel Compelle, Sure I'm Being Trolled For Doing So, But It's Such Juicy Bait I Can't Help It. Before I do, Let Me Be Clear - I Like Software. i 've been around enough platforms to find joy in all of them, including Java. Java introduced some important ideas to the mass market, many of which obviously made it into .NET and were refined in the process. JUnit, Ant, SAX parsing, Eclipse - LOTS of Great Stuff Comes Out of The Java Space (AS Well AS STI) Nkeroos Like Swing). It is not my intertion to smear the java platform here, Rather to Smear the arguments proposed by Carlos. So, On That Note ...
1. Run on Multiple Platforms from the Smallest Devices to the Largest Mainframes. .NET is officially less than a year old and already runs a pretty fair number of places, and not all because of Microsoft. .NET is multi-CPU aware and should AT Least Run on Largish Nt Mainframes. It Also Runs On Strongarm Devices and (aside from the disaster with [nokia?]) Can Run on Cell Phones.
2. Run Dynamic Languages Neither the CLR nor the JVM are very good at dealing with dynamic languages since type safety is the linchpin of their security models and dynamic typing makes that very hard to enforce. That said I have yet to find a paper saying the Java platform is friendlier than the CLR, and that includes the paper Carlos cited. Support for alternate languages is an explicit goal of the CLR and is an explicit non-goal of Java, so you'd expect it to be a little better, right Here Are Some Reasons Why The CLR IS A RICHEER Environment For Alternate Languages: l Support for pass-by-reference and pass-by-value (java only supports pass-by-reason for object type)
l Support for Tail Calls (Important For Deeply Recursive Languages LIKE LISP or Haskell).
l Support for Method Bodies Over 64k (Important for Some Compilers That Need To Entire Programs Into A Single Method)
l Support for "ORDINARY" (Nonstatic Nonvirtual) Functions.
l Support for User-Defined Value Types
L-support for auto-boxing (The Runtime Can Infer A Boxed Reperesent of a Value Type, SO you don't have to manually message with int versus integer)
l Classes CAN Share Constant Pools, Wasting Less Space
l Support for Two Families of Arithmetic Operations (Some That Throw Exceptions (Some That Don't).
3. Compile in One Platform Run in Another.
UHHH, MONO? Portable.net? Compact Framework?
4. Smaller Runtime Download
Why Does this Matter? I Can Buy A 100BG Drive for $ 200us. Or About $ 2 / Gigabyte. In this Light We're Talking About Roughly 1.6 CENTS Worth of Disk Space for Java And Around 2 CENTS for .NET. The Only Place THE size of the runtime matters is for small devices. No doubt for these devices there are more Java options right now (a company here in Tucson actually does research in this area). But you do not install the standard JRE on small devices either. 5. NO MANDATORY UPGRADES. NO SUBSCRIPTION FEES. No Software Insurance Fees.
How Mis Organizations Are Held Hostage To Microsoft's Draconian Licensing Policies?
Guilty as charged. That said, how many Java developers are held hostage to Sun's draconian handling of Java? Even Andy hates the JCP :) The growing maturation of Mono makes this a less compelling argument, too. As my friend Keith likes to say " They're Both Just Vendor scum, Man.
6. Run Multiple Versions of the VM (Runtime) on the Same Machine on this Laptop i Have Mono, Rotor, Portable.Net, And Two Versions of The Commercial CLR Running Simultaneously. Works Great.
7. Large INNOVATIVE OPEN SOURCE Community A-HA! Good Argument. I really don't think i can refute this one. Java's been around a lot up. Give it time.
8. Low Cost Commercial Quality IDE's
NOT NICE To Make Fun Of SharpDevelop. For non-profit use cheaply, especially if you know. And eclipse .net integration is starting to happen.
9. More available jobs for now. This is actually related to 15 and 25. NOT VERY CONVINCIING TO ME.
10. Better and Standardized Connectivity to Legacy Applications I do not work in this space, but I can not imagine these vendors are planning on ignoring .NET But I'll concede the point -. Java has more penetration in these spaces.11 Multiple Vendor Choice and Support
See My Response To # 1. As for message, Carlos Forgets At Least IBM MQSeries.
12. Compile to Machine Code
Wait a minute - is not the whole point of Java NOT to do this Let me be clear here -?.. I have no beef with the Java source language It's nice But completely ditching the platform it's supposed to run on does not sound like much of a benefit to me. Anyway, .NET's NGEN (or "pre-jit) facility basically allows you to compile code as it's deployed onto a client machine, and in a way that is robust in the face of security and versioning, AND IN A WAY That Allows Clean Intertion with Ordinary [Jit-Compiled] Code.
13. FUTURE Proof
This is where I really begin to question Carlos's sanity. Java code will not become obsolete? Then let's just kill the JCP now as being irrelevant. Sun has resisted every attempt to standardize Java in any meaningful way and could obsolesce everything tomorrow arbitrarily. (MS Did this with vb.net and the results have not been pretty). C WAY More Nailed Down Java and The Ivy Is Starting to Grow over Its Door. Nothing is Future Proof. (Except COBOL)
14. Most Popular Language In The Corporation The Exact Same Survey Carlos Quotes States That
"78 Percent of Respondents Idicated That They Are Currently Developing for a Microsoft Platform, with 28.6 Percent Stating That the isy isy"
Sounds to me like a lot of Java programmers are using Java on Windows Give them time:.) 15 Larger Talent PoolBullshit, frankly I have personally worked with a number of universities who include C # and .NET in their curriculum, including the University.. of Arizona, Cornell, University of Colorado Boulder, Texas A & M, and UC San Diego to name a few. and since many .NET concepts are familiar to Java developers any good Java developer would be productive in a week or two and feel pretty comfortable in A FEW MONTHS.
16. More Contributions From R & D Organizations Give this some time. Plenty of researchers are tinkering with managed code too. MS has the funds to throw at Academia so like it or not .NET will get research interest.
17. Government Approved
I'm Not Sure How this pro is Better Than .Net. The GovernmentAfter All Used to Love
ADA
:)
18. More Homogeneous and Less Complex Environment This one betrays real ignorance and deserves special praise for it's entertainment value. First of all, .NET obsolesced many of the technologies Carlos mentions. The Registry? DCOM? Dead dead dead. Yes those technologies needed to die, and they did. Now can we talk about EJB? Second, saying "Developers are competent whether its UI development or server development, everything is in [insert language here] so its understandable and therefore maintainable by everyone" is laughably naive. Anyone who said something like that to me in a job interview would find a polite but quick end to things. The world is complicated. There's more to knowing how to write software than knowing what a for loop looks like.
19. More Deployment Options
Umm, no. You can deploy .NET apps in most of the same ways as Java apps, and once the security story for internet apps gets better you'll basically be able to do everything. Will everyone who likes Java applets please raise their hands ? 20. More Searchable References
Reaching for straws. Not Worthy of Comment.
21. Better Support for Software Process Best PRACTICES
More hilarious flailing. There are just as many hopelessly incompetent "Java experts" as there are VB hacks. (And VB hacks at least usually have some humility :). None of the things you mention are unique to .NET. JUnit and Ant are wonderful tools that quickly got ported to .NET. Spend some time in the .NET class libraries, especially in the areas of threading, remoting, and interop. Do you really think the Java libraries are better factored?
22. Mature Object Oriented Relational mapping Tools
This Makes Me Feel Icky, Probably Because I Have A Strong Dislike for the Tools Anyway. But Sure, Fine, I'll Let Carlos Have this One.
23. More Productive Coding Tools
UMM, YEAH, OKAY. This is the first time I've seen someone hold up java IDES as being the great thing about the java world. Eclipse and IDEA Both Get Props from My Java Homies. The rest of the ... Well, it's subjective. VS.NET certainly is not perfect (I curse at it daily) but it's pretty darn productive. I really doubt either space has much of an advantage here. (insert obligatory "leaky abstraction" reference here).
24. Cross Platform Integration with Other Languages See My Response To # 1
25. Higher Paying Jobs Even if you're right programmer salaries are notorious for fluctuating. It's a very bad career strategy to just go where the money is. There's great money to be had as an SAP consultant, yet I'd sooner shoot myself In the head. if ''re Competence in * Any * Technology Area you'll make decent money. Special:
This article comes from Jason Whittington's Radio Weblog and Java.blog :: ManageAbility :: edited, all text and copyright belong to the original website and the author, I only do finishing and collect. Hereby