Ist Java wirklich so viel einfacher als C++?

8 Antworten

Komme von C / C++ und bin vor 8 Jahren auf Java umgestiegen. Kenne somit beide Sprachen sehr gut.

C / C++ nannte ein Kollege mal: wie mit dem Samuraischwert in einer weichen Masse. Das bedeutet, da man auf einer viel niedrigeren Ebene, direkt mit den Adressen von Werten und Instanzen arbeitet, ist die Gefahr, hier einen Fehler zu machen, sehr hoch. Man muss sich viel mehr Gedanken zum Speicher und zur Nebenläufigkeit machen als in Java. In C / C++ kann sehr leicht Speicher überschrieben werden.

Beispielsweise wenn 100 Zeichen für einen String reserviert sind und man 101 Zeichen beschreibt. Den Fehler zu finden ist sehr sehr schwer. In Java ist das nicht möglich.

Auch das Speichermanagement in Java ist viel einfacher. Man muss es zwar verstanden haben, aber das ist weniger als in C / C++. In Java macht man einfach nichts mehr mit dem Objekt. Wenn keine Referenz mehr auf ein Objekt da ist, wird es irgendwann gelöscht. In C / C++ muss der Entwickler für jedes Objekt die Verantwortung tragen, dass es mal gelöscht wird. Sonst wird der Speicher nie dem Betriebssystem zurück gegeben.

Auch die Portabilität auf andere Betriebssysteme ist in C / C++ durch das Verwenden unterschiedlicher bereitgestellter Libraries aufwändig, in Java ist da für den Entwickler kein Aufwand. Das gibt die Sprache alles her.

Java ist klar die jüngere Sprache.

Sehr treffend und gut verständlich erklärt. Danke.

1

mit C/C++ weiß man so zielmlich genau, was wie abgespeichert wird, hat direkten Einfluss, kann "resourcenschonender" Programmieren. Es gibt ein paar tollte Dinge, wie Templates, Operator Überladung, die gut lesbaren und trotzdem effizienten code erlauben. C++ unterstützt Objektorientierung, zwingt aber weniger zur sauberen Verwendung, Mehrfachvererbung ist unnütz, außer für Schnittstellen, friends sind seltsam usw.

Der Nachteil von C/C++ ist, das man sich um Dinge, wie Speicherverwaltung kümmern muss. Da beim Kompilieren Maschinencode der Zielplattform erzeugt wird, und da Hardwarezugriff über Bibliotheken nicht sauber wegabstrahiert wird ist es etwas mehr Arbeit, und macht es kompliziert, für verschiedene Plattformen (z.B: Windows/Linux-PC) zu programmieren.

Java ist abstrakter, unterstützt Objektorientierung sauberer (Schnittstellen usw.) man kann sich mehr auf das "fachliche" Konzentrieren und muss sich nicht um Dinge, wie Speicherverwaltung kümmern. Entwurfsmuster lassen sich direkter umsetzen usw. In Java könenn Klassen und Objekte zur Laufzeit "untersucht" und bearbeitet werden (Meta Programming). Die IDEs, z.B: Eclipse können dadurch den code teilweise "verstehen" und bieten ganz neue Möglichkeiten für das Refactoring, was gut ist für agile Entwicklung. Außerdem sind Java Programme Plattformunabhängig, da das "Javaprogramm " wird von einer Plattformabhängigen Runtime interpretiert, diese macht es dann lauffähig auf allen Plattformen. Das macht es einfacher Programme z schreiben, die auf verschiedenen Geräten laufen.

Einige Optimierungsmöglichkeiten von C++ entfallen bei Java, ist aber meiner Meinung nach nicht wirklich schlimm bei vielen Anwendungen, da verfrühte! Optimierung ja bekanntlich "die Wurzel allen Übels" ist;)

C/C++ würde ich nur noch für Microcontroller mit begrenzten Resourcen verwenden, oder, wenn es auf Geschwindigkeit ankommt oder, wenn es auf Geschwindigkeit ankommt, diesen Teil in C++ programmieren und in Java einbinden (JNI).

C# verbindet Vorteile von C++ und Java.

Also kurz: Java ist sauberer, abstrakter, man kann damit komplexere Programme schneller Realisieren. C/C++ ist gut bei kleinen Programmen für Hardware mit begrenzten Resourcen.

Allerdings sind Betriebssysteme, Treiber in C/C++ Programmiert, weil sie direkt auf die Hardware zugreifen. Und es gibt komplexe Programme, wie Photoshop, die auch in C programmiert sind. Ich kenne auch Leute, die schon gefühlte 120 Jahre C nutzen und darauf schwören;)

C# verbindet Vorteile von C++ und Java

Nicht wirklich. C# ist halt tiefer in der Plattform drin und ist dementsprechend auch abhängiger von der Plattform als Java.

0
@DreiGegengifts

ja, der Satz zu C# war zu allgemein. Hatte nur "unsave" code im Kopf, mit dem C++ ähnliche Sprachkonstrukte verwendet werden können, was in Java so nicht geht.

0

Jein. Java ist per se weder einfacher noch schwerer. Aber in C/C++ kann man viele Fehler machen, die schwer zu finden sind. Die meisten davon verhindert Java durch striktere Vorgaben, d.h. da meckert sofort der Compiler, noch bevor das Programm irgendwann in irgend einem Testfall sich merkwürdig verhält.

Allerdings gibt es entsprechende Werkzeuge (z.B. lint) auch für andere Sprachen. Man muss sie nur benutzen (und konfigurieren, wie scharf sie prüfen sollen).

Woher ich das weiß:Studium / Ausbildung – Seit 1981 befasse ich mich auch beruflich mit Computern

Man kann in Java glaube ich schneller Erfolge erzielen, was für die Lernmotivation gut ist. Grundsätzlich sind die Konzepte (Objektorientierung) aber dieselben, und das braucht bei beiden so seine Zeit, bis man das wirklich verstanden hat.

Woher ich das weiß:Hobby – Hobby seit meiner Jugend

C ist die Sprache der Mathematiker. Wenig schreiben, sehr viel audrücken. Das ist wie ein Kugelschreiber für einen Mathematiker. Man kann diese Sprache einfach.

Java eher etwas für Webdesigner ohne hohe Ansprüche.

Die Funktion von C kann man nicht mit wenigen Worten erklären. Das must Du googeln. "Funktionsweise C."

Mario

Java hat mit Webdesign genau so viel zu tun:

0

Webdesigner: du meinst Javascript, die hat mit Java wenig gemeinsam. Klingt nur ähnlich.

0

Was möchtest Du wissen?