|
Authored by: indyandy on Saturday, May 19 2012 @ 09:47 PM EDT |
[Ed: As Andy Rubin refused to acknowledge an email due to inconsistent indents I
have tried to reproduce the indents
exactly]<br>
<br>
<br>
<b>From:</b>
Tim Lindholm<br>
<b>To:</b> Andy
Rubin<br>
<b>Sent:</b> 8/5/2005 12:49
PM<br>
<b>Cc:</b>
<br>
<b>Bcc:</b><br>
<b>Subject:</b>
Re: Fwd: Java VM for Android<br>
<br>
<br>
This is
indeed entertaining, and I'm sure lots of offers to
"help"<br>
will pop up as the Android Project
becomes better known here.<br>
FWIW I largely agree with Brian, and
think that the guy pointing to<br>
the various open source efforts out
there is largely clueless. OK,<br>
maybe there might be a few odds and
ends that would be worth picking<br>
up, where we have no value to add
and the license isn't onerous. But<br>
most of that stuff is complete
crap. The first 30% of a Java runtime<br>
is not nearly as valuable or
costly as the last 30%, or 5%, of a<br>
commercial-quality
one.<br>
I do want to second Robert G's assessment: he, Urs and Srdjan
were<br>
three of what is surely one of the best small JVM
implementation<br>
teams that has existed (there were five
implementors total in the<br>
original team). They shared an aesthetic
for clean design and<br>
coding that you probably won't see outside of
academics. They had<br>
some flaws, but not many. One is that they are
stubborn Northern<br>
Europeans, who will not necessarily appreciate
some other way of<br>
doing things. But I don't think they want to be
JVM engineers any<br>
more, and this separation makes for less reason
for concern. Frank<br>
Yellin doesn't have the elegance of the HotSpot
guys, but is<br>
extremely bright and very experienced with Sun's CLDC
implementations.<br>
The other Sun guys he mentions were each very
good in their ways, but<br>
not in ways that directly relate to what
you need -- they were Big<br>
Java guys, e.g. worrying about
scalability and management.<br>
On this same line, yesterday (or the
day before??) I had lunch with<br>
the guy at Sun who is the brain
behind Sun's little-JVM-on-Linux<br>
effort, on the efficient use of
multiple processes on Linux. He<br>
wants to get out of Sun and is
extremely interested in Google,<br>
even while not knowing anything
about Android. (That email to<br>
Vineet might be able to change
this?). Unfortunately he has<br>
immigration things require him to be
out of the US Sept-Oct, and<br>
then career things that might make him
want to stay at Sun until<br>
January. Knowledge of Android might
overcome the latter, but if we<br>
tried for him in the shorter term
we'd need to accommodate the away<br>
time. If we can't get him before
the away time then he very likely<br>
will stay until January. This
guy could be a key hire. The only<br>
possible downfall is that there
had historically been bad blood<br>
between the team he worked in and
the HotSpot guys, but since then<br>
he has proven his
value.<br>
--Tim<br>
Andy Rubin
wrote:<br>
> Thought you'd get a kick out of this thread
...<br>
><br>
>Begin forwarded
message:<br>
><br>
>>*<b>From:<
;/b> *Robert Griesemer <gri@google.com
<mailto:gri@google.com>><br>
>>*Dat
e: *August 5, 2005 11 :35:38 AM PDT *<b>To:</b> *Brian
Swetland<br>
>> <Swetland@google.com
<mailto:swetland@google.com>> *<b>Cc:</b>
*Sascha<br>
>> Brawer <Sascha@google.com
<mailto:sascha@google.com>>,<br>
>>
arubin@google.com <mailto:arubin@google.com>,
nicksears@google.com<br>
>>
<mailto:nicksears@google.com>,
miner@google.com<br>
>>
<mailto:miner@google.com>,
cwhite@google.com<br>
>>
<mailto:cwhite@google.com>,
fadden@google.com<br>
>>
<mailto:fadden@google.com>,
tcole@google.com<br>
>>
<mailto:tcole@google.com>,
ficus@google.com<br>
>>
<mailto:ficus@google.com>, Patrik Reali
<patrik@google.com<br>
>>
<mailto:patrik@google.com>>, Urs Hoelzle
<urs@google.com<br>
>>
<mailto:urs@google.com>> *<b>Subject:</b> **Re:
Java VM for
Android*<br>
>><br>
>><br>
>>Brian;<br>
>><br>
>
;> I can't really comment on your project but I'd like to give
you<br>
>>some more background info in case you are
interested: There are<br>
>>several people here at
Google that have intimate VM knowledge: Urs<br>
>>
H"i(, V2lzle, Srdjan Mitrovic, and I all worked on Sun's HotSpot JVM;
we<br>
>> are in fact part of the original designers of
the VM. Srdjan and I<br>
>> later wrote the
"client" compiler for the VM (this is the
default<br>
>>compiler shipped with Sun's VM, for ia32
and SPARC); and we also<br>
>> wrote the compiler for
one version of Sun's CLDC VM for embedded<br>
>>devices
(also referred to as the "Monty" VM, running on
StrongARM).<br>
>>Todd Turnidge, David Stoutamire, and
Ben Gomes joined the HotSpot<br>
>> VM effort a bit
later but also have done significant work in
that<br>
>>space. Srdjan, Todd, and I later also worked
on a successor of the<br>
>>HotSpot VM (for MIPS) at a
startup. And last but not least we now<br>
>>also have
Tim Lindholm and Frank Yellin, the original Java VM
guys<br>
>> here at Google. But you probably don't want
that many cooks
...<br>
>><br>
>>Anyway, you may
want to consider chatting with some of these<br>
>>
people, there is a considerable amount of knowledge that can
be<br>
>>tapped. -
gri<br>
>><br>
>> PS: I am not
cc: these extra people to reduce the amount of
spam<br>
>>you're getting ...
:-)<br>
>><br>
>><br>
>><br>
>>On 8/5/05, *Brian Swetland*
<Swetland@google.com<br>
>>
<mailto:swetland@google.com>>
wrote:<br>
>><br>
>> I am a
somewhat familiar with the grungy work involved in
embedded<br>
>> JVM building -- I wrote the VM that the
Danger Hiptop
platform<br>
>>uses.<br>
>><b
r>
>>There are some useful reasons (in my mind) for going
through the<br>
>> effort of building our own embedded
VM rather than just going with<br>
>>off the shelf
solutions:<br>
>><br>
>> - We'd
like things to be really well-integrated with the<br>
>>
environment, small, fast, and fast to launch. Both the "run the
vm<br>
>> in a little box just for midlets"
model (used by most handsets<br>
>> today) and
"run the entire world inside one vm" model (used
by<br>
>>danger) have downsides. I'd like to take
advantage of running Linux<br>
>>on CPUs with a MMU
(arm9 and better) and having multiple instances<br>
>>of
the VM run in their own process space. Being able to have
hard<br>
>> limits imposed by the kernel on memory use,
etc, and tear down a<br>
>> whole VM if an app
misbehaves is something we wished for often at<br>
>>
Danger. To do this, we need to make sure we can start up
things<br>
>>quickly when apps launch -- if java is core
to the system and not a<br>
>> little novelty like in
current handsets, users are not going to<br>
>>want to
wait 10-15 seconds for apps to
launch.<br>
>><br>
>> - License
choice is important. One of the goals of this project
is<br>
>>to provide an open source system that's
appealing to handset OEMs.<br>
>>The Linux kernel is
GPL'd, but all the pieces above the kernel<br>
>>that
we're using or building so far are under much
friendlier<br>
>> licenses (BSD or MIT style typically).
Bringing in third party<br>
>>commercial solutions is
tricky for this reason too, unless we plan<br>
>> on
buying them outright or otherwise convincing them to
release<br>
>>their software under an open source
license.<br>
>><br>
>> - After
some amazingly negative experiences at Be, dealing
with<br>
>> Cygnus C++ compiler support, I would have a
lot of concerns about<br>
>> throwing money (away) at
Redhat or Cygnus or the like for language<br>
>>or
compiler support. Of course there's also the concern
of<br>
>>shopping core parts of the system out to
possibly disinterested<br>
>>third
parties.<br>
>><br>
>>-The JVM
is going to be a central piece of the system
we're<br>
>> building, not some little add-on on the
side -- so we can provide<br>
>> some really good java
application development and user experiences.<br>
>> I'd
like to take recycle bits where possible to support
javascript<br>
>>and other language bindings, which will
require doing things a<br>
>> little differently than an
off the shelf JVM.<br>
>><br>
>>
- Classpath is interesting for their "build it all in
java"<br>
>> approach, but from a performance
perspective (which matters a lot<br>
>>on small
devices), pushing chunks of the core library to
native<br>
>>code is a huge win. Also, it is GPL with
some special riders<br>
>>(which I thought the GPL
disallowed ...
).<br>
>><br>
>>Anyway, those
are just some points off the top of my
head,<br>
>><br>
>>Brian<br&g
t;
>><br>
>>On 8/5/05, Sascha Brawer
<Sascha@google.com<br>
>>
<mailto:sascha@google.com>>
wrote:<br>
>>> Hi
androids,<br>
>>><br>
>>&
amp;gt;I happened to stumble upon your wiki page [1]. Are you
really<br>
>>sure
you<br>
>>>want to write your own JVM, as [2]
seems to indicate? You<br>
>>> certainly have
your reasons, but it sounds like repeating lots
of<br>
>>> grungy
work.<br>
>>><br>
>>&
gt; So, if you don't mind, let me emit some random personal
notes<br>
>>> about the free Java
scene.<br>
>>><br>
>>&
;gt; Everyone and their dog (not really, but way too many people)
has<br>
>>been<br>
>>>wri
ting a JVM around GNU Classpath [3]. Most of them don't
target<br>
>>>embedded systems, many are crap,
much has gone to oblivion, but<br>
>>>there's
also some stuff that might possibly be useful to
you<br>
>>>guys.<br>
>>&a
mp;gt;<br>
>>> I'd really recommend having a look
at JamVM [4]: it's fast for
a<br>
>>pure<br>
>>>inter
preter, with a decent and small codebase. JamVM is what
most<br>
>>> Classpath hackers use nowadays for
development. The author seems<br>
>>>a nice guy,
he was working on optimizing Sun's and IBM's
JVMs,<br>
>>> and is now an independent
contractor.<br>
>>><br>
>>
;> I know of two companies using Classpath for JVMs that
target<br>
>>embedded
systems:<br>
>>><br>
>>&a
mp;gt; /k! [5] is a cover-up for one guy having his fun. My
personal<br>
>>> impression from the Classpath
meetings is that the author is<br>
>>>really into
free software; I'm pretty sure he would be keen on
a<br>
>> contract
for<br>
>>> an open-source embedded JVM. In the
meetings list, he seemed to<br>
>>> know what
he's talking about, but I haven't chatted that
much<br>
>>>with
him.<br>
>>><br>
>>&g
t; Aicas [6] is a real company whose embedded JVM is based
on<br>
>>
Classpath.<br>
>>> Since they haven't given
anything back to the project, I'd be<br>
>>>
surprised if they would be interested in a contract for
an<br>
>>
open-source<br>
>>>embedded
JVM.<br>
>>><br>
>>&g
t; There's also a Bytecode-to-C compiler [7], but I've no
idea<br>
>>>whether it's any good. I don't think
it gets much used. But it<br>
>>> might be
interesting in case you want to use an
ahead-of-time<br>
>>> compiler for selected hot
spots, and use a pure interpreter like<br>
>>>
JamVM for the
rest.<br>
>>><br>
>>&
gt; Kaffe [8] has been used for embedded systems, but the
licensing<br>
>>is
in<br>
>>> a limbo (GPL, copyright held by a dead
company).<br>
>>><br>
>>&
amp;gt; You could pay Redhat for tweaking gcj/gcc, but their
focus<br>
>>really
is<br>
>>>on desktop systems. But since you
mention C++ linkage on your<br>
>>> wiki: gee
uses the same vtables for Java and C++, they call
this<br>
>>>"Cygnus Native Interface
(CNI)". There has been lots of
talk<br>
>>>about<br>
>>g
iving gee<br>
>>> a better jitter for dynamically
loaded bytecode; they currently<br>
>>have
a<br>
>>>very inefficient interpreter as part of
the Java runtime<br>
>> library.
But<br>
>>> last I've heard, Redhat's plan now is
to use the gee backend as<br>
>>a
JIT<br>
>>> -- hairy stuff, and certainly totally
unusable for an embedded<br>
>>
sytem.<br>
>>><br>
>>&
;gt; If you need more info around the free Java projects, or if
want<br>
>>> to establish a contact, please feel
to talk to either me or<br>
>>>
Patrik<br>
>>Reali.<br>
>>&g
t; We've both been somewhat active in this scene before
joining<br>
>>> Google, so we know most people
from
meetings.<br>
>>><br>
>>&
amp;gt; Oh, you surely know that quite a few people at Google have a
JVM<br>
>>> background? For instance Robert
Griesemer or Urs Hoelzle. I
hope<br>
>>><br>
>>you<
;br>
>>>don't mind that I'm taking the liberty to cc
them on this post,<br>
>>> in case they want to
comment/shoot me
down.<br>
>>><br>
>>&
gt; Best wishes, and have fun with
Android,<br>
>>><br>
>>&a
mp;gt; --
Sascha<br>
>>><br>
>>&
;gt; [1] http://wiki.corp.google.com/twiki/bin/view/Main/Android
[2]<br>
>>
http://wiki.corp.google.com/twiki/bin/view/Main/AndroidJavaVM<br>
&
;gt;> <http://wiki
.corp.google.com/twiki!bin/view/Main/AndroidJavaVM><br>
>
;>>[3] http://www.gnu.org/software/classpath/
[4]<br>
>>>http://jamvm.sourceforge.net/
[5]<br>
>>>http://www.kiffer.be/k/profile.html
[6] http://www.aicas.com/
[7]<br>
>>>http://jcvm.sourceforge.net/ [8]
http://www.kaffe.org<br>
>>><br>
&g
t;><br>
>><br>
><br>
[ Reply to This | Parent | # ]
|
|
|
|
|