samir wrote:
> Today, I've googled for "i hate java" and "java sucks".
>
> I wasn't really amazed of the number of pages listed. I can imagine
> the frustration of some newbie when, first, tweeking the installation
> or struggling with some IDEs that consume "astronomical" (three years
> ago, my computer had 16mb of ram : ) amounts of memory. But the
> biggest problem, I think, is java's coolest part: The huge availale
> classes and source code . For some one that likes programming it's a
> source of frustration. First, you know that what ever you're doing
> have been done. Then, you get simply lost when learning: What class'
> should I start with? How do I choose one?...
Looking at the CS curriculum and experiences of fellow students, I can
see why some people hate Java: it's the first programming language they
use and it's difficult for them. I know many people who get caught up in
one annoying bug and then blast it as a reason that XYZ "sucks" or
"should rot in hell", etc. Even more experience: I know people who hate
programming in C because of the difficulty with pointers.
> For the rest, the problem is with java the programming language (not
> the virtual machine): Java is seen by many people as a toy programming
> language. No multiple inheritance, garbage collection and the
> templates are childish.
Multiple inheritance can get quickly problematic, AI used LISP mostly
because it had GC, and C++ templates can get ugly sometimes (STL,
anyone?). People will complain that Java goes too far/not enough until
the end of time.
> For me, all the staff above wasn't my problem. My problem was with
> accepting that such an amazing VM that can run on multiple
> achitectures is being wasted using such an archaic programming
> language. So, I've tried some of the available
> "alternatives" (unfortunately, most of these alternatives aren't yet
> ready to compete with Java). The one that had my attention the most is
> Jython. The power of python within a Java VM
Python -- the most backwards-incompatible language I've ever seen. As a
side note, Java (the VM) is the most backwards-compatible language I've
ever seen. Between Java 1.0 and Java 1.6, despite all of the features
implemented on the programming language, functionally, the only changes
in the virtual machine have been a shift in invokespecial, the
deprecation of jsr/ret, and the newer, more stringent bytecode
verification. If you changed a class version 50.0 to 45.0, /the code
would still run/. That's impressive.