PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Java lernen, wie? :)


Durcairion
2006-07-26, 18:47:09
Hey, wie lerne ich am besten und einfachsten Java wenn ich C/C++ schon "sehr gut" kann.

Gibt es irgend ein Buch das die Java Basics und Tricks gut und verständlich erklärt?

EDIT: Worauf es vor allem ankommt, ich muss demnächst ein Programm als Java Anwendung realisieren. Also sollte in dem Buch auch die Art und Weise wie ich eine Java Anwendung realisiere behandelt werden.

Sprich Fenster, Buttons, Textfields etc.

Monger
2006-07-26, 19:25:46
soucy[/POST]']Hey, wie lerne ich am besten und einfachsten Java wenn ich C/C++ schon "sehr gut" kann.

Am besten, indem du alles über C/C++ vergisst! :D


Gibt es irgend ein Buch das die Java Basics und Tricks gut und verständlich erklärt?

Naja, die üblichen verdächtigen halt... ich kann dir jetzt kein richtiges Einsteigerbuch empfehlen, aber ab einem gewissen Grundverständnis sind die Sun Tutorials imho sehr gut. Gerade, weil sie sehr auf die Techniken abgestimmt sind, die bereits im JDK vorhanden sind.

EDIT: Worauf es vor allem ankommt, ich muss demnächst ein Programm als Java Anwendung realisieren. Also sollte in dem Buch auch die Art und Weise wie ich eine Java Anwendung realisiere behandelt werden.

Sprich Fenster, Buttons, Textfields etc.

Das wäre dann wohl vorzugsweise "Swing".
http://java.sun.com/docs/books/tutorial/uiswing/index.html

Lies dich da mal durch, und mach die Beispiele schön mit. Wenn man das durchgeackert und verstanden hat, kann man sich sehr gut in die API einlesen, und von da aus eigentlich alles tun was man braucht.

Coda
2006-07-26, 19:52:51
Monger[/POST]']Am besten, indem du alles über C/C++ vergisst! :D
Schwachsinn. Wenn du das jetzt bei LISP gesagt hättest von mir aus, aber Java ist eher ein "C++ Lite".

Monger
2006-07-26, 20:14:50
Coda[/POST]']Schwachsinn. Wenn du das jetzt bei LISP gesagt hättest von mir aus, aber Java ist eher ein "C++ Lite".

Ich kenne deine Meinung zu dem Thema, und ich werde dir nicht die Genugtuung geben, jetzt wieder darüber eine Diskussion anzufangen! ;)

Coda
2006-07-26, 20:19:33
Wenn man C++ wirklich kann ist das so - Das hat nichts mit Meinung zu tun.

Java hat keine OO-Features oder sonstiges was C++ nicht auch hätte. Man hat im wesentlichen Multiple-Inheritance rausgeschmissen und durch Interfaces ersetzt, Templates durch wesentlich einfachere Generics, die Header, Operator-Overloading und Pointer weggelassen und dann das ganze noch mit Garbage-Collection versehen.

Was ist da jetzt etwas "ganz anderes" als C++? Ich frag mich wirklich ernsthaft was es da zu diskutieren gibt außer um sein Ego zu befrieden weil man nur das ganz-tolle-Java-dass-ja-viel-besser-ist-als-alles-andere benützt.

Ich hab noch keinen gesehen der ne Full-Blown C++-App mit allem was es so bietet geschrieben hat und dann gesagt hat "na das an Java kapier ich jetzt aber nicht".

Das man "alles von C++ verlernen soll um Java zu lernen" ist einfach nur hirnrissiger Blödsinn.

Zum Thema: Schau dir das mal an http://java.sun.com/docs/books/tutorial/. Dürftest eigentlich keine großen Probleme haben.

SavageX
2006-07-26, 20:41:43
Probier mal

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

