Damit der Artikel http://www.lowlevel.eu/wiki/Java endlich mal einen Beispielkernel erhält, wurde unter http://www.lowlevel.eu/wiki/Diskussion:Java schon eifrig über die Theorie diskutiert. Das ganze kommt jetzt aber ins Forum, weil es einfach keine Diskussion mehr ist 
Hier ist ersteinmal das, was ich getan habe:
-Tutorial-Kernel kopiert
-Makefile für *.java ergänzt
-Init.java erstellt, die in Funktion Init.main() die native Funktion write_char('a') aufruft
-Funktionen von java.lang.Object überschrieben so gut es ging
-Versucht zu linken:
Was also noch getan werden muss:
-write_char nativ implementieren (Mit CNI, das verlangt nix externes, soweit ich weiß)
-C++-Support einbauen, dazu braucht man einen rudimentären Kernel
-herausfinden, was (und wie) man die anderen Funktionen implementieren kann, dazu sollte man sich vllt. mal den GCJ-Quelltext anschauen oder dekompilieren (wer will das schon...).
Projekt-Ordner ist hier: http://ritter-vogt.dyndns.biz/rv/files/gcj-kernel.zip
Viel Spaß beim rumprobieren!
Fabian
Edit: Wenn C++ drin ist, sollte Java kein Problem mehr werden, da GCJ Java C++-Kompatibel kompiliert, soweit ich das verstanden habe.

Hier ist ersteinmal das, was ich getan habe:
-Tutorial-Kernel kopiert
-Makefile für *.java ergänzt
-Init.java erstellt, die in Funktion Init.main() die native Funktion write_char('a') aufruft
-Funktionen von java.lang.Object überschrieben so gut es ging
-Versucht zu linken:
Code: [Auswählen]
Init.java:1: undefined reference to `java::lang::Object::Object()'
Init.o: In function `void Init::main()':
Init.java:5: undefined reference to `_Jv_InitClass'
Init.java:5: undefined reference to `hidden alias for void Init::write_char(wchar_t)'
Init.o: In function `_Jv_global_static_constructor':
Init.java:13: undefined reference to `_Jv_RegisterResource'
Init.o:(.data+0x24): undefined reference to `void java::lang::Object::throwNoSuchMethodError()'
Init.o:(.data+0x74): undefined reference to `hidden alias for void Init::write_char(wchar_t)'
Init.o:(.data+0x100): undefined reference to `vtable for java::lang::Class'
Init.o:(.data+0x110): undefined reference to `java::lang::Object::class$'Was also noch getan werden muss:
-write_char nativ implementieren (Mit CNI, das verlangt nix externes, soweit ich weiß)
-C++-Support einbauen, dazu braucht man einen rudimentären Kernel
-herausfinden, was (und wie) man die anderen Funktionen implementieren kann, dazu sollte man sich vllt. mal den GCJ-Quelltext anschauen oder dekompilieren (wer will das schon...).
Projekt-Ordner ist hier: http://ritter-vogt.dyndns.biz/rv/files/gcj-kernel.zip
Viel Spaß beim rumprobieren!
Fabian
Edit: Wenn C++ drin ist, sollte Java kein Problem mehr werden, da GCJ Java C++-Kompatibel kompiliert, soweit ich das verstanden habe.

Übersicht
Wiki
Hilfe
Suche
Einloggen
Registrieren
Drucken

Gespeichert



) schickt mir ne PM oder eine Mail (mit Benutzer/Passwort) und ich schick euch Daten. 

