Warum wurde der Thread von illumi geschlossen?



  • In dem Thread auf den du verweist, werden doch garnicht alle seine Fragen beantwortet. 👎



  • Benutze die Suchfunktion um weitere (inf) Threads zum Thema Java vs. C++ zu sehen ...



  • Ich weiß, es gibt hier viele Thread zu Java vs. C++. Aber in denen geht es irgendwie um was anderes. 🙄



  • Das bezweifle ich 🙂


  • Mod

    ...und dabei habe ich gerade so eine ausführliche Antwort geschrieben.

    Dann kommt die halt hier hin :p :

    - Exceptionhandling Java vs C++

    In Java gilt "Catch Or Throw". Das heißt, dass jede Exception, die auftreten kann, entweder durch ein catch aufgefangen werden muss, oder dass die Methode, in der die Exception auftreten kann, explizit bekannt geben muss, dass sie diese Exception schmeißen kann. Im letzteren Fall müßte sich dann die Methode, in der die hier beschriebene Methode aufgerufen wird, entsprechend um die Exception kümmern. Eine Ausnahme bilden hier die RuntimeExceptions, die eine Untergruppe der Exceptions bilden. Hier gilt "Catch Or Throw" nicht.

    Bei C++ werden Exceptions nicht so streng gehandhabt. Hier gilt "Catch Or Throw" nicht.

    - "friend" in Java vs C++

    "friend" existiert in Java nicht.

    - Wodurch werden die Anforderungen: Objektorientierung, Portabilität & Sicherheit von der Java Plattform erfüllt?

    Sicherheit bei Java: Bei allen Zugriffen auf den Speicher wird überprüft, ob der Zugriff berechtigt ist. Es werden zum Beispiel Arraygrenzen überwacht, weiterhin werden bei Zugriffen auf Objekte die Referenzen überwacht. Wenn die Referenz auf etwas falsches zeigt (null), dann kann man darauf nicht zugreifen. Gleiches gilt für Casts. Bei Applets hat man als Anwender zudem die Möglichkeit, explizit zu bestimmen, ob ein Javaprogramm auf das Dateisystem zugreifen kann, mit anderen Servern kommunizieren darf etc.!

    Sicherheit bei C++: Bei C++ gilt, dass man für nichts zahlen muss, was man nicht haben will. Bezogen auf die Sicherheit heißt das: Es ist keine Sicherheit vorhanden. Wenn man entsprechende Sicherheitsmechanismen haben möchte, dann muss man sich selbst überlegen, wie man diese implementiert.

    Portabilität bei Java: Die Größe der Datentypen ist genormt und in der Java-Spezifikation festgelegt. Dies garantiert gleiches Verhalten auf unterschiedlichen Plattformen. Weiterhin bietet die Standardbibliothek viele Dinge, die ansonsten plattformabhängig wären. Hierzu gehören u.A. GUI-Klassen, Threads und Klassen für das Arbeiten im Netzwerk. Ein Programm, das 100% Java ist, wird auf allen Plattformen laufen, auf denen eine entsprechende JVM vorhanden ist. Das Verhalten des Programm wird, bis auf wenige Ausnahmen, auch überall gleich sein. Es ist kein Neukompilieren für jede Plattform notwendig.

    Portabilität in C++: Es sind nur Mindestgrößen für die Datentypen festgelegt. Weiterhin bietet die Standardbibliothek keine Unterstützung, wie die Standardbibliothek von Java. Man ist somit auf plattformunabhängige Bibliotheken von Drittanbietern angewiesen (z.B. Qt, GTK, wxWindows,...). Wenn der Programmierer in C++ ein portables Programm schreiben möchte, dann muss er selbst sehr darauf achten, dass sein Programm portabel bleibt. Bei C++ muss das Programm für jede Plattform mit einem entsprechenden Compiler kompiliert werden. Die meisten C++-Compiler entsprechen aber nicht dem C++-Standard. Wer ein portables Programm haben möchte, muss also darauf achten, dass er nur Spracheigenschaften benutzt, die alle gewünschten Compiler mitbringen.

    Objektorientierung: Sowohl Java, als auch C++ bieten alle Spracheigenschaften, die eine objektorientierte Sprache ausmachen. Während einem jedoch bei Java die Objektorientierung mehr oder weniger aufgedrängt wird, unterstützt C++ noch weitere Programmierparadigmen: prozedurale Programmierung und generische Programmierung.

    - Welchen Unterschied hinsichtlich der Zugriffsrechte bei Klassen gibt es in Java im Vergleich zu C++?

    Beide Sprachen bieten die Modifikatoren "public", "protected" und "private". Diese Modifikatoren haben im Prinzip ähnliche Bedeutung in beiden Sprachen. public und protected werden aber in C++ durch "friends" aufgeweicht. Ein Element einer Klasse in Java, der kein entsprechender Modifikator vorangestellt wird, hat einen weiteren Zugriffsbereich, der das Paket umfaßt, in welchem sich die Klasse befindet. Abgeleitete Klassen können auch auf diese Elemente zugreifen. Der Zugriffsbereich ist also zwischen "protected" und "public" anzusiedeln.

    - Was ist ein Interface in Java und welche Rolle spielt es,gibt es etwas vergleichbares in C++?

    Ein Interface ist im Prinzip eine Eigenschaft einer Klasse, die bedeutet, dass die Klasse eine bestimmte Schnittstelle zur Verfügung stellt. Am ehesten ist dies mit einer Klasse vergleichbar, in der alles abstrakt ist. Javaklassen können im gegensatz zu C++-Klassen zwar nur eine direkte Superklasse haben, sie können aber meherer Interfaces implementieren.

    - Wie sind in Java Klassen und Objekte realisiert und welche Unterschiede gibt es zu C++ hinsichtlich der Zugriffsrechte und der Verwaltung?

    In Java liegen alle Objekte auf dem Heap, desweiteren werden alle Objekte über Referenzen angesprochen. Es wird auch immer die Referenz eines Objektes übergeben und nicht das Objekt selbst. In C++ hat der Programmierer mehr Freiheiten und kann Objekte auch auf dem Stack erzeugen etc.! Objekte werden in Java durch einen Garbage-Collector vom Speicher entfernt, wenn keine Referenz mehr auf das entsprechende Objekt verweist. In C++ muss sich der Programmierer selbst darum kümmern, dass Objekte auf dem Heap auch wirklich gelöscht werden, wenn sie nicht mehr benötigt werden.



  • Ich hatte den Thread geschlossen, vor allem auch, weil er gleichlautend unter "C++" noch mal gepostet wurde. Das ist wohl wenig sinnvoll, außer man hat vor wieder mal das Blut aller Seiten in Wallung zu bringen.


Anmelden zum Antworten