Autor Thema: java in osdev  (Gelesen 6928 mal)

maumo

  • Beiträge: 182
    • Profil anzeigen
    • http://maumo.50webs.com/
Gespeichert
« am: 09. May 2005, 18:18 »
hat einer von euch ahnung wie (und warum) man java in
osdeving einbringen kann? ist es denn sinnvoll?

DDR-RAM

  • Beiträge: 184
    • Profil anzeigen
Gespeichert
« Antwort #1 am: 09. May 2005, 18:23 »
geht nicht, du müsstest dir ne VM coden, das kannste nicht mit Java, da Java eine VM vorraussetzt, also ist es sowieso blödsinn.
Außerdem hat Java keine ASM-Fähigkeiten.

MfG
DDR-RAM

maumo

  • Beiträge: 182
    • Profil anzeigen
    • http://maumo.50webs.com/
Gespeichert
« Antwort #2 am: 09. May 2005, 18:25 »
was ist mit JNode & co? ist ja ein OS in java gecoded, oder?

DDR-RAM

  • Beiträge: 184
    • Profil anzeigen
Gespeichert
« Antwort #3 am: 09. May 2005, 18:28 »
kenn ich nicht :oops:
kann ich auch nicht viel sagen, für nen x86 muss man trotzdem ne VM druntercoden.

GhostCoder

  • Beiträge: 187
    • Profil anzeigen
Gespeichert
« Antwort #4 am: 09. May 2005, 18:35 »
Hiho,

ja, man kann Java einbringen. Problem ist nur das du erst eine VM programmieren musst,
damit du Java Code ausführen kannst. Und das sollte kein einfaches Unterfangen werden. :)

Ein Vorteil wäre, das der komplette Code (außer dem Kernel und der VM natürlich) komplett unabhängig wären, d.h. auch kein "lästiges" neu-komplieren auf anderen Plattformen (Distributionen).

Habe mir auch mal den Einsatz von Java (oder einer VM in einer anderen Sprache, ist ja egal ...) überlegt, aber das ist ziemlich schwer zu programmieren.

MfG, GhostCoder
A man, a legend!

GhostCoder

  • Beiträge: 187
    • Profil anzeigen
Gespeichert
« Antwort #5 am: 09. May 2005, 18:36 »
Gott bin ich langsam, und das obwohl ich als erster zu schreiben begonnen habe :)
A man, a legend!

maumo

  • Beiträge: 182
    • Profil anzeigen
    • http://maumo.50webs.com/
Gespeichert
« Antwort #6 am: 09. May 2005, 18:38 »
gibt es dazu irgendwelche tuts, docs, etc ... ?
google spuckt nur müll aus.

Jidder

  • Administrator
  • Beiträge: 1 625
    • Profil anzeigen
Gespeichert
« Antwort #7 am: 09. May 2005, 18:44 »
http://java.sun.com/docs/books/vmspec/ <-- schaut recht offiziell aus
Dieser Text wird unter jedem Beitrag angezeigt.

maumo

  • Beiträge: 182
    • Profil anzeigen
    • http://maumo.50webs.com/
Gespeichert
« Antwort #8 am: 09. May 2005, 18:49 »
thx!
endlich mal wieder was zu inhalieren^^

DarkThing

  • Beiträge: 652
    • Profil anzeigen
Gespeichert
« Antwort #9 am: 09. May 2005, 19:25 »
Gibts eigentlich nen guten Grund Java zu verwenden? Ich denke dass ist relativ langsam und hat nicht wirklich viele Vorteile gegenüber C++.

The-Programmerfish

  • Beiträge: 434
    • Profil anzeigen
Gespeichert
« Antwort #10 am: 09. May 2005, 20:49 »
Zitat von: PorkChicken
http://java.sun.com/docs/books/vmspec/ <-- schaut recht offiziell aus


Zitat von: Java Website
You may print this book once. For the complete copyright notice, see Copyright.


Wie wollen die das überprüfen? Himmel sind die dumm ^^
<- Verhasst, Verdammt, Vergöttert

elfish_rider

  • Beiträge: 293
    • Profil anzeigen
Gespeichert
« Antwort #11 am: 09. May 2005, 21:01 »
Ausserdem kommt doch keiner auf die Idee, dieses Buch mehrmals auszudrucken, in Anbetracht des immensen Tinten- und Papierverbrauchs ;)

The-Programmerfish

  • Beiträge: 434
    • Profil anzeigen
Gespeichert
« Antwort #12 am: 09. May 2005, 21:45 »
So'n Laserdrucker ist ne praktische Angelegenheit. Sauschnell und Toner halten ne Weile.

Scheiße nur dass ich keinen hab -.-
<- Verhasst, Verdammt, Vergöttert

Legend

  • Beiträge: 635
    • Profil anzeigen
    • http://os.joachimnock.de
Gespeichert
« Antwort #13 am: 09. May 2005, 21:50 »
Zitat von: DarkThing
Gibts eigentlich nen guten Grund Java zu verwenden? Ich denke dass ist relativ langsam und hat nicht wirklich viele Vorteile gegenüber C++.


Also ich habe so etwas in Ansätzen für OS Dev schon umgesetzt. Wenn man es vollständig in seinem Design berücksichtig, kann es wohl besser umgesetzt werden als in z.B. Windows oder Linux.

