direction (Re: [Mono-list] Wheen someone asks about java...)

Sat, 14 Jul 2001 22:55:36 -0700 (PDT)

> If the JVM now supported legacy C, C++ and VB,
> many of us would head down your way. If you can
> provide that, its not to late for us change horses.

Let me be clear that I don't want to argue for either
path. I actually prefer C# and the C# common
libraries slightly to Java and I think it would be
great if Mono could deliver a compiler and runtime
that's as good as Microsoft's tomorrow. For my
particular work (which involves a lot of numerical
and mathematical problems), C#'s structures,
overloading, and "unsafe" sections are actually
a significant advantage. But I also think
for most Gnome and desktop applications, those 
features don't matter at all.

I think it's also important not
to be confused about what the technical issues are,
for several reasons.

First, there is a lot of marketing hype surrounding
C#/.NET. Microsoft claims that it "runs C++" and
that its runtime is "common", and that it is
intrinsically much more efficient. I find those
claims dubious, but haven't made up my mind yet.
There are some differences between the JVM and the
CLR, but they are pretty localized. 

Keep in mind that any Gnome project based on "Java" 
isn't bound to the Java standard; Gnome could use its 
own extended version of Java and still benefit a lot
from existing Java libraries, tools, and expertise.
That's the way that Apple chose with MacOS X,
direct hooks into the ObjectiveC runtime and exposing
all the native widgets and APIs to Java.  GNU gcj,
with its direct hookup to C++, would be an OK
starting point (but, yes, gcj needs some work).

Second, Mono will not be able to deliver a
C#/.NET implementation tomorrow. I
think Mono would be lucky to deliver something
that's merely limping along within a year: writing
garbage collectors, compiling efficient method
dispatch, and dealing with dynamic code generation
is tricky. Look at some open source systems that
do it: CMU CommonLisp, any of the free JVM JITs, 
SML/NJ, etc. That's the kind of system C#/CLR/.NET is.
That's the kind of system people participating
in Mono need to be able to understand top-to-bottom.

Third, the best starting point for a C#/CLR/.NET
implementation may be one of the Java compilers and
runtimes. That's clearly how Microsoft developed
C#/CLR. The Java runtimes already address most of
the hard problems. OpenJIT, Intel's Open Runtime,
GNU gcj, and Kaffe may be good starting points.

So, in short, I don't want to convince people to
go with either Java/JVM or C#/CLR. I honestly
don't know what the right answer is. I do want
people to think about what they are doing before
they invest a lot of time in doing it.


Do You Yahoo!?
Get personalized email addresses from Yahoo! Mail