Dein letzter Login ist schon eine Weile her.

Bitte überprüfe, ob alle Angaben in Deinem Profil noch aktuell sind.


Bild: Spring 2012 Student Hackathon Coding, Bildausschnitt by hackNY.org, Lizenz: CC BY-SA 2.0

03.03.2015
von Aleksander
in IT-Talents

C++ vs. Java

x
Wir haben den besten IT-Job für Dich!
Jetzt fündig werden

Viele stellen sich die Frage, welche Programmiersprache für sie die richtige ist: Java? Python? C++? C#? VB? Es gibt sehr viel Auswahl und auf der Suche nach Informationen findet man viele widersprüchliche Angaben, entsprechend ist die entstehende Verwirrung natürlich verständlich. Bevor man sich jedoch überlegt, welche Sprache man nehmen will, muss man sich folgende Frage stellen: Wofür möchte ich das Werkzeug, das ich mir aneigne, nutzen?

Lesezeit: ca. 4 Min.

Bewerten

Themen auf dieser Seite:

Wer nur schnell eine hübsche GUI und ein paar Funktionen für ein 0815 Programm schreiben möchte, um sich das Leben zu vereinfachen, kann sich die Arbeit, jahrelang C++ zu programmieren, sparen und innerhalb weniger Tage die Grundlagen von AutoIt lernen.

Im folgenden Vergleich werde ich vor allem auf die Unterschiede zwischen Java und C++ eingehen, da viele der Vor- und Nachteile der Programmiersprache Java denen von .NET Sprachen ähneln beziehungsweise identisch sind. Des Weiteren sind es zwei der bekanntesten Programmiersprachen.

Vergleich

Der erste große Nachteil von Java und allen .NET Sprachen wie VB, C# und Co. ist, dass man sie decompilen kann. Jeder Schutzversuch stellt nur eine Verzögerung dieses Vorgangs da. Das könnt Ihr Euch also so vorstellen: Ihr sitzt 200 Stunden an einer innovativen Software mit einer genialen Idee, lasst euch brillante Lösungen einfallen und jeder Hobby-Programmierer, der in der Lage ist zu googlen, kann sich eine Anleitung besorgen und euren Sourcecode im Klartext wiederherstellen. Genau so können Konkurrenten und jemand, der eine Sicherheitslücke sucht, detaillierte Informationen über Euer Programm bekommen, um Schwachstellen auszunutzen und gute Ideen zu stehlen.

Dies ist mit C++ oder C nicht möglich, man kann zwar Reverse-Engineering betreiben, aber dadurch bekommt man nie den Sourcecode des Programms und benötigt sehr spezifische Assembler-Kenntnisse und langjährige Erfahrung.

Ein weiterer Nachteil ist, dass man mit Java und .NET Sprachen von Unternehmen und deren Willkür abhängig ist. Sun oder Microsoft könnten jederzeit ihre AGB ändern, die Weiterentwicklung einstellen und haben immer den finanziellen Aspekt im Auge. C++ wird nicht von einem Unternehmen, sondern von einem bekannten Entwickler Namens Bjarne Stroustrop entwickelt und bei Treffen von weltweiten Experten weiterentwickelt.

Ein Pluspunkt, den man früher in Java gesehen hat, war, dass Java ein bereinigtes C++ ist, da man in C++ Speicher selber verwalten musste, keine Garbage Collection hatte, mit rohen Pointern arbeiten musste und auch sonst viele Sachen deutlich anspruchsvoller waren. Mittlerweile kann man aber durch C++11 und 14 auch mit C++ sehr sauberen und gut wartbaren Code produzieren, der Java in nichts nachhängt, im Gegenteil, es wurden viele Features, die Java noch nicht unterstützt, implementiert.

