# Java Ja/Nein?



## Grump¥ (7. Februar 2007)

Ich habe hier ein paar Fragen zu Java:

1. Lohnt es sich Java C++ vorzuziehen?
2. Wo bekomme ich einen guten, kostenlosen Java Compiler her?
3. Wie steige ich am besten in die Sprache ein (habe bisher nur VB gemacht)?
4. Gibt es empfehlenswerte Bücher (in Papierform)?

Ich hoffe ihr könnt mir helfen.

Gruß

GrumpY


----------



## daddz (7. Februar 2007)

Die Suchfunktion wirkt hier Wunder!

greetz
daddz


----------



## Grump¥ (7. Februar 2007)

Ok. Danke für den Hinweis. Allerdings hat mir die Suchfunktion nicht so wirklich weitergeholfen.
Deshalb habe ich diesen Thread eröffnet. 
Ich hoffe ihr könnt mir helfen während ich nocheinmal versuche mich mit der Suchfunktion anzufreunden


----------



## NomadSoul (7. Februar 2007)

zu 1: keine objektive Aussage möglich
zu 2: http://java.sun.com/ 
http://eclipse.org
zu 3: Tutorials /Openbooks 
zu 4: viele empfehlen die Java Insel, finde ich persönlich nicht so toll.  Kannst aber mal in die Onlineversion reinschauen. Gibts bei GallileoPress.


----------



## Grump¥ (7. Februar 2007)

@NomadSoul: Ersteinmal Danke für deine Antwort.
Du sagst aber es sei nich objektiv zu beurteilen. Was würdest du denn vorziehen oder wo liegen die groben stärken / schwächen der beide Sprachen?


----------



## Billie (8. Februar 2007)

Also, am zur Diskussion C++/Java liest du dir vielleicht einfach mal das erste Kapitel der Javainsel durch:

http://www.galileocomputing.de/openbook/javainsel6/

Hm, die Insel finde ich recht umfangreich... Ich benutze sie hauptsächlich als Referenzbuch, da finde ich sie Klasse. Würden einige User hier zuerst in der Insel nachschlagen, hätten wir einige wiederkehrende Threads weniger - wobei ich war auch nicht besser. Ich selbst habe das JavaBuch von Guido Krüger durchgearbeitet, ist auch kostenlos:

http://www.javabuch.de/

Da gibt es auch ein gutes Kapitel, allgemein zu Java: http://sto.ntb.ch/books/javabuch/html/k100011.html

Es kommt halt grundsätzlich schwer darauf an, was du für wen programmieren willst 

lg Billie


----------



## RealHAZZARD (10. Februar 2007)

Hallo,
ich glaube es ist immer abhängig davon, was du vor hast. Und generel kann es ja nicht schlecht sein beides zu können. Je nach Projekt nehme ich dann die passende Sprache und die damit zur Verfügung stehenden Tools(ist ja auch ganz wichtig). Die allgemeinen Vor und Nachteile, kannst du überall nachlesen, aber (pro Projekt) musst du das entscheiden. Java ist es auf jeden Fall wert zu können.


----------



## NomadSoul (10. Februar 2007)

Ja, so würde ich das auch formulieren. Warum ich gegen einen Vergleich der Sprachen bin bzw der Meinung bin das ich das nicht objektiv kann, ist einfach das ich in Java mehr zuhause bin als in C/C++. Anderseits gibt es auch in C/C++ konstukte die das Leben einfacher machen. Deswegen würde das vermutlich, auch wenn wir hier im Java Bereich sind in einem Glaubenskrieg zwischen Java und C Anhängern enden. 
Schau dir einfach beide Sprachen mal an, und überleg Dir welche *Dir* besser liegt.


----------



## colblake (13. Februar 2007)

Grump¥ hat gesagt.:


> Ich habe hier ein paar Fragen zu Java:
> 
> 1. Lohnt es sich Java C++ vorzuziehen?
> 2. Wo bekomme ich einen guten, kostenlosen Java Compiler her?
> ...



Hier mal ein kurtzer Überblick ohne Wertung:

