[vox-tech] Compiling C into Java bytecode?

Matt Roper vox-tech@lists.lugod.org
Mon, 30 Jun 2003 10:25:38 -0700


On Mon, Jun 30, 2003 at 10:05:24AM -0700, Micah J. Cowan wrote:
> On Sun, Jun 29, 2003 at 01:07:24PM -0700, Michael Wenk wrote:
> > On Sunday 29 June 2003 02:32 am, Bill Kendrick wrote:
> > > Okay, just out of curiosity.  Say one wanted to create a 'Java application'
> > > (e.g., something that runs in a web browser, cell phone or PDA JVM),
> > > but they wanted to write the application using the C /language/.
> > >
> > > This is possible, is it not?  If so, are there some tools for this
> > > under Linux?  (I see "gjc", the Java compiler from GNU, as well as
> > > "gij", the Java bytecode interpreter from GNU; but nothing for
> > > taking code in other programming languages and turning them into Java
> > > bytecode)
> > >
> > > Thx!
> > >
> > > -bill!
> > 
> > The biggest problem would be language features.  C allows you to many things 
> > java does not.  You'd probably spend more time trying to debug your 
> > javabytecodes on whatever system you're developing than you would learning 
> > java syntax.  Also, even if you wanted to use C, you would still have to 
> > learn the Java API(or write your own, which would be difficult to do), and 
> > how to call API classes from within the language.  
> 
> This would be a problem if you were compiling C source into Java
> source; but AIUI the JVM is a pretty complete virtual representation
> of an actual machine; you should be able to use all features you
> normally have in C.
...

I don't think this is true.  The JVM is a virtual representation of
a _stack-based_ machine (i.e. it doesn't have any notion of memory
addresses) so I don't think it can do a lot of the pointer arithmetic
that you often find in C code.


Matt

-- 

*************************************************
* Matt Roper <matt@mattrope.com>                *
* http://www.mattrope.com                       *
* PGP Key: http://www.mattrope.com/mattrope.asc *
*************************************************