Der wichtigste Vorteil von C++ (und C) ist die Maschinennähe und die damit verbundene Schnelligkeit. Hardware-Treiber , Hochleistungsprogramme und grafikintensive 3D Spiele sind mit anderen Sprachen kaum denkbar, nicht umsonst installiert Steam, die größte Spieleplattform, für jedes Spiel immer die C++ Toolkits und bietet ausschließlich eine C++ API für die Integration des Stream-Services an. Der Nachteil ist hier jedoch, dass C++ schnell umfangreicher und komplexer werden kann, oft wird vom Einstieg in das Programmieren mit C++ abgeraten, da Java und .NET Sprachen einfach schneller zu Ergebnissen führen.

Undefiniertes Verhalten bei Fehlern, Memory-Leaks, umfangreiches Exception-Handling und komplexes Compilen von Libraries sind für C++ Entwickler keine Fremdwörter, wobei C++11 mittlerweile jemandem, der mit modernen Methoden und sauber programmiert, die Probleme fast komplett abnimmt. Trotzdem besteht gerade hier die Gefahr, in C mit Klassen abzudriften, da auch viele Beispiele im Internet veraltet sind und nicht angewendet werden sollten, außer man weiß sehr genau, was man tut.

Java kann den Vorteil der Maschinennähe nicht bieten, da es Bytecode über eine virtuelle Maschine laufen lässt, was jedoch den Vorteil hat, dass man es ohne Probleme auf jeder Plattform nutzen kann, ohne Anpassungen machen zu müssen, C++ ist prinzipiell auch für alle Plattformen wie Linux, Windows, Mac u.s.w. kompatibel, jedoch muss man teilweise plattformspezifische Anpassungen definieren. Ein weiterer Faktor, der in Sachen Schnelligkeit beteiligt ist, ist der JIT Java Compiler, der in manchen Fällen schneller als C++ ist, da er sich bei jedem Start auf die CPU Art anpasst und C++ nur eine allgemeine Lösung bietet, an dieser Stelle ist die Umsetzung des C++ Programms wichtig, da die Sprache dem Entwickler viele Möglichkeiten zur Optimierung bietet, was natürlich mit mehr Komplexität und Aufwand verbunden ist. Aktuelle Benchmarks von maximal-optimierten Programmen beider Sprachen ergeben in den meisten Fällen ein 2-3 mal besseres Ergebnis bei C++.

Des Weiteren kann GUI-Programmierung ohne eine sehr gute Library wie QT bei C++ schnell zur Herkulesaufgabe werden und die Ergebnisse sind oft so ansehnlich wie ein Autounfall. Hier können Java und .NET Sprachen von einfachen, direkt in die Sprache integrierten Engines profitieren, die dem Programmierer durch „Zusammenklick-Tools“ die Visualisierung vereinfachen, mittlerweile durch QT aber auch ohne Abstriche in C++ möglich.

Bis jetzt sprechen die meisten Punkt dafür, dass man zu C++ greift, jedoch kann Java unter anderem mit App-Programmierung punkten. Wenn man nicht die native Sprachen des mobilen Betriebssystems nutzt, muss man in vielerlei Hinsicht, vor allem was das Design angeht, Abstriche machen. Da Android auf Java basiert, können Java Programmierer mit der SDK sehr leicht Apps entwickeln und testen, während die wenigen C++ Libraries, die es für Apps gibt, sich bei Android der NDK bedienen müssen und entsprechend nur begrenzt einsatzfähig sind. QT stellt auch hier eine C++ Lösung für das Problem, jedoch ist die Lizenz mit vollem Funktionsumfang ein teurer Spaß und in der Regel nur für Unternehmen mit kommerziellen Projekten von Interesse. Das iOS von Apple besitzt eine hauseigene Sprache, die der Syntax von C++ stark ähnelt.

Fazit

Abschließend kann man sagen, dass .NET Sprachen und Java vor allem durch Einfachheit und Nutzerfreundlichkeit punkten, C++ ist aufwendiger und komplexer, kann jedoch vor allem, was Geschwindigkeit, Sicherheit und Souveränität angeht, den Längeren ziehen.