Zu C++:
- Ohne C-Kenntnisse nicht ganz einfach zu verstehen/lernen.
- Schnell (schneller als JAVA)
- Plattformunabhänig wenn man sich an Standarts (ANSI) hält. Muss aber auf jeder Plattform neu compiliert werden.
- Explizites Speichermanagement. D.h. du musst dich selber um das Speicheraufräumen kümmern. Gut fürs speicherschonendes Programmieren.
- Grafische Oberflächen sind nur mit zusätzlichen Bibliotheken möglich


Zu Java:
- Meines Erachtens, einfacher zu lernende/verstehende Sprache
- Langsamer als C++
- Vollständig Plattformunabhängig, ohne neu compilieren zu müssen
- Implizites Speichermanagement. Das Speicheraufräumen macht für dich der Garbage Collector. Du hast nur wenig Einfluss darauf.
- Grafische Oberflächen sind mit im Standard-Java-SDK enthalten.


Ich hoffe das hilft bei Deiner Entscheidungsfindung.

PS. Ich denke das JAVA aber allemal so schnell wie VB ist.  *Bitte net schlagen wenn ich mich irre.*


----------



## Thomas Darimont (13. Februar 2007)

Hallo,



> - Langsamer als C++


Hust, das hab ich jetzt mal überhört. Erwiesener Maßen schlägt Java mittlerweile C++ um längen ;-) Das Java langsamer wäre as C++ ist eine der Urbanen Mythen die noch aus den Java 1.1 Zeiten herrühren.

Gruß Tom


----------



## Billie (14. Februar 2007)

Und das mit Plattforumunabhängigkeit stimmt doch auch nicht ganz... Ich weiß, dass es möglich ist, einfache Programme in C++ so zu schreiben, dass sie auf Linux kompiliert auch laufen... Aber andere Betriebssysteme... und Außerdem, mit den einfachen Grundelementen lässt sich nie und nimmer eine plattformunabhängige GUI-Anwendung programmieren.

AFAIK.


----------



## Anime-Otaku (14. Februar 2007)

In C++ gibt es mehr Möglichkeiten auf Betriebssystem spezifische Dinge einzugehen:
z.B. DirectX, GUI Forms

Der Sourcecode von C++ kann auch platformunabhängig sein(weitesgehend), wenn man sich an gewisse Regeln hält und z.B. noch wxWidgets oder OpenGL benutzt. Und wenn man platformunabhänig programmieren will, sollte man sich am gcc Compiler halten.
Die Binary kann nicht platformunabhängig sein.

Bei Java gibt es auch ein paar OS spezifische Dinge, die man beachten muss bei der Programmierung, aber die kann man an einer Hand abzählen.

