Das sehe ich anders. Mit Java kann ich auf viel mehr Hardware zugreifen als mit C. In Java kann ich z.B. Grafiken auf die Graka zaubern, Daten übers Netz schicken, meine Maus abfragen, Sound abspielen usw. In C gibts neben File-IO, stdin+out eigentlich gar nichts, womit ich irgendwelche Hardware ansprechen könnte.
es ging ursprünglich um Roboter-steuerung. Die Java-Klasse möchte ich mal in der Standardbibo (java.*.*) sehen. ;-)
Genau. In C muß ich "nur" wissen, wie ich das richtige Device anspreche und kann damit auch Dinge ansteuern, die ursprünglich nicht vorgesehen waren. In Java kann ich nur die vom Hersteller vorgesehen Interfaces nutzen.
Der Witz ist, dass man bei Programmen, die auf einem Betriebsystem laufen (also nicht DOS) sowieso nicht direkt die Hardware programmierten kann, sondern ein abstaktes Interface nutzen muss. In C existieren solche Interfaces nicht, also kann ich auch nicht die Hardware ansprechen.
Das mag alles etwas ketzerisch klingen, vergleicht aber halbwegs formal die Fähigkeiten von Java und C, auf Hardware zuzugreifen. Wer mal ein C-Buch liest, wird dort absolut nichts zur Hardware finden, da sowas in C (!!!) einfach nicht vorgesehen ist. Punkt.
(Ja, ich weiss: "Man kann in der Sprache C mittels 12 Bibliotheken und unter 34 Annahmen über die Ablaufumgebung des Programms auch Hardware ansprechen" - Das kann fast jede andere Sprache auch.)
Außer Java.
Im Übrigen ist der ANSI C Standard so klein gehalten, weil es genug Bibliotheken gibt.
Und weil "drucke Grafik auf Drucker" kein Sprachbestandteil sein kann, sondern, Teil der Maschine. Wenn Java nun eine solche Maschine sein will, muß sie auch die OS üblichen Interfaces zur Hardware bieten (abstrahiert natürlich). Wenn SUN das geschafft hat, können die sich gratulieren. Das Ergebnis wäre eine Arte high-level OS.
Gruß, Eric