Why Java is better than .NET

banq發表於2004-03-04
這是網上對比Java和.NET的文章,不過是支援Java,
文章滿出名的,可以看看,
據說有87條,
現在我只找到了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 specifically states
that code compiled with it cannot run in 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. No software insurance fees
.
How many MIS organizations are 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 are 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 are 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 don't 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't be said about C# or VB. Senior Java developers
are also easier to find. The same can't be said about C# where there aren
't any senior 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. Aside from universities, research organizations
like CERN and HEP have contributed a large amount of code to the public.


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 obsolete 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 therefore maintainable
by everyone.

19. More Deployment Options
With Java there are 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 (i.e 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.

相關文章