[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Java

> It seems to me that there are a lot of people on this list who are
> very eager to criticize Java.  (Java is heavyweight, and thus Java is
> bad.)  

I'm only eager to criticize Java because it is very close to being the
best development platform available.  It is good enough to want to see
it better.  Java is fairly platform agnostic (the GUI is what breaks). 
I speak from having just shipped a commercial product on 13 platforms
in Java.  Java's current failing is sitting in this middle ground
between a tool for building monolithic binary (".exe") applications,
like C++, and being a web server-side tool for building interchangable
components.  The reluctance to introduce global optimizations and a
preprocessor makes it hard to use for building apps.  If .class files
get rolled up into JAR files for distribution, why not optimize between
classes in a JAR file?  They'll never be run-time linked against
different versions of the other classes in that file in practice.  

Java *is* heavyweight.  I think it could be made lightweight by
providing a tool that allowed source to be run directly, making it easy
to prototype and build script/apps, and by getting a version that
didn't require a 30 MB download.  The (uncompressed) rt.jar is only 13
MB, and would be smaller if it was a compressed JAR.  A 10MB standard
library is not unreasonable.  I'm not sure what to do about CLASSPATH
issues; scripting languages seem to depend on having global root
directories as well.

Java 1.4 just introduced new standard libraries for XML, regexp, better
C integration and faster I/O.  These are good steps towards scripting
level functionality.

> You seem to be implying that "installing" Java is time-consuming and
> difficult, that Java isn't ported to a lot of platforms, that you
> need makefiles to use Java, that you need "weird external 
> library stuff" to write simple applicationsm, none of which is the 
> case.

All of this is the case.  For a commercial product, getting Java
installed and operating properly on the user's machine is a nightmare. 
For personal use, there are some issues-- paths, environment variables,
etc.  Java's standard library works fairly well.  JAR files that use
the native C interface can be a real bear.  For example, getting J3D to
work on a user's machine is quite a challenge compared to C++ and

Webstart and the Windows control pannel applet manager have only
complicated the situation.  It is difficult for users (even
programmers) to manage this stuff when all they wanted to do was run a
simple script or a shrink-wrapped application.

Makefiles or some substitute (I use Python) are absolutely necessary
with Java.  javac *.java works decently well (if you have the correct
rt.jar and javac setup) for small projects, but as soon as you split
into subdirectories or have more than a few files, you'll want to be
able to build in a more sophisticated fashion.  javac's dependency
checker is known to be broken-- it fails to be properly conservative. 
Java tools use different path separators on different platforms (: vs.
;), so specialization is needed for even simple command lines.


Do You Yahoo!?
Send your FREE holiday greetings online!