Ter JVMs no kernel não parece resolver muito. Embora seja verdade que a falta de ponteiros fornece isolamento razoável de partes independentes de código, ele também extrai o interpretador de bytecode Java (que é permanentemente mais lento que o código nativo) ou um compilador JIT (que é extremamente lento no início). E eu não estou mencionando o coletor de lixo, que eu suspeito que você esteja esperando resolver automaticamente alguns problemas (o que não será).
Outro problema a resolver seria a interface de qualquer hardware. Você precisaria de um trecho de código não trivial que permitiria que o código Java acessasse, placa de rede, SATA, (i) SCSI, USB, FibreChannel e miríades de outros controladores, placa de áudio e (um dos bits mais complicados, suponho) um acelerador gráfico. Isso levaria a uma parte substancial do código sendo escrita em outra linguagem mais próxima do bare metal (seja assembly ou C / C ++ - que na verdade não é muito mais do que uma montagem mais legível com maior nível de abstração).
No final, se escrever o código do kernel em Java fosse o objetivo final, provavelmente o faria de forma ligeiramente diferente: escrevê-lo em Java e compilar diretamente em código nativo.
1) every java developer with a relative minor lowlevel knowledge were able to develop a kernel module.
Escrever um módulo do kernel, que em 90% dos casos é relacionado a hardware, requer mais do que um conhecimento "menor" de hardware. Pessoas que conhecem Java, mas não entendem C profundamente, definitivamente não são os candidatos certos para escrever drivers de hardware (ou qualquer outro módulo do kernel).
Coloque em outra perspectiva: você confiaria em seus dados mais importantes (e eu nem estou falando sobre estar no suporte de vida controlado por tal kernel) a algo rodando em um kernel escrito por pessoas que não o fazem? entendeu C e assembly o suficiente para escrever um driver razoável?
2) (And it is the really intended goal): a JVM could solve the greatest problem of the kernel development, and it is the lack of the memory protection. A binary code segment compiled from java never caused any harm to data structures out of its scope, if there isn't another problem (f.e. jit compiler error or lowlevel hw problem), although the runtime safety checks of a such binary code caused a well measurable drawback in speed.
Proteção de memória com JIT? Requer que as páginas sejam graváveis e executáveis. Isso é um pesadelo de segurança, mesmo quando não tem acesso direto à memória (no sentido de poder usar ponteiros).
Se a segurança (e, portanto, o isolamento do código entre outros) for sua preocupação, os microkernels são o que você procura. Você pode até ter uma que seja formalmente verificada . Mais uma vez, o código só pode ser tão bom quanto o pior programador cujo código ainda está em - no melhor dos casos. A linguagem como tal não é de longe tão importante quanto as pessoas que a usam.
A propósito, sugiro strongmente que você leia esta resposta sobre a programação do sistema em vários idiomas no SO.