Overview
Examples
Screenshots
Comparisons
Applications
Download
Documentation
Tutorials
Bazaar
Status & Roadmap
FAQ
Authors & License
Forums
Funding Ultimate++
Search on this site
Search in forums












SourceForge.net Logo
Home » Community » Coffee corner » Java coffee...
Re: Java coffee... [message #18217 is a reply to message #18216] Wed, 17 September 2008 20:19 Go to previous messageGo to previous message
cbpporter is currently offline  cbpporter
Messages: 1401
Registered: September 2007
Ultimate Contributor
Well I for one absolutely hate Java Smile.

First of all I hate the language. It is extremely unexpressive. My biggest complaint is that you don't have delegates. Listeners are horrible when misused to simulate delegates. I hate that it does not have an unsigned int and when I need to do binary processing I get nice code bloat. I hate that you have to explicitly catch all exceptions. This is a very good idea on paper, but practice has shown that most people just wrap the code in a dummy try-catch with an empty catch clause because they don't know what to do with that exception. The generics from Java are laughable. I actually done a benchmark and using a class similar to Vector in Java with fundamental times is 10 or 20 times slower (don't remember which one).

I also hate the Java library. Just reading out of a damn file may require up to 4 classes, depending on buffering and how you obtain the filename. And Java toolkits have an obscene obsession with Xml configuration files. A lot of them with very redundant stuff.

On the other hand, I have great respect for what Java is trying to do. The platform independence is great. Performance was bad a lot of time ago, but now it is pretty good. I no longer have such a great opinion about GC because of U++ and it's deterministic way to handle resources, but still GC solves the problem cleaner than RAII. Compilation speed is great. You get an extensive set of libraries for anything that you could possible want.

I am still often tempted to solve my issues with C++ and the tool chain by switching over to Java. Then I need to write a delegate or something, and my hate for Java revives.

Actually, my hate for Java is more related to the fact that it could have been the needed innovation in this domain, but somehow it managed to completely screw it up when compared to my standards. It is not as much hate, as disappointment towards something I wanted to love, but just couldn't because of it's design.

Yet I had to work sometimes in it, and I do get used to it. It is definitely worth learning, because it has it's place in this world. Also, Java 7 looks quite promising.

But IMO it will never catch up. There is a Java like product in this world that pretty much got everything right (not on the first try though, which was pretty bad). It is called .NET. I love .NET. It is like a copy of Java which is so much better. I even features true matrices for when you do graphic processing (the lack of that double indirection from jagged matrices is a real performance boost in this case), and even pointers when you need to get down and dirty. Also library is more to my taste.

The problems with .NET are it's size and lack of portability. Do I really need to install that huge runtime? I don't need WPF. Silverlight? Sorry, I'm a Flash fan. And even with that huge runtime, it only runs on Windows.

On the other hand, Mono is growing up slowly. It is also possible to get a 7MB minimal Mono runtime.

This is a long post, so I'll stop here.

The conclusion: I hate Java, but in the same time I like the idea and find Java something that every programmer should know. It you know C++, you'll be able to code Java in under a week. Just need to learn the library next. So I think you should go ahead with learning Java. And check out .NET if you have time, preferably after some experience acquired in Java, so you can best appreciate the features that it adds to the Java idea.
 
Read Message
Read Message
Read Message
Read Message
Read Message
Previous Topic: U++ Everywhere
Next Topic: UBUNTU 8.04 - /init: /init: 1: cannot open /dev/root: No such device or address
Goto Forum:
  


Current Time: Tue May 14 03:09:17 CEST 2024

Total time taken to generate the page: 0.02589 seconds