[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