On Friday 08 December 2000 22:13, Reinhard Foerster wrote:
On Fri, Dec 08, 2000 at 06:57:23PM +0100, Konrad Rosenbaum wrote:
Aber mal im Ernst: Java ist nich in der Lage auf Hardware zuzugreifen, weil es nie dazu gedacht war. (Ausnahme: JNI, aber dann kann man gleich vollstaendig in C/C++ arbeiten.)
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. ;-)
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.)
Aber Java ist in dieser Hinsicht nicht "fast jede andere Sprache"!
Die allernotwendigsten Sachen sind mit Java möglich (plus einigen Unsinn, den keiner braucht es sei denn er nimmt Java). Aber Erweiterungen sind kaum möglich. Sprich: bei realen Projekten stößt Du früher oder später an die Grenzen von Java und hast keine Chance mehr außer dem Wechsel auf eine andere Sprache (via JNI z.B.). Mit C kannst Du immernoch nach der passenden Bibliothek suchen.
Im Übrigen ist der ANSI C Standard so klein gehalten, weil es genug Bibliotheken gibt.
C und Java haben deutlich unterschiedliche Ziele. Mit Java etwas programmieren zu wollen, was eigentlich ein Kerngebiet von C ist (direkte Hardwareansteuerung) halte ich für einfach nur dumm.
Konrad