Java vs C++

Objektorientierte Programmiersprache auf Basis einer virtuellen Maschine (https://www.oracle.com/java/)
nufan
Wiki-Moderator
Beiträge: 2558
Registriert: Sa Jul 05, 2008 3:21 pm

Java vs C++

Beitrag von nufan » Fr Sep 05, 2008 2:11 pm

Sorry, wenn ich hier komplett falsch bin. Einen allgemeinen Teil gibt es nicht. Dann hatte ich die Wahl: Java oder C++? Und Java war noch leer :)
Also nun zum Thema. Heute wurde in der Schule verkündet, dass wir noch im 2. Semester dieses Jahres mit OOP beginnen werden. Welche Sprache (also entweder C++ oder Java) ist noch offen, aber höchstwahrscheinlich Java. Wie ich so mitbekommen hab, gibt es hier verschiedene Meinungen. Die einen sagen es ist toll, die andern arbeiten nur gegen Bestechung damit... :D
Jetzt hab ich natürlich ein paar Fragen dazu:
1. Was kann Java, was C++ nicht kann, bzw. umgekehrt?
2. Stimmt es, dass wenn man C und Java kann, sehr leicht auf C++ umsteigen kann?
3. Hat Java auch irgendwas mit Java-Script zu tun? Bzw wo liegen die Unterschiede?

So das sollte mal reichen. ;)

Lg

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8859
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Java vs C++

Beitrag von Xin » Fr Sep 05, 2008 3:07 pm

dani93 hat geschrieben:Sorry, wenn ich hier komplett falsch bin. Einen allgemeinen Teil gibt es nicht. Dann hatte ich die Wahl: Java oder C++? Und Java war noch leer :)
Du bist hier falsch, aber wohl doch noch am passensten.
dani93 hat geschrieben:Also nun zum Thema. Heute wurde in der Schule verkündet, dass wir noch im 2. Semester dieses Jahres mit OOP beginnen werden. Welche Sprache (also entweder C++ oder Java) ist noch offen, aber höchstwahrscheinlich Java. Wie ich so mitbekommen hab, gibt es hier verschiedene Meinungen. Die einen sagen es ist toll, die andern arbeiten nur gegen Bestechung damit... :D
Jetzt hab ich natürlich ein paar Fragen dazu:
1. Was kann Java, was C++ nicht kann, bzw. umgekehrt?
ProJava: Java kann generics, die Syntax ist etwas sauberer als bei C++

ProC++: C++ kann Templates (die können alles, was generics können, aber erzeugen dafür mehr Code), C++ bietet die Referenzen, die Java verspricht, C++ bietet Mehrfachableitungen (damit muss man aber umgehen können), in C++ kann man Daten in anderen Daten integrieren, in Java kann man nur Zeiger auf andere Daten verwenden, C++ bietet Const-Correctness, was in Java nur halbherzig (meint unbrauchbar) implementiert ist.

Die C++ Liste kann ich bei Bedarf länger machen... Die meisten Pros für Java sind Marketing-Gags.
Java kann Reflection. Manche halten das für ein Feature, ich bin da vielleicht altmodisch, aber ich sehe die Verwendung von Reflection als starken Hinweis für ein Versagen beim Designentwurf... was nicht bedeutet, dass Reflection nur falsch angewendet werden könnte. Wenn man es richtig anwendet, weißt es jedoch ein Versagen im Design der Sprache hin.

Trotzdem ist Java keine schlechte Sprache. Für eine moderne Programmiersprache ist es jedoch viel zu einfach, bessere zu finden. Java ist C++--, wobei sich das -- auf so ziemlich jedes Feature bezieht, was C++ als besonders gut hervorhebt.
dani93 hat geschrieben:2. Stimmt es, dass wenn man C und Java kann, sehr leicht auf C++ umsteigen kann?
Definiere 'leicht'...

Multiple Ableitungen sind ein Kapitel für sich. Damit kann man sehr effektiv arbeiten, aber man kann auch ziemlichen Mist machen. In Java kann man keinen Mist machen, aber auch nicht effektiv arbeiten. (Nein, Interfaces sind dafür keine Lösung).
dani93 hat geschrieben:3. Hat Java auch irgendwas mit Java-Script zu tun? Bzw wo liegen die Unterschiede?
JavaScript heißt ECMA-Script und hat sich unter dem falschen Namen etabliert, weil es optisch geringe Ähnlichkeiten mit dem damals stark gehypten Java hatte. Beide Sprachen funktionieren auf unterschiedlichen Konzepten und die Liste der Gemeinsamkeiten habe ich schon genannt. Die Liste der Unterschiede würde sehr lang.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

nufan
Wiki-Moderator
Beiträge: 2558
Registriert: Sa Jul 05, 2008 3:21 pm

Re: Java vs C++

