Ola…
Eu vi algo, principalmente nas revista Java Magazine, que existe um compilador para java, o GCJ, não sei quais as plataformas suportadas, mas de uma olhadinha mais aprofundada em thisiscool.com/gcc33_mingw.htm, este para Windows, pesquisando lah vc deverá encontrar algo para Linux entre outras.
Quanto a primeira pergunta, em cada .class, existe uma unica classe, por exemplo, se vc criar várias classes em um único .java, o compilador irá gerar vários .class. Por exemplo, vc criou um .java, chamado foo.java, e lá existe as classes foo, e teste, quando compilar, ele irá criar foo.class e test.class. Se ouver classes internas ele ira criar algo como [CLASSEPRINCIPAL]$[CLASSEINTERNA].class.
Para maiores esclarecimentos consulte o site da Javasoft. www.javasoft.com
[]´s