harmony-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Geir Magnusson Jr." <ge...@apache.org>
Subject Re: Java
Date Sun, 15 May 2005 15:10:05 GMT

On May 11, 2005, at 3:40 AM, Dmitry Serebrennikov wrote:

> Just an idea here...
> Using APR sounds very promising. But the arguments in this thread  
> are also compelling.

To be clear, "using APR" and "writing in Java" aren't orthogonal, are  
they?  I would assume that we do need some boundary between the VM  
and the underlying OS/Hardware.  While I wouldn't suggest (due to my  
ignorance) that we should standardize on APR as the boundary API, I  
can certainly imagine that our default implementation of that layer  
can and should be in APR because it is so well tested and portable,  
leaving the option for other implementations for those that can do  
better than APR for certain platforms...

> Since the goal of Harmony is to build *modular* VM, perhaps an  
> architecture should be developed from the beginning such that it  
> can support pieces written in Java as well as others written in C?  
> Competing implementations of various modules could then be produced  
> by either camp and then the numbers will speak for themselves. But  
> more importantly, ability to support such a mix would be an  
> excellent gage of the quality of the APIs between modules.



> Regards
> -dmitry
> Steve Blackburn wrote:
>> I would like advocate the use of Java in implementing the VM (*).
>> This may seem a low-level issue, but I'm raising it now because it
>> will have significant implications for the VM core and the overall
>> approach this project takes.
>> Why?  a) Software engineering benefits.  b) Performance.  c) "Eating
>> your own dog food" is good for you.
>> The basic argument goes like this:
>>  . From the standpoint of development time, providing (and
>>    maintaining) completeness of implementation will be our biggest
>>    challenge.  The more we can leverage Java's advantages in
>>    development time and maintainability, the better off we are.  The
>>    advantages of strong typing are particularly compelling when
>>    implementing the compiler and GC.  This also (largely) addresses
>>    the OS portability concerns being discussed.
>>  . From the standpoint of VM performance, the user code and libraries
>>    are (largely) written in Java anyway, so they will perform as well
>>    as our JIT allows.  As far as the execution of VM code at runtime,
>>    this is dominated by the GC, the JIT, and inlined pseudo-user code
>>    such as barriers and allocation sequences.  Experience with MMTk
>>    shows that it is possible to build high performance GCs in Java.
>>    Moreover, because the barriers and allocation sequences are
>>    expressed in Java, the JIT is able to aggressively optimize these.
>>    We found that this advantage and the fact that the size of Java
>>    scalars is statically known meant that we could outperform glibc's
>>    malloc on raw allocation time (size classes are statically
>>    evaluated).
>>  . "Eating your own dog food" is good for you.  It gives you a
>>    compelling reality check.  If your compiler isn't good enough for
>>    your own code, what is it good for?
>> To those I'll add two more points:
>>  . A project like this has the opportunity to be aggressive and  
>> not be
>>    shackled in the way the existing commercial product VMs are.  The
>>    Jikes RVM project at IBM (Java in Java) and Bartok at MSR (C# in
>>    C#) have really shown the potential for this approach.
>>  . We are a community who believes that Java has something to offer
>>    as a language, and we've demonstrated (GNU Classpath, Jikes RVM,
>>    the entire Jakarta project) that we can produce excellent systems
>>    using Java.
>> * Of course it is not possible to implement a high performance GC  
>> with
>>  out-of-the box Java 1.4.  However the set of extensions required is
>>  modest both in number and in implementation effort.  In MMTk we
>>  found it was necessary to add a number of unboxed types to give us
>>  type safety over addresses and object references (while retaining
>>  performance), and we added a number of compiler pragmas for
>>  correctness (interruptability) and performance (inlining).  These
>>  extensions have been factored out and are now also used by jnode.
>> --Steve
>> Research Fellow, Australian National University
>> phone: +61 2 6125 4821 fax: +61 2 6125 0010
>> http://cs.anu.edu.au/~Steve.Blackburn

Geir Magnusson Jr                                  +1-203-665-6437

View raw message