Syntax-Technisch nimmt sich beides nicht allzu viel, jedoch würde ich persönlich als jemand, der alles je nach Einsatzgebiet und hauptsächlicher C++ Programmierer, behaupten, dass letzteres, wenn man die Zusammenhänge einmal verstanden hat, sehr verständlich und schön umsetzbar werden kann.

Oft gelesen:

Dein Studiengang? Wirtschaftsinformatik!
Jetzt lesen!

12 Bücher, die jedes IT-Talent gelesen haben sollte
Jetzt lesen!

Dein Weg in die IT-Branche (3)
Jetzt lesen!

IT-Talents ist ein Netzwerk nur für IT'ler. Auf unserer Plattform kannst Du Dich als registriertes Mitglied mit wenigen Klicks auf die Jobs unserer Partnerunternehmen oder auf IT-Projekte für Studierende bewerben. Darüberhinaus führen wir Wettbewerbe durch und vergeben IT-Stipendien.

Jetzt Mitglied werden.

Verwandte Artikel

Was ist SAP BPC?

12. Sep 2019 in Software

Der Unternehmenserfolg hängt nicht nur von der Nachfrage an Produkten und Dienstleistungen ab. Es ist auch das Ergebnis …

weiter

Was ist Docker?

13. Aug 2019 in IT-Talents

Docker bietet Entwicklern die Möglichkeit, dass ihre Arbeiten, wie entwickelte Softwares oder geschriebene Codes auf …

weiter

Was ist TensorFlow?

26. Jul 2019 in IT-Talents

Programmierer nutzen TensorFlow als Framework um verschiedene Modelle für das maschinelle Lernen zu entwickeln. …

weiter

Was ist SAP PM?

15. May 2019 in Software

SAP PM bietet eine umfassende Palette von Business-Softwarelösungen, damit Unternehmen ihre Geschäftsmodelle optimieren u…

weiter

Was ist SAP EWM?

14. May 2019 in Software

Die reibungslosen Prozesse im Bereich der Lagerlogistik sind von fundamentaler Bedeutung für Unternehmen. Aus diesem …

weiter

Was ist SAP PP?

13. May 2019 in Software

Der Produktionsprozess hat in den letzten Jahrzehnten einen Wandel erlebt. Die begrenzte Auswahl von Produkten und…

weiter

Was ist SAP MM?

10. May 2019 in Software

SAP ist mit dem Modul MM (Materials Management) in der Materialwirtschaft längst angekommen. Das Modul SAP MM gilt als …

weiter

Was ist ABAP?

09. May 2019 in Software

Mit ABAP hat SAP eine Programmiersprache für alle seine Anwendungen im SAP-Produktbereich entwickelt, die proprietär i…

weiter

Was ist ein Wrapper?

07. May 2019 in IT-Talents

Bist Du schon einmal über die Bezeichnung Wrapper gestolpert, weißt aber noch nicht so recht, was es damit auf sich h…

weiter

Schnell-Login für unsere Mitglieder

Tipp: Halte Dein Profil aktuell.

Lass' uns wissen, falls sich etwas Neues bei Dir ergibt.

Tipp: Vervollständige Dein Profil für noch bessere Karrierechancen.

Bist Du Schüler, Student oder bereits berufstätig? Teile uns Deinen aktuellen Status mit, damit wir Dir sinnvolle Aufgaben anbieten können.

Jetzt Status angeben

Wann stehst Du der IT-Branche zur Verfügung?

Bitte Monat und Jahr angeben.

{{ perspectiveForm.availableFrom.$error.dynamic }}

Neuer Versuch

Wo möchtest Du durchstarten?

{{ location.geolocation.name }}×
Bitte mindestens ein Ort angeben.

Als {{currentUser.status.title}} bist Du bereit für:


Lade Beschäftigungsarten

Bitte wähle den Zeitpunkt, Ort und min. eine Beschäftigungsart aus.

You have voted!
Schliessen
Vote for:
stars
Vote
You have not rated!