Und dann erhält man so manchen Vorteil:
- Keine Probleme mit Name Manglings beim Linken
- Garbage Collection  :!: - besonders Dinge wie XML's zu Parsen
ist ne Qual ohne.
- Man kann auf Paging zum Speicherschutz verzichten - der Speicherschutz folgt aus Java's Spracheigenschaften und das man Java Bytecode validieren kann - nach der Ladephase ist das eine Möglichkeit einen Geschwindigkeitsvorteil von C++-Code wieder wettzumachen.
- Analog dazu: Java Code ist praktisch immun gegen Buffer Overflows, wenn etwas in dieser Art passiert, erhält man eine Exception, meistens wohl die ArrayIndexOutOfBoundsException, d.h. man kann so keinen Code einschleusen. Worst Case ist eine nicht behandelte Exception, so dass die JVM das Programm halbwegs sauber noch terminiert.
- C++ hat an manchen Stellen Probleme mit seinem Design, Templates können problematisch werden und zu unwartbaren Code führen, Multiple Inhertiance IST sehr schnell problematisch.

Ein Grossteil der Zeit beim Starten von einer Java Anwendung verbringt die JVM mit dem laden und validieren von Klassen - wenn sich alle Anwendungen eine JVM teilen würden, was ja kein konzeptionelles Problem darstellt (ausser man braucht verschiedene Versionen von manchen Libs gleichzeitig, ugh), dann kann man den Programmstart wohl um eigenes beschleunigen - ich denke mal die meisten die sagen Java ist langsam den Start von Applets in Erinnerung haben.

Wie sich das in der Praxis auswirken wird, muss sich erst noch zeigen, ich würde mich bei einem OS auch nicht auf Java beschränken, da man immer noch nicht gut sagen kann wie z.B. Java gegen .NET ausgehen wird, oder ob das jemals ausgehen wird - in dem Falle sollte man beides unterstützen, jedoch scheint .NET (und damit letztendlich auch z.B. Mono) intern um einiges komplexer zu sein als Java.
*post*

GhostCoder

  • Beiträge: 187
    • Profil anzeigen
Gespeichert
« Antwort #14 am: 10. May 2005, 09:28 »
Hi,

also langsamer dürfte Java nicht sein, wenn die VM den Bytecode vorher in den passenden Assembler Code der Tielplattform umwandelt.


@Legend:
Paging brauchst du ja trotzdem noch, damit jeder "Java" Prozess in nem eigenen Speicherbereicht liegt. Und für Swapping auch...

Gruß, GhostCoder
A man, a legend!

Legend

  • Beiträge: 635
    • Profil anzeigen
    • http://os.joachimnock.de
Gespeichert
« Antwort #15 am: 10. May 2005, 11:00 »
Zitat von: GhostCoder

@Legend:
Paging brauchst du ja trotzdem noch, damit jeder "Java" Prozess in nem eigenen Speicherbereicht liegt. Und für Swapping auch...

Gruß, GhostCoder


Für Swapping wäre es eine Überlegung, für ein System das nur Java-Programme (oder auch andere Safe Languages ausführt), ist das ansonsten nur Verschwendung - man muss eine virtuelle Machine ja nicht unbedingt als user mode Programm realisieren wollen, wenn man den Schritt mit Java in Osdev komplett durchgehen will.
*post*

DarkThing

  • Beiträge: 652
    • Profil anzeigen
Gespeichert
« Antwort #16 am: 10. May 2005, 13:54 »
Mal angenommen man würde den Kernel in C/C++ schreiben wollen, aber einen Teil auch in Java. Könnte man das einfach kombinieren oder geht das wegen dem ganzen VM-System nicht?

Svenska

  • Beiträge: 1 792
    • Profil anzeigen
Gespeichert
« Antwort #17 am: 10. May 2005, 14:15 »
Das geht nicht wirklich.
Java läuft in einer VM, also auf einem simulierten Prozessor, der garnicht
existiert. Und die VM simuliert also eben diesen Prozessor auf dein reales
OS - wenn du Teile des Kernels in Java schreiben möchtest, musst du also
den Kernel schon auf einer VM aufsetzen und Javas Umgebung
aufbauen.
Dann wäre aber die Umgebung bzw. der Simulator der neue Kernel :)

Svenska

DarkThing

  • Beiträge: 652
    • Profil anzeigen
Gespeichert
« Antwort #18 am: 10. May 2005, 14:19 »
1. Könnte man sich nicht in die VM ne Funktion einbauen die eine Java-Funktion aufruft?

2. Wieviel Arbeit ist es eigentlich so ne VM zu bauen.

Legend

  • Beiträge: 635
    • Profil anzeigen
    • http://os.joachimnock.de
Gespeichert
« Antwort #19 am: 10. May 2005, 21:07 »
1. Natürlich, das wirst du irgendwie sogar machen müssen, du willst ja auch die Main funktion des Programmes aufrufen ;)

2. Die Grundzüge sind nicht mal so schwer - im Wesentlichen geht es das class-fileformat zu implementieren. Dieses ist jedoch schon nicht ganz "programmfreundlich" - es ist ja auf eine kleine Dateigrösse optimiert. Dann noch einige Opcodes.

Schwieriger wird es dann auch alles zu 100% zu behandeln (das heisst im wesentlichen auch alle komplizierteren opcodes wie lookupswitch, wenn ich mich richtig erinnere hiess das gute beispiel so ;) ).

Und richtig schwierig, eigentlich genug für ein eigenes Projekt, ist dann die Optimierungsarbeit, im Wesentlichen in Form von einem JIT und einem schnellem Garbage Collector.
*post*

 

Einloggen