Trap
2006-07-26, 20:45:04
Was man hauptsächlich neu lernen muss:
-Java Standardbibliothek
-Java hat keine Destruktoren, man muss Sachen, die man in C++ mit RAII macht, anders lösen (wenn es nur um Speicher geht, macht es der GC automatisch, ansonsten: Handarbeit)
-Unterschied primitive Typen <-> Klassen, autoboxing
-Object.hashCode, Object.equals (für Container in Java)
-private,public und so haben leicht andere Bedeutung
-An GC angepassten Programmierstil
-Programmierstil Exceptions in Java
-Reflections, Classloader, dynamisches Zeugs

Monger
2006-07-26, 21:28:42
Coda[/POST]']...
Ich hab noch keinen gesehen der ne Full-Blown C++-App mit allem was es so bietet geschrieben hat und dann gesagt hat "na das an Java kapier ich jetzt aber nicht".

... Argh... ich ... muss ... wiederstehen ...

Okay, also dann eben doch:
Spricht es für oder gegen eine Sprache, wenn sie leicht erlernbar ist? Meine Erfahrung ist, dass Leute die von C++ kommen, den Kopf voll mit Annahmen haben, die man für C++ tatsächlich gebraucht hat, für Java aber eher kontraproduktiv sind.

Das fängt bei so trivialen Sachen wie booleeschen Operationen an: Warum zur Hölle ist if(42) doSth(); in C++ ein gültiger Ausdruck? Eine Zahl an sich hat keinen Wahrheitswert. Warum ist eine Null falsch, und alles andere richtig?

Oder dieser Spaß mit Pass by Value und Pass by Reference. Wenn irgendjemand fragt ob Java Pass by Reference macht, dann sind das immer Leute von C++. Für jemanden der gerade frisch zu Java hinzustößt, ist die Frage herzlich uninteressant, und wird in seinem Leben vermutlich auch nie wichtiger.

Oder der Vererbungskram. Mir leuchtet bis heute nicht ein, welchen Grund es geben könnte, eine Methode nicht als virtual zu deklarieren. Warum zur Hölle sollte ich Polymorphismus unterbinden wollen, und zwar standardmäßig?

Java ist definitiv die simplere Sprache. Wenn jemand eine echte Herausforderung für harte Männer sucht, wird er mit Java natürlich nicht glücklich. Dafür ist sie einfach zu idiotensicher.

Trap
2006-07-26, 21:39:35
Monger[/POST]']
Dafür ist sie einfach zu idiotensicher.
if(true);
dosomething();

Nasenbaer
2006-07-26, 21:51:42
http://www.mindview.net/Books

Die Thinking in Java 3rd Edition gibts zum Download. Habe bisher nur Kommentare zum Buch und die Einleitung gelesen. Aber der Autor weiß worüber er schreibt. Top!!! Die C++ Bücher sind btw auch super.

Gast
2006-07-26, 21:58:37
Ziel speichern unter...


http://download.pearsoned.de/leseecke/pdf/3827263271%20XML%20mit%20Java%20in%2021Tagen.pdf?SID={52CF5959-04EF-4E47-A637-61717F4D6C1B}&TOKEN={9CD85392-17FA-449A-821B-CEE98B064D1E} (]http://download.pearsoned.de/leseecke/pdf/3827267285%20JLI%20Java%205.pdf?SID={52CF5959-04EF-4E47-A637-61717F4D6C1B}&TOKEN={D6E0913B-783A-40A1-AC05-D0C81D4EE9F9}[/url)

Edit: Darf ich die Links hier direkt setzen? Falls nicht, bitte löschen! Die PDFs findet ihr hier: [url]http://www.mut.de/main/main.asp?page=leseecke&SID={52CF5959-04EF-4E47-A637-61717F4D6C1B}&TOKEN={8A82A5CD-8550-465C-9499-C37ADE03D0AE} (Jetzt lesen--> speichern unter...)

Coda
2006-07-26, 22:10:44
Monger[/POST]']Das fängt bei so trivialen Sachen wie booleeschen Operationen an: Warum zur Hölle ist if(42) doSth(); in C++ ein gültiger Ausdruck?
Erbe von C (hat keinen boolean typ). Hat was damit zu tun dass es maschinennah ist. Kein Nachteil wenn man Java lernen will.

