|Java: Compile String -> byte -> Class wickborn@mail.CS.Uni-Magdeburg.De (Fabian Wickborn) (2003-01-17)|
|Re: Java: Compile String -> byte -> Class email@example.com (Joachim Durchholz) (2003-01-20)|
|From:||Joachim Durchholz <firstname.lastname@example.org>|
|Date:||20 Jan 2003 23:57:23 -0500|
|Posted-Date:||20 Jan 2003 23:57:23 EST|
> [Personally, I'd configure my system with a ramdisk and put the
> files there. -John]
Ramdisks must have their size configured in advance, and they must be
configured using root user privileges (unless things have changed
since I last looked). This restricts their usefulness. So I think a
good answer would be helpful even if Fabian can work with a ramdisk.
One idea might be this one:
.class files can be served from HTTP servers. Write a library that
accepts Java source via an API, and that contains a http server that
serves only requests from localhost. The API could look like this (just
a *very* rough sketch):
char  compile_java (char  source)
// Compile the submitted source code.
// Return a token that can be used in URLs to retrieve
// the information, like this:
// will give the error log (if any errors occurred)
// the compiled class "file" (maybe a package would be better)
The next idea would be like this:
Look at the class loader classes. Identify the routines that you call to
load a class - I'd expect there is one for each possible source of
classes, or a different subclass of ClassLoader for each source. However
it is defined, you'll get a set of Java classes that the class loader
expects to identify the source: a URL, a HttpConnection, a Stream, or
whatever. Write a class that implements the interface of such a source
but draws its input from the character array.
IIRC you'll have to register your class somewhere in the class loader
machinery of the JVM.
Disclaimer: This all draws from a cursory knowledge of Java and its
loader mechanism, plus general OO experience. All class names, Java
syntax, and other statements may vary slightly from reality; the above
are strategies I'd use if I were in Fabian's position, not ready-to-run
Return to the
Search the comp.compilers archives again.