Process and threads

Adam Messer amesser at
Wed Mar 3 11:55:05 PST 1999


I am in an R&D group at my company. Our current
research project is a clustered Java environment I have been using Kaffe
as a basis to understand JVMs. I assume that the way Kaffe handles things
is pretty typical of JVMs in general. I have a few questions about JVMs
in general, and Kaffe specifically. I hope it is OK to ask these questions
here. Anyone who is a JVM expert, please feel free to sound off on this

I am confused about a few things. First, how do JVMs
like Kaffe and Sun's compare the built in JVMs of browsers like Netscape?
Specifically, I am interested in issues like 1) their lifetimes, 2) how
they handle processes. It looks as if a JVM like Kaffe only handles on
process. I see a couple of  'fork/exec' functions defined in the code,
but they never seem to get called? If you run the JVM from the command
line, how would you specify another application to run anyone. It looks
like the only time that a process gets created is when you invoke Kaffe
(or any other JVM) to load an application. The first difference I notice
between an application and an applet is that an application has a main()
entry point. Is that correct? What are the other important differences
from the process/thread point of view. Would Kaffe (or any JVM) start another
process (fork/exec) if a request is made to load an object that has a main()
in it.

Command line JVMs exit when the application they
start exits. Does anyone have a comment on the resident JVM of Linux? How/why
does Linux do that. It seems like a great idea if the machine in question
will be spending most of its time running Java applications. Does anyone
know if any of the 'built in' JVMs of HTTP servers ever remain resident.
It looks like the only purpose of command line JVMs is for development
and debug of Java applications and applets. Is that true. Can anyone give
an overview of server side JVMs .vs. client side JVMs?

Adam Messer

More information about the kaffe mailing list