Monger[/POST]']Eine Zahl an sich hat keinen Wahrheitswert. Warum ist eine Null falsch, und alles andere richtig?
Auch ein Erbe von C. Kein Nachteil wenn man Java lernen will. Überhaupt ist sowas Definitonssache.

Monger[/POST]']Oder dieser Spaß mit Pass by Value und Pass by Reference. Wenn irgendjemand fragt ob Java Pass by Reference macht, dann sind das immer Leute von C++. Für jemanden der gerade frisch zu Java hinzustößt, ist die Frage herzlich uninteressant, und wird in seinem Leben vermutlich auch nie wichtiger.
Kein Nachteil wenn man Java lernen will (man wird sich wohl kurz merken können dass alles außer den eingebauten Datentypen per Referenz übergeben wird). Es ist eher vorteilhaft das zu wissen.

Monger[/POST]']Oder der Vererbungskram. Mir leuchtet bis heute nicht ein, welchen Grund es geben könnte, eine Methode nicht als virtual zu deklarieren. Warum zur Hölle sollte ich Polymorphismus unterbinden wollen, und zwar standardmäßig?
Performance.

Monger[/POST]']Java ist definitiv die simplere Sprache. Wenn jemand eine echte Herausforderung für harte Männer sucht, wird er mit Java natürlich nicht glücklich. Dafür ist sie einfach zu idiotensicher.
Alles schön und gut, deshalb wird die Aussage "Alles von C++ verlernen um Java zu kapieren" trotzdem nicht richtiger. Wenn er wirklich verstanden hat warum C++ so funktioniert wird er auch Java schnell kapieren, weil er von oben draufschaut und nicht von unten und noch alles lernen muss.

Glaubst du z.B. wirklich dass ich kein Java kann?

Nasenbaer
2006-07-26, 22:16:10
Coda[/POST]']
Glaubst du z.B. wirklich dass ich kein Java kann?
LOOL

Monger
2006-07-26, 22:51:30
Coda[/POST]']Erbe von C (hat keinen boolean typ). Hat was damit zu tun dass es maschinennah ist. Kein Nachteil wenn man Java lernen will.
...
Kein Nachteil wenn man Java lernen will (man wird sich wohl kurz merken können dass alles außer den eingebauten Datentypen per Referenz übergeben wird). Es ist eher vorteilhaft das zu wissen.
...
Performance.

Das sind eigentlich alles Punkte, die mich als Software-Entwickler nicht zu interessieren haben. Wenn ich bei einem Auto aufs Gaspedal trete, soll es gefälligst fahren. Man kann nicht von mir als Fahrer erwarten, dass ich die Benzineinspritzung per Hand steuere. Das wäre sogar kontraproduktiv, weil so kann ich mich nicht mehr aufs Fahren konzentrieren. Was die Maschine selber kann, soll sie auch selber tun. Letztendlich weiß sie nämlich selbst am besten, was gut für sie ist...
Das gilt natürlich nicht für den Autoingenieur. Aber Compilerbau bzw. Entwicklung der Runtime sind ja ohnehin ganz eigene Disziplinen...


Alles schön und gut, deshalb wird die Aussage "Alles von C++ verlernen um Java zu kapieren" trotzdem nicht richtiger. Wenn er wirklich verstanden hat warum C++ so funktioniert wird er auch Java schnell kapieren, weil er von oben draufschaut und nicht von unten und noch alles lernen muss.

Das ist wahrscheinlich richtig. Mir ist nur fast niemand übern Weg gelaufen, der C++ wirklich verstanden hätte. Es ist eine unnötig komplexe, wild gewachsene und völlig überdimensionierte Sprache. Da von oben draufzuschauen und die schlechten Features von den guten zu trennen, ist barbarisch schwer. Eigentlich sollte jeder DAU programmieren können, und nicht nur einige wenige Auserwählte.


Glaubst du z.B. wirklich dass ich kein Java kann?
Ich sags mal so: dass du es kannst, steht ausser Frage. Mit Sicherheit auch wesentlich besser als ich. Aber ich bezweifle, dass ich deinen Stil schön finden würde! ;)

