Vergleich Java — C++ (1/4) Vergleich Java — C++ (2/4) Was gibt es alles in C++, was sich in Java nicht wiederfindet? Was gibt es dafür in Java, was sich in C++ nicht findet? • keinen Präprozessor • Modularisierung mittels Paketen ("packages") • keine Präprozessor-Anweisungen, also insbesondere kein "#include" • Importieren von Paketen und Klassen • keine globalen Funktionen • keine Zeigertypen und Zeiger • Java-Compiler arbeitet in zwei Durchläufen ("Pässen"). Das erlaubt beliebige Vorwärtsverweise. • keine Aufzählungstypen • automatische Freispeicherverwaltung • keine vorzeichenlosen numerischen Datentypen • ausschließlich Referenzen auf Objekte • keine Strukturen und Varianten ("structs","unions") • Unicode als Zeichensatz • keine explizite Speicheranforderung und -freigabe • "continue" und "continue label" • keine parametrisierten Klassen (Templates) • vollständig definierte Sprache • keine Formatierung von Textausgaben • viele (zur Sprache zugehörige) Klassenbibliotheken • Definition von Schnittstellen • kein Überladen von Operatoren • "break" und "break label" • plattformunabhängig © H. Hansen FHTW-Berlin 2003 © H. Hansen FHTW-Berlin 2003 Vergleich 1/4 Vergleich Java — C++ (3/4) Zusammenfassung von Unterschieden Vergleich 2/4 Vergleich Java — C++ (4/4) Zusammenfassung von Unterschieden Konzept Konzept Java C/C++ umfangreich Klassenbibliotheken Felder (Arrays) echte Felder mit Prüfung der Feldgrenzen Zeiger Boolean ist Basisdatentyp muß explizit definiert werden Char 16-Bit Unicode Zeichensatz 1 Byte Char-Arrays String- bzw. StringbufObjekte Feld von Bytes null ist Literal (Schlüsselwort) muß definiert werden Speicherverwaltung automatische Garbagecol- explizite Freigabe lection Threads vorhanden nicht in der Sprache vorhanden Mehrfachvererbung über Schnittstellen: class a implements b direkt Einbinden anderer Programmkomponenten import von Paketen oder Klassen #include "Datei" Modularisierung Klassen und Pakete von Programmen viele beliebig kombinerwenige einfache bare spezialiserte Klassen Klassen Laufzeitinformation Reflexion FHTW-Berlin C/C++ wenige Klassen im Standard definiert keine bzw. mittels #include Ein- und Ausgabe © H. Hansen Java gehören zur Sprache im Standard wahrsch. vorhand. 2003 Vergleich 3/4 © H. Hansen FHTW-Berlin 2003 Vergleich 4/4