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
![smiley :!:](https://forum.lowlevel.eu/Smileys/classic/smiley.gif)
- 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.