ansi C/C++ (nicht C#) ist immer noch eine der Grundlagen der Programmiersprachen, in dem heutzutage immer noch das meiste programmiert wird.

ansi C ist hauptsächlich in Linux/Unix sehr verbreitet. C++ hauptsächlich unter Windows, aber auch immer mehr unter Linux/Unix.(KDE ist komplett C++, Gnome in C).

C# (aus der .Net Platform) nimmt leider auch eine immer größere Stelle bei den Firmen ein. Vorallem bei der GUI Programmierung.


----------



## munuel (14. Februar 2007)

@Billie
Und das mit Plattforumunabhängigkeit stimmt doch auch nicht ganz... Ich weiß, dass es möglich ist, einfache Programme in C++ so zu schreiben, dass sie auf Linux *kompiliert* auch laufen.

Und wo ist da die Plattformunabhängigkeit wenn man das Programm erst noch kompilieren muss, das macht ja erst die Plattformabhängigkeit.
Man kann zwar ein C++ Programm in Ansi schreiben das heisst aber nicht das es plattformunabhängig ist.

Java ist ein sehr schöne Sprache wie ich finde, es gibt sehr viele Möglichkeiten.
Nachteilig sind mir bisher die Druckfunktion aufgefallen. Und für Echtzeitanwendungen ist die Sprache aufgrund des GrabageCollectors auch nicht geeignet. (Aber dafür gibt es auch schon Lösungen).

viele Grüsse munuel


----------



## Thomas Darimont (14. Februar 2007)

Hallo,



> Und das mit Plattforumunabhängigkeit stimmt doch auch nicht ganz... Ich weiß, dass es möglich ist, einfache Programme in C++ so zu schreiben, dass sie auf Linux *kompiliert* auch laufen.


Damit C++ Programme unter Linux laufen müssen sie aber speziell für für Linux kompiliert sein. Will man das selbe Programm dann unter Windows laufen lassen muss es auch hierfür speziell kompiliert werden. Es gibt (AFAIK) Compiler die sowohl Windows als auch Linux binaries erzeugen können, was natürlich in viel größeren Binaries resultiert, da dort dann u.U. ziemlich viel doppelt vorkommt.

Der Vorteil von Java ist hier ganz klar, das Java Programme (sofern sie keine großartigen Betriebssystemspezifischen Features verwenden) eben nicht für jede Platform neu kompiliert werden müssen. Eine einmal kompilierte Java Anwendung läuft nach dem Prinzip "Write Once Run Anywhere" automatisch auf jeder Platform für die es die entsprechende JVM Version gibt. (Okay das mit dem WORA hat natürlich Grenzen (Öfters gilt hier WODA Write Once Debug Anywhere) ;-)

Gruß Tom


----------



## Clemens (18. Februar 2007)

Servus!

Die "Von Kopf bis Fuss" Bände von O'Reilly find ich recht gut.
Auf der Seite gibts auch ein Probekapitel. 
http://www.oreilly.de/catalog/hfjava2ger/
Ich besitze das Entwurfsmusterbuch und bin von dem Buchkonzept total begeistert.

vg Clemens


----------



## colblake (21. Februar 2007)

Billie hat gesagt.:


> Und das mit Plattforumunabhängigkeit stimmt doch auch nicht ganz... Ich weiß, dass es möglich ist, einfache Programme in C++ so zu schreiben, dass sie auf Linux kompiliert auch laufen... Aber andere Betriebssysteme... und Außerdem, mit den einfachen Grundelementen lässt sich nie und nimmer eine plattformunabhängige GUI-Anwendung programmieren.
> 
> AFAIK.



genau das hab ich doch geschrieben. ?


----------



## ruto (26. Februar 2007)

Naja, dass Java mehr Leistung braucht, das kann wirklich niemand bestreiten -.- ...
C++ kenn ich mich nicht so sehr aus, aber ich denk das braucht ein wenig eingewöhnung und dann ist nicht schwerer als Java, allerdings ist Java sicher nicht schwer zu erlernen... allerdings von büchern lernen hat mir nie sehr geholfen.


Programmieren in Java ist fein, allerdings eine schöne Benutzeroberfläche zu machen ist afaik nicht sehr einfach. 
Java-Programme meide ich eigentlich wegen zusätzlichen RAM-Verbrauch

(und ich bin immer noch der Meinung C++ braucht weniger Resourcen)


----------



## Anakin77 (28. Februar 2007)

Thomas Darimont hat gesagt.:


> Hust, das hab ich jetzt mal überhört. Erwiesener Maßen schlägt Java mittlerweile C++ um längen ;-) ...



Java hat etwas aufgeholt. Mehr aber nicht

C++ ist erste Wahl wenn man zeitkritisch programmiert. Ich habe früher bei einem Ingenieurbüro gearbeitet wo zeitkritische Steuerungssysteme auf Realtime-OS programmiert wurden. Da ist C++ (und teilweise sogar inline Assembler) absolut Pflicht.

Auch wenn man hier mit Swing sich Oberflächen zusammenbastelt ist man mit C++ idR deutlich schneller. Inzwischen arbeite ich bei einer Firma, die grafische Frontends für Großrechnerapplikationen baut. Wir haben sowohl Java-Applications als Runtimes als auch eine Win32-C++ Anwendung. Java ist deutlich langsamer.

Dennoch hat es sich bei unseren Kunden durchgesetzt, da die Vorteile überwiegen und bei geeignetem Rechner der Geschwindigkeitsunterschied keine Rolle spielt.

Aber die obige Aussage ist auch heute noch unpassend. Nur eines scheint sich abzuzeichnen, Java macht immer mehr Boden gut. Aber gerade wenn es um Kernel, Treiber, oder Spezialanwendungen (Echtzeitsteuerung) geht, dann kommt man an C++ nicht vorbei.


----------

