

Java sucks (1997) - dfox
http://www.jwz.org/doc/java.html

======
gchpaco
Somewhere between a third and half of these complaints have been addressed as
of Java 6, sometimes at not inconsiderable cost (generics, for example). But
most of the fundamental complaints--handling unboxed data, the need to
constantly wrap data, the brittle standard libraries, the sheer irritation of
using anonymous inner classes for closures--are all things I trip up against
every damned day.

------
mtarnovan
Besides being vastly outdated, this article suggests that Java is on par with
Perl when it comes to performance. In fact, Java is almost as fast as C++ on
most computational tasks, and faster than most other languages
(<http://shootout.alioth.debian.org/>)

~~~
mnemonicsloth
Vastly outdated? Really? It's been quite a while since I've used Java so I'm
curious to find out:

Does Java have lexically scoped functions now? Macros? Inlined functions?

Does Java have closures now?

:keywords?

CLOS-style multi-dispatch?

It's not like there weren't languages out there, that certain co-authors of
the Java spec did their PhD and postdoctoral work on, that implemented all of
these features...

~~~
mahmud
Hey now, nothing Clojure can't fix.

------
pohl
What's with the retro jwz fetish as of late?

------
dusklight
this is like the fifth time this old old post has been submitted to the news
page.

similarly, I think every single PG essay has been posted multiple times.

maybe it would be nice to have some sort of warning that the "news" item you
want to submit has already been submitted?

~~~
Hexstream
Actually, there is. If you try to submit an URL that has already been posted,
then you upvote the original submission. But it seems there's some sort of
expiry after which reposting the URL creates a new submission.

Also, sometimes there's problems when 2 different URLs point to the same
article.

------
makecheck
While he makes the point that Java was 4 separate things that should've been
developed and released separately, that probably would have seriously hindered
adoption and even caused the language to die. [In hindsight, maybe that would
have been best. >:)]

When I first started with Java years ago, one of the things that made it
appealing to learn a new language was the fact that it came with a box of toys
(such as easily-constructed graphics contexts, UI elements, and threads). In
the days of Java 1.0, it was probably the quickest way to get fairly
sophisticated things up and running, so that power made it all worth learning.
Had it just been some research language with no libraries or JVM, I probably
would've said "great, but...what can I do with it, nothing!".

In my case, this still came full circle; I eventually decided I really hated
Java for any serious programming. I never choose to use Java for anything
these days, I only put up with it if I'm maintaining something that is already
Java-based.

------
drp
The forced unicode String complaint is quite valid. Implementing any sort of
large in-memory index in Java basically requires a parallel implementation of
String (not actually 'implements String') to keep its memory usage down to a
reasonable level. Unless of course you're actually indexing Unicode strings.

~~~
axod
IMHO this is something Java got totally right.

With many other languages Unicode is some afterthought. Ever tried Unicode
things in php? It's horrible.

Having all strings as Unicode is fantastic. If you're dealing with something
else and can't afford the memory, then sure - roll your own with byte[]
arrays. Not a big deal.

~~~
neilc
I'm curious why Java doesn't use UTF-8 encoding by default; that would offer
much of the memory savings the parent poster is talking about, if the data is
mostly ASCII anyway.

~~~
axod
because it'd have an extreme effect on performance?

UTF-8 is great in terms of size, but terrible in terms of speed.

~~~
neilc
How "extreme" are we talking about? Some empirical data would be helpful.

I'd also be curious to see data about what % of the characters in all the
strings in a typical Java program aren't in 7-bit ASCII. I wouldn't be
surprised if 7-bit ASCII characters are a large majority of the total, which
makes the case for UTF-16 less compelling.

------
javanix
It may be old, but he raises some good points. Java's syntax is probably a
step forward from C++, but both are still far from intuitive.

In an ideal world, I'd love to see a pared down version of Java's syntax
matched with a better-optimized version of GCJ - the readability of Java
combined with the speed of native bytecode would be a godsend.

------
cvboss
"I'm back to hacking in C, since it's the still only way to ship portable
programs."

Scrolled to the bottom, found that line and thought the article doesn't worth
my time :)

------
albertcardona
Catched my eye that both slots-as-methods and defining new slots or methods on
the fly are addressed in python rather well.