Kabelsalat
2006-07-26, 22:56:31
Ein großer Unterschied zu C++ besteht eben daring, dass man in strengere Bahnen gezwungen wird - und in meinen Augen ist das auch mehr als Notwendig. Einige Ex-C++ Programmierer treibt es allerdings zur Weißglut z.B. keine Funktionen außerhalb von Klassen mehr anlegen zu können oder auf Pointer-Arithmetik verzichten zu müssen...

Allerdings darf man Zwang nicht mit etwas negativen Verwechseln. In diesem Fall sorgt er für klarer strukturierte Anwendungen deren Wartbarkeit die der meisten C++ Anwendungen (da kein Zwang) deutlich übersteigt und die außerdem ein geringeres Fehlerpotential aufweisen.

Coda
2006-07-26, 23:00:11
:|

Das mag ja alles sein, aber wie kommst du jetzt zum Schluss dass man wenn man C++ kann etwas verlernen muss um Java zu können? Das kann ich nicht nachvollziehen :D

Monger[/POST]']Es ist eine unnötig komplexe, wild gewachsene und völlig überdimensionierte Sprache.
Nö. Sie ist nur für die Mehrheit der Anwendungen keine gute Wahl. Ich verteidige auch beileibe nicht religiös C++.

Monger[/POST]']Aber ich bezweifle, dass ich deinen Stil schön finden würde! ;)
Das glaube ich kaum. Ich schreibe mit das sauberste C++ das ich kenne. Von C ist da nix zu sehen.

Und du hast recht dass die meisten lieber die Finger von C++ lassen sollten. Ganz meine Meinung. Vor allem schlimm ist dass das oft noch veraltetes Zeug mit C-Strings und alten Headern usw. gelehrt wird, was die ganze Sache noch übler macht.

Wenn ich heute ne App schreiben würde, würde ich wohl .NET/C# für die Oberfläche nehmen und C++/CLI für den Kram der in C++ sein muss (wegen Performance oder anderen Gründen). Von mir aus auch Java mit JNI ;)

Durcairion
2006-07-27, 00:15:43
Ohoh da hab ich ja was ins Rollen gebracht :rolleyes:

Ich danke auf jeden Fall schonmal für alle Infos/Links. Werde mich dann die Tage mal damit auseinandersetzen :)

Vielen Dank an alle.

Coda
2006-07-27, 00:51:14
soucy[/POST]']Ohoh da hab ich ja was ins Rollen gebracht :rolleyes:
Macht nix. Das musste mal ausdiskutiert werden :biggrin:

Monger
2006-07-27, 08:56:09
Coda[/POST]']
Das glaube ich kaum. Ich schreibe mit das sauberste C++ das ich kenne. Von C ist da nix zu sehen.

Und du hast recht dass die meisten lieber die Finger von C++ lassen sollten. Ganz meine Meinung. Vor allem schlimm ist dass das oft noch veraltetes Zeug mit C-Strings und alten Headern usw. gelehrt wird, was die ganze Sache noch übler macht.

Wenn ich heute ne App schreiben würde, würde ich wohl .NET/C# für die Oberfläche nehmen und C++/CLI für den Kram der in C++ sein muss (wegen Performance oder anderen Gründen). Von mir aus auch Java mit JNI ;)
Ack.
Ich glaub, jetzt sind wir ganz gut auf einem gemeinsamen Nenner! :D

ooAlbert
2007-02-08, 13:43:44
öhm, ich schieb des nochmal hoch :)

ich such ein buch über java was wirklich nur die grundzüge enthält also die echten basics und das für normale anwendungen im prozedualen und OOP.

die hier schon genannten kenn ich aber die sind schon viel zu speziell und ausschweifend :)

Sliver21
2007-02-09, 23:15:17
Was haltet ihr davon?

http://www.arcaneapplication.de/

Watson007
2007-02-10, 00:19:10
hey danke für den Link. Muß ich mir bezeiten mal reinziehen...