Beitrag von nufan » Fr Sep 05, 2008 3:18 pm

Xin hat geschrieben:Definiere 'leicht'...
So "leicht", dass, wenn man gut Java kann innerhalb weniger Wochen auch was brauchbares in C++ hinbekommt. Ich weiß nicht warum, aber mir wäre C++ lieber gewesen...
Von C auf C++ ist es ja nicht wirklich eine Umstellung, sondern man hat einfach mehr Möglichkeiten. Bei Java ist ja auch der Syntax anders.
Nun würde ich noch gerne wissen, "was" man mit Java progammieren kann. Gibt es irgendwelche bekannten Spiele, Anwendungen, ... die ihr mir nennen könnt?
Was "kann" (ist natürlich relativ) man nach 3 Jahren Java programmieren? Ich meine, irgendwann stößt man an die Grenze einer Sprache, wo es nix neues mehr gibt. Es wird natürlich länger als 3 Jahre dauern.

Lg

Benutzeravatar
fat-lobyte
Beiträge: 1398
Registriert: Sa Jul 05, 2008 12:23 pm
Wohnort: ::1
Kontaktdaten:

Re: Java vs C++

Beitrag von fat-lobyte » Fr Sep 05, 2008 4:42 pm

dani93 hat geschrieben:2. Stimmt es, dass wenn man C und Java kann, sehr leicht auf C++ umsteigen kann?
Ich würde eher sagen, wer C++ kann, der braucht das Java- tutorial nur einmal lesen. Umgekehrt denke ich nicht, dass es funktioniert, denn in C++ sind einige dinge doch ganz anders als in Java. Kompiliert ist halt nicht gleich Vorkompiliert/Interpretiert
dani93 hat geschrieben:Nun würde ich noch gerne wissen, "was" man mit Java progammieren kann. Gibt es irgendwelche bekannten Spiele, Anwendungen, ... die ihr mir nennen könnt?
Was "kann" (ist natürlich relativ) man nach 3 Jahren Java programmieren? Ich meine, irgendwann stößt man an die Grenze einer Sprache, wo es nix neues mehr gibt. Es wird natürlich länger als 3 Jahre dauern.

Lg
Ich sags gleich: mit C++ kann man ALLES programmieren, von Treibern bis hin zu 3D spielen, Webanwendungen und so weiter.
Java wird hingegen gern in der Softwareindustrie verwendet, für Desktopanwendungen, und sehr gerne für Webapplikationen jeglicher Art. Auch im Embedded Bereich, mit Java ME (Micro Edition), fürs Handy. (Du kennst doch sicher die ganzen Handyspiele).
C++ ist doch eher auf Effizienz ausgelegt, Java laut meinem Betreuer "auf übersichtlichkeit" ^^
Eine kleine Anmerkung aber: das Projekt an dem ich Arbeite (auf der Arbeit :) ) ist eine Plattform zur Analyse von Massenspektrometerdaten, geschrieben in Java. Der Rechenintensive Teil wird auf einen Applikationsserver ausgelagert (da läuft ein JBoss Server). Da laufen Messdaten von mehreren Hundert Megabytes drüber. Dementsprechend ist der Applikationsserver ein Tier mit 4kern Prozessor, und mehr als 20 GB Arbeitsspeicher. Ich werde das gefühl nicht los, dass solche Anwendungen in C++ geschrieben werden sollten ^^
Haters gonna hate, potatoes gonna potate.

Metamorph
Beiträge: 123
Registriert: Sa Jul 05, 2008 12:27 pm

Re: Java vs C++

Beitrag von Metamorph » Fr Sep 05, 2008 4:55 pm

Xin hat geschrieben:Java ist C++--
:lol: ROFL
Ein inkrementales Dekrement!?^^
Dani93 hat geschrieben:1. Was kann Java, was C++ nicht kann, bzw. umgekehrt?
Ein in Java kompiliertes Programm kann (laut Definition) auf verschiedenen Betriebssystemen ausgeführt werden, ohne es zu verändern und neu zu kompilieren. Allerdings muss das Betriebssystem einen Bytecodeinterpreter (JRE) haben.
Außerdem kann man Webapplikationen (Applets) in Java "einfacher" schreiben, als in C++.
Handysoftware wird fast nur noch in Java geschrieben.
Angeblich sollen schon die Steuergeräte von Autos in Java programmiert werden.

Mit C++ ist es möglich, auf die Hardware eines Betriebssystems zuzugreifen. Man kann dazu u.A. Inline-Assemblies einsetzen.
Außerdem lassen sich damit bestimmte, für das jeweilige Betriebssystem angepasste Routinen/Programme schreiben.
Mit C++ hat der Programmierer mehr Möglichkeiten als mit Java. Das kann sowohl Vorteile als auch Nachteile haben. Der Programmierer muss mehr Details beachten, kann aber dadurch den Code verbessern.
Dafür kann man in C++ das reinste Chaos programmieren.
Das geht mit Java auch, ist aber ein bischhen schwieriger.

