Linked by Thom Holwerda on Sun 12th Jul 2009 21:29 UTC
Thread beginning with comment 373072
To view parent comment, click here.
To read all comments associated with this story, please click here.
To view parent comment, click here.
To read all comments associated with this story, please click here.
Probably not Java but JDK and JVM are overly complex and should be revised (or Java completely discontinued, nobody loves it anyway).
You call it "overly complex", I call it "robust". If .Net reaches the same level of maturity (although as a Windows only toolkit it may never do) it will also get features, multiple implementations, helper tools etc.
BTW, calling for Java to be discontinued is... funny, to say the least.
C# vs Java is not just one language against the other it is also the std libraries of .NET vs JDK and CLR against JVM and the concepts that follow from this.
The .NET libraries are many, many, many times easier to use compared to the JDK libraries. In .NET you have one or two ways of doing a specific thing and you are almost never in doubt what the designers were thinking when they created the API for the given namespace.
You can't be serious. The JDK library is showing its age at some points, but it is fundamentally well-designed. For example, the available collections are reasonably named and also complete. Interfaces are named after concepts, and implementations are named after specific algorithms. For example, you have a Set interface, implemented by a HashSet and TreeSet class.
In .NET there are no interfaces at all for some concepts (for example Set). collection classes are named confusingly (List is an ArrayList, SortedList is not a list at all, but a dictionary where the keys are sorted, etc. ). Thread-safe collections are extremely incomplete.
And don't get me started about the documentation. The MSDN documentation is a complete mess. There are examples in all .net languages, but never more than one paragraph about one topic. For example you have different pages for "type X", "members of type X", etc so you never have a useful amount of information on one page.




Member since:
2008-10-30
C# vs Java is not just one language against the other it is also the std libraries of .NET vs JDK and CLR against JVM and the concepts that follow from this.
The .NET libraries are many, many, many times easier to use compared to the JDK libraries. In .NET you have one or two ways of doing a specific thing and you are almost never in doubt what the designers were thinking when they created the API for the given namespace. It is a completely different story for the JDK, it is convoluted, full of surprises and gives you plenty of guidance on how to do the wrong things (and no guidance on how to do it right). Essentially the concept behind the core .NET is POLS (Principle Of Least Surprise) and it is done in an coherent way. JDK on the other hand seems to be made by at least 5 sub groups that does not talk to each other or sometimes actively tries to sabotage each other.
Then there is the component orientation of .NET that is second to none when it comes to system programming. This is the real innovation of .NET is that you roll up your library in one self contained component that contains all you need for development and runtime for different consumer languages and different producer languages (with the DLR now also scripting languages can be producer languages) so .NET advocates complete transparency when making components. This is good for open source in that it very easy to bring in Python, Ruby and C# into the same application domain (you can extend C# classes in Python and extend from that in C# again, try doing that in Java :-)
Probably not Java but JDK and JVM are overly complex and should be revised (or Java completely discontinued, nobody loves it anyway).