[coyotos-dev] Accept GCJ into the tool chain?
Tracy R Reed
treed at ultraviolet.org
Mon Nov 27 14:02:56 CST 2006
Jonathan S. Shapiro wrote:
> I'm interested in Java from three perspectives:
I have been following this thread this morning with interest. I first
learned about the Coyote project a couple of years ago. Actually I was
first interested in Eros. Then I learned that project is pretty much
dead and that Coyotos gave up on a few of the most interesting aspects
of Eros but I am hoping that it still has potential.
I would have to agree with those who say Java isn't the right tool for
the job. Not necessarily because it runs in a virtual machine.
My main problem with Java has been a lack of examples of well done Java
software and the incredible amount of RAM it always seems to require.
Sure, there is Eclipse. That is the Free/Open Source software that
anyone can point to as a good example of Java technology it seems. I
have also used Azureus, LimeWire, Veritas Netbackup, Veritas Volume
Manager, Tomcat (nearly killed our mail server when I left it running
for one little LDAP management app and over the course of a month of
doing nothing memory leaks used up all of the RAM), ArgoUML, Freenet,
I2P, and a number of other Java apps I am not remembering. Not a single
one of them was stable enough to run for a month (most not even a week!)
without severe problems. I wrote my first line of Java code way back in
1995 or so after riding a bus across town (poor college student) to the
only bookstore that had one of the first books on Java. Back then I
learned that due to poor browser support it was not good at its most
touted ability which was to make web applets. I have followed Java ever
since and find that despite major corporate boosting and claims of great
success from Sun, Oracle, IBM, etc. it just doesn't work out for me like
they say it should. To this day there still isn't a single java app that
I use on a daily basis. Whenever I mention this apparent lack of quality
in Java or the applications written with Java FOSS Java coders simply
say "Hey, we're doing the best we can with what we've got." and the
corporate FOSS Java coders say "Good Java code can be written if you
know what you are doing and all those other guys don't. I'm too busy to
help out those FOSS projects."
Maybe Java is great and solid code can be created with it. But not by
the FOSS community it seems. With the ever-present exception of Eclipse
which was originally formed by corporations such as Borland, IBM,
MERANT, QNX Software Systems, Rational Software, Red Hat, SuSE,
TogetherSoft and Webgain (who formed the first Board of Stewards in
November 2001). Perhaps corporate discipline is what it takes to produce
good Java code. Other than that I am still puzzled.
And then there is the issue of licensing. GCJ is GPL. But Sun's
implementation just went GPL also. Which to use? Sun's is far more
capable. But Sun's implementation, the only one which can compile the
above-mentioned Java apps, has only recently become GPL. Remember when
Star Office and Netscape both became FOSS? It took years for them to
build a community and generate somewhat-passable code. I still can't get
either one to compile myself. I am glad someone can so that it can be
included in my favorite distro and that they can generally run for a few
weeks before crashing.
But I am definitely of the opinion that as much software as possible
should be written in a high level language. C/C++ are only for cases
where you really need to talk to the hardware directly and manage your
own memory or inner loops that really need optimization. Doubly so for
assembly of course. Programmer time is expensive, cpu time is cheap.
Were it not for HLL's a lot of code would never get written because
nobody can afford it. And the added code correctness/security guarantees
that can be made with a high level language (bounds checking, type
safety, etc) are definitely worth it IMHO.
> Note that I'm not stuck on Java per se here. What I'm after is a safe
> programming language that can be used to write domain code that is not
> performance critical. Other languages, including C#, ML, Haskell, or
> even Scheme, would meet this goal. While ML and Haskell are great
> languages, I rule them out mainly because of the lack of programmers who
> know them. I would frankly prefer C# to Java, but I don't see a stable
> statically compiled implementation that is available *today*.
Very interesting. I have been doing a lot of reading about Scheme and
Haskell lately. Haskell seems to be a great language for writing (almost
provably) correct code and it compiles to very fast executables.
http://shootout.alioth.debian.org/debian/benchmark.php?test=all&lang=ghc&lang2=java
And because it is purely functional with no side-effects it is trivial
to parallelize Haskell code to run on the dual, quad, 8, 16, 32+ core
cpu's that are coming down the pipe. I am confident that this is going
to be a very important property in the near future that may well push
functional programming into the mainstream. The fact that Linspire has
adopted Haskell as the official language of their distro (they code the
installer, hardware auto-detection, various sysadmin tools with it)
bought a lot of credibility with me also. I know the Linspire guys and
although I have strong philosophical differences around how their
leadership runs their distribution I know the coders are really smart
guys. Haskell not only has native code compilers but also has
interpreters for rapid development (removes compiling from the edit,
compile, test, debug cycle).
When checking out how popular any given language is in the FOSS world I
like to take a look at IRC. Java is immensely popular in the corporate
world but not nearly so much so in the FOSS world. I did a /list on a
few key channels on Freenode to see how many people were in that channel
to help people out and discuss projects written in that language:
##java 254
#haskell 253
#scheme 127
##c 441
#lisp 228
#erlang 50
#ml doesn't exist
It turns out Haskell has quite a lot of mindshare in the FOSS world. On
par with Java! But neither have nearly so much as C. This is about what
I would expect.
Lisp (of which Scheme is a dialect) is quite interesting also and has a
very long and storied history. I like the purity of Scheme (although not
purely functional) over something like Common Lisp and Scheme has lots
of great books written to teach it (although I hear On Lisp and
Practical Common Lisp are excellent books for Common Lisp and will pick
them up someday). I have gone through The Little Schemer and Reasoned
Schemer and I am now going through Simply Scheme and watching the
Abelson and Sussman videos from MIT. These are a great way to learn
programming in Lisp.
http://www.swiss.ai.mit.edu/classes/6.001/abelson-sussman-lectures/
Once I get comfortable with Scheme I intend to move on to Haskell. I
could just do Haskell first but I have always wanted to learn Lisp
anyway. I have looked at Erlang also and really like their model of
concurrency and message passing but I feel that is something which can
be done just as well in Haskell which has a lot more mindshare and support.
> 3. As a language for crafting some of our cross-development tools [this
> is the immediate issue]. For example, mkimage could very quickly be
Any of the above languages would work just fine for cross-development.
> For things like compilers, where GC and exception handling are extremely
> useful, what languages are people using that I may be failing to
> consider?
I think you have all of the reasonable possibilities covered above.
--
Tracy R Reed http://ultraviolet.org
A: Because we read from top to bottom, left to right
Q: Why should I start my reply below the quoted text
More information about the coyotos-dev
mailing list