Većina operativnih sistema se piše u C-u. Postoje i operativni sistemi napisani u drugim jezicima (potpuno u asembleru, C++-u, Oberon-u, i mnogim drugim).
Ukoliko se operativni sistem piše u C-u, jeziku koji ne zavisi od platforme, onda je neophodno bar nešto koda napisati u asembleru (C ne poznaje neke osobine hardvera na kome radi, pa na, npr. IA32, ne bi mogao da podešavaš LDT, GDT, IDT, da koristiš TSS radi lakšeg multitasking-a, itd.).
Svakako, najverovatnije postoje viši programski jezici koji su namenjeni pisanju operativnih sistema za određenu arhitekturu, i na njima onda nije potrebno koristiti asembler. Čak, i C se može proširiti nekom bibliotekom za OS razvoj za svaku arhitekturu ponaosob (jedna, bar delimično takva, biblioteka već postoji; potraži OSKit, već sam je u nekoliko navrata pominjao na ovom forumu), i onda nema potrebe koristiti asembler.
Što se tiče Java programskog jezika — ovakvo pitanje implicira upotrebu Java sintakse, a ne i vrstu izvršnog fajla (sigurno ti je poznato da se i Java kod može prevesti u mašinski kod) — nema nikakvih problema.
Ukoliko, pak, misliš na operativni sistem koji bi se izvršavao u JVM, i samim tim bio zapisan u Java bytecode-u, i to je moguće, ali onda je terminologija već malo mutnija.
Ukoliko se ne radi o hardverskoj JVM, onda bi prvi sloj operativnog sistema morala biti sama JVM koja bi imala pristup svim resursima sistema. Tek kada bi imao JVM na raspolaganju bi mogao da pišeš ostale servise operativnog sistema u Javi.
Ali, već postoji nekoliko Java-zasnovanih rešenja u polju operativnih sistema.
Potraži KaffeOS (ista Flux razvojna grupa koja je razvila i OSKit), pogledaj cjos.sf.net i jos.sf.net, i sigurno ćeš shvatiti da je moguće i u Javi pisati operativni sistem (međutim, većinom je želja da operativni sistem podržava Java mogućnosti, i da pokreće Java aplikacije native-ly, jer u tome je prednost, a ne u pisanju u Javi).
Možda se moje mišljenje promenilo, ali ne i činjenica da sam u pravu.