Vor der Dummheit eines Programmierers ist keine Sprache geschützt. ^^
Dani93 hat geschrieben:2. Stimmt es, dass wenn man C und Java kann, sehr leicht auf C++ umsteigen kann?
Schwer zu sagen. Der Umstieg von C nach C++ ist nicht gerade einfach. Vor allem wegen der Objekte.
Dabei ist die Syntax von C++ fast komplett abwärtskompatibel zu C.
Die Javasyntax ist zwar ähnlich wie die C++-Syntax, hat aber trotzdem einige Unterschiede.
Dani93 hat geschrieben:3. Hat Java auch irgendwas mit Java-Script zu tun? Bzw wo liegen die Unterschiede?
Schau mal hier:
http://www.java-forum.org/de/viewtopic.php?t=6099

P.S.:
So langsam gefällt mir Java immer weniger. Die Syntax ist seltsam und die Sprache ist sehr beschränkt.

nufan
Wiki-Moderator
Beiträge: 2558
Registriert: Sa Jul 05, 2008 3:21 pm

Re: Java vs C++

Beitrag von nufan » Fr Sep 05, 2008 5:01 pm

Metamorph hat geschrieben:Ein in Java kompiliertes Programm kann (laut Definition) auf verschiedenen Betriebssystemen ausgeführt werden, ohne es zu verändern und neu zu kompilieren. Allerdings muss das Betriebssystem einen Bytecodeinterpreter (JRE) haben.
Heißt das nicht "Java Runitme Edition" oder so ähnlich?
Metamorph hat geschrieben:P.S.:
So langsam gefällt mir Java immer weniger. Die Syntax ist seltsam und die Sprache ist sehr beschränkt.
Danke für die Motivation :D

Kann man auch Spiele in Java programmieren? Für Computer meine ich, nicht Handy.

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8859
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Java vs C++

Beitrag von Xin » Fr Sep 05, 2008 5:03 pm

dani93 hat geschrieben:
Xin hat geschrieben:Definiere 'leicht'...
So "leicht", dass, wenn man gut Java kann innerhalb weniger Wochen auch was brauchbares in C++ hinbekommt. Ich weiß nicht warum, aber mir wäre C++ lieber gewesen...
Das Konzept der Mehrfachvererbung ist nicht ganz so einfach, dafür alleine vergehen schon Wochen. Hier kommen Designfragen auf, die bei anderen beliebten Sprachen keine Rolle spielen, weil die Sprachen das Konzept nicht unterstützen. Das auszuprobieren und da ausreichend auf die Schnauze zu fallen, das kann schon einige Wochen/Monate dauern.

Fakt ist, dass Du in Java ausschließlich mit Pointern (und es ist vollkommen egal, wie oft Dein Lehrer Referenz sagt, es ist und bleibt ein Pointer) arbeitest, Du kannst Strukturen nicht in Strukturen einbetten, es gibt den Punkt-Operator in Java nicht. (Der .-Operator in Java entspricht dem -> in C/C++).
Du lernst nicht mit Referenzen oder Const-Correctness zu arbeiten, was in Sachen Codequalität eine massive Verschlechterung ist.

Sowas muss ins Blut übergehen, daher ist es schade, dass ihr Java nehmt.
Das grundsätzliche Programmieren ist ähnlich dem von C++. Hier unterscheiden sich Java und C++ in Detailfragen, zum Beispiel der Verwendung von OOP.
dani93 hat geschrieben:Von C auf C++ ist es ja nicht wirklich eine Umstellung, sondern man hat einfach mehr Möglichkeiten.
Man wird in C++ besser geführt. Möglichkeiten erhält man kaum zusätzlich. Viele alte C++ Compiler übersetzen zuerst nach C.
Allerdings hat man bereits in C mehr Möglichkeiten als in Java.
dani93 hat geschrieben:Nun würde ich noch gerne wissen, "was" man mit Java progammieren kann. Gibt es irgendwelche bekannten Spiele, Anwendungen, ... die ihr mir nennen könnt?
OpenOffice ist in Java geschrieben, wenn man überlegt wo's herkommt, verwundert das nicht. Java eignet sich für zeitkritische Anwendungen - wozu Spiele häufig auch gehören - nicht. Niemand würde einen Ego-Shooter in Java schreiben. Java ist beliebt bei Anwendungsprogrammieren und dafür ist die Sprache auch gemacht. Ich muss aber ehrlich sagen, dass ich nur wenige Java-Anwendungen kenne.
dani93 hat geschrieben:Was "kann" (ist natürlich relativ) man nach 3 Jahren Java programmieren? Ich meine, irgendwann stößt man an die Grenze einer Sprache, wo es nix neues mehr gibt. Es wird natürlich länger als 3 Jahre dauern.
Man kann sehr viel in Java programmieren.
Vor drei Monaten arbeitete ich bei einem Suchmaschinenanbieter, der die komplette Steuerung und die Weboberfläche der Suchmaschine in Java geschrieben hat. Der Kern, also die eigentliche Suche lief aber wieder in C++.
Java hat eine saubere Syntax als C++, aber nutzt man die Möglichkeiten von C++ aus, ist die Sprachführung in C++ besser. Es ist leichter in Java loszulegen, als in C++. Erreicht man die Grenzen von Java, ist es schwerer sie zu überwinden, als in C++.
Und die Grenze in Java ist erreicht, wenn Du z.B. die derzeitige Prozessorauslastung wissen möchtest.

Java wurde vor 8, 9 Jahren sehr gehypt. Die Sprache selbst hat nur einen wirklichen Vorteil: Sie liefert ein Framework mit. Aus dem Hype sind viele Programme entstanden, was Java auf Jahre hinweg zu einer wichtigen Sprache machen wird, man wird schließlich nicht einfach alles neu schreiben.

Nochmal: Java ist keine schlechte Sprache. Sie reicht für einen Einsteiger, sie reicht für einen Fortgeschrittenen, aber ihre Möglichkeiten enden weit vor C++.
Metamorph hat geschrieben:Ein in Java kompiliertes Programm kann (laut Definition) auf verschiedenen Betriebssystemen ausgeführt werden, ohne es zu verändern und neu zu kompilieren. Allerdings muss das Betriebssystem einen Bytecodeinterpreter (JRE) haben.
Dabei sollte nicht unerwähnt bleiben, dass eine Definition ein Text auf einem Papier ist, für den sich Computer nicht zwangsweise interessieren...
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

nufan
Wiki-Moderator
Beiträge: 2558
Registriert: Sa Jul 05, 2008 3:21 pm

Re: Java vs C++

Beitrag von nufan » Fr Sep 05, 2008 5:11 pm

Xin hat geschrieben:Fakt ist, dass Du in Java ausschließlich mit Pointern (und es ist vollkommen egal, wie oft Dein Lehrer Referenz sagt, es ist und bleibt ein Pointer) arbeitest, Du kannst Strukturen nicht in Strukturen einbetten, es gibt den Punkt-Operator in Java nicht. (Der .-Operator in Java entspricht dem -> in C/C++).
Du lernst nicht mit Referenzen oder Const-Correctness zu arbeiten, was in Sachen Codequalität eine massive Verschlechterung ist.
Wäre das in C so, hätte ich mir heute schon ein Thema in C/C++ erspart. ;)
Xin hat geschrieben:Sowas muss ins Blut übergehen, daher ist es schade, dass ihr Java nehmt.
Es ist noch nicht fix, aber zu 90%, da einer unser Programmierlehrer Java-Fan ist. Wir werden natürlich auch ein bisschen C++ objektorientiert programmieren, aber halt nicht so viel wie Java. :cry:
Xin hat geschrieben:OpenOffice ist in Java geschrieben, wenn man überlegt wo's herkommt, verwundert das nicht.
Sun? :)

AnGaiNoR
Beiträge: 212
Registriert: Sa Jul 19, 2008 7:07 pm
Wohnort: Dresden

Re: Java vs C++

Beitrag von AnGaiNoR » Fr Sep 05, 2008 5:49 pm

Ich denke, das vor allem Anfänger mit Java gut arbeiten können (Lego MindStorms !!). Wenn man sich aber eine Weile mit Java beschäftigt, dann erkennt man einige Ungereimtheiten, z.B. bietet das AWT keine Standarddialoge, wo es doch betriebssystemkonformer sein soll als Swing.
Was mich bei Java auch stört ist die schlechte Erweiterbarkeit. Man kann sich zwar zum Beispiel eine 3D-Grafik-Engine aus dem Interne laden und in das Programm einbinden, dann geht aber die Plattformunabhängigkeit verloren, die ja eigentlich das ist, was am zweitwichtigsten für Java ist.

Wenn man wirklich Programmieren möchte, dann sollte man C++ lernen, aber für einfache und fortgeschrittene Aufgaben reicht Java vollkommen aus.
Physics is like sex: sure, it may give some practical result, but that's not why we do it.
(Richard P. Feynman)

nufan
Wiki-Moderator
Beiträge: 2558
Registriert: Sa Jul 05, 2008 3:21 pm

Re: Java vs C++

Beitrag von nufan » Fr Sep 05, 2008 7:20 pm

Wir haben ja auch schon mal über ein C++ Tutorial gesprochen...
Natürlich sollten wir mal das erste fertig machen ;)

Lg

Antworten