Schade eigentlich, dass das Buch sich nicht zu den einzelnen Implementierungen wie z.B. GNU Classpath äußert. Ansonsten setzt den Buch da an, wo normale Bücher aufhören. Das ist seine Leistung, und natürlich der flotte Stil.
> Schade eigentlich, dass das Buch sich nicht zu den einzelnen Implementierungen wie z.B. GNU Classpath äußert.
Naja, Java ist ein Standard; d.h. die SAche sollte mit allen (zertifizierten) Implementierungen laufen Das JDK von SUN ist nach wie vor default und wenn du das JDK von IBM nimmst oder das von JRockit, sollte alles genauso laufen wie (irgendwann mal) mit CLASSPATH bzw. Harmony.
Ansonsten empfehle ich (seit Jahren schon) jedem Java-Lernenden "Java Examples in a Nutshell" von O'Reilly. Ist zwar nicht kostenlos und vermittelt Version 1.4 aber beides halte ich für Lernende eher für einen Vorteil. Und die Beispiele bringens echt und vermitteln sehr guten Java-Coding-Stil.
Werd mal ein bissl in der neuen Auflage stöbern. Gibt es eigentlich eine "Java Bibel", also etwas wie das "Die C++ Programmiersprache" von Bjarne Stroustrup nur für Java?
Also mit der Insel erhälst du schon so etwas wie eine Java - Bibel....
es gibt kaum bessere (allgemein gehaltene) deutschsprachige Java-Bücher. Alternativen gäbe es in Form von Handbuch der Java Programmierung Kopf bis fuß kram diverse Kochbücher....
Die dürften auch wohl taugen, aber mit der Insel bin ich bis jetzt immer sehr gut klargekommen^^
Als englisches Buch scheint "Java in a Nutshell" gut zu sein, wurde mir zumindest öfters empfohlen.
Das Python-Buch ist auch sehr empfehlenswert. Auch deswegen, weil mal eine andere GUI als TKinter besprochen wird Ich hoffe es gibt bald eine Neuauflage begleitend zu Python 3.0 und einem Kapitel Plasmodienprogrammierung für KDE 4
Von Anonymer Feigling am Mi, 21. Januar 2009 um 00:21 #
Nein, wenn du ins Forum schaust dann siehst du, dass das Buch ziemlich schlecht ist. Die Vermutung liegt nahe, dass das Leute geschrieben haben, die von Python nicht wirklich viel ahnung haben. Da empfehle ich lieber das Python Praxisbuch, da kenne ich den Autor und er kennt sich wohl mehr aus.
Von Anonymer Feigling am Mi, 21. Januar 2009 um 00:23 #
Sorry, mit Forum meinte ich eigentlich das Python-Forum, aber generell ist die Meinung der Fortgeschritteneren Python-Programmierer die, dass das Buch den Aufwand nicht wert ist (die 800 Seiten müssen ja schließlich sowohl vom Leser gelesen werden als auch in Zukunft von den Autoren aktuell gehalten werden).
Sehe ich genauso. Kinderkram! Allein schon die Aufmachung, bei "Entwurfsmuster - Von Kopf bis Fuß" so Mädel abzubilden. Ich dachte zuerst, das wäre ein Buch übers Nähen.
Wenn es nicht nur deutsche Bücher sein dürfen, kann ich Effective Java von Joshua Bloch sehr empfehlen, schon die erste Auflage war ein Klassiker, inzwischen gibt es endlich die überarbeitete 2. Auflage. Da findet sich auch für erfahrene Java-Entwickler noch die ein- oder andere Überraschung drinnen. Gibt es zwar auch in Deutsch, ist aber schlecht übersetzt.
Auch das Buch "Java Concurrency in Practice" ist wirklich excellent, allerdings thematisch spezialisiert.
Langsam bist v.a. du, weil du offenbar nicht immer nicht mitbekommen hast, dass sich das schon vor Ewigkeiten geändert hat (z.B. http://www.kano.net/javabench/). Manno, denk mal da drüber nach: Mittlerweile werden schon Spiele und haufenweise embedded Geräte mit Java entwickelt!
Wichtiger als die Programmiersprache sind für die Geschwindigkeit aber bei allen Programmen (die mehr als 1000 Zeilen Code beinhalten) die Fähigkeiten des Entwicklers. (Den Link zu der Studie hab ich leider grad nicht zur Hand.) Außerdem die Möglichkeit, den Überblick über seinen Code zu behalten. Und da ist Java (dank Typisierung und der genialen IDEs) IMHO ungeschlagen.
Java ist bei embedded systems eher unbedeutend, obwohl es ursprünglich dafür gedacht war. Die Anbindung an die Hardware muss ohnehin wieder maschinennah mit Assembler oder C gemacht werden. Direkte Java-Befehle zum Beschreiben spezifischer Register gibt es ja nicht. http://www.mikrocontroller.net/topic/112988
Projekte wie http://www.jcontrol.org/index_de.php http://www.harbaum.org/till/nanovm/index.shtml http://elmicro.com/de/javelin.html sind eher Nischenanwendungen. Für industrielle Anwendung ist Plattformunabhängigkeit meist nebensächlich.
Die Handyspiele sind spielkram und man könnte das Ganze genauso in C realisieren. Man braucht sowieso für jedes Handy ein Spezialprogramm um die Anwendungen auf das Handy zu bekommen. Dieses Spezialprogramm könnte dann auch einen passenden C-Compiler beinhalten.
Java ist ein wichtiger Spieler bei Multimedia; für sicherheitskritische Anwendungen ist es weniger geeignet. Man müsste die Speicherverwaltung selbst in die Hand nehmen können, um Echtzeitkriterien erfüllen zu können. Es wird aber an "Real Time Java" gearbeitet.
Eine zweite Sache, die ich anmerken möchte, ist, wie konservativ man in diesem Bereich ist. C ist eine der übelsten Programmiersprachen, aber es wird aus Gewohnheit verwendet. Vieles lehnt sich aus mir nicht verständlichen Gründen an C an. C-Programme sind nur noch geringfügig schneller (die Compiler-Technik hat enorme Fortschritte gemacht), dafür aber ist C-Code allgemein weniger wiederverwendbar und sicherheitskritisch. Ich würde in sicherheitskritischen Bereichen Ada, Haskell und OCaml einsetzen.
Vergleiche die Kompilate diverser Sprachen. Am Ende ist alles Maschinencode. Wenn ich mir ansehe was bei manchen Hochsprachen für Knete rauskommt, wundert es mich kein Stück das viele Entwickler C nehmen.
Java ist nur langsam beim Start. Dass Java-Programme, obwohl in einer virtuellen Maschine ausgeführt wird, trotzdem schneller sind als viele C-Programme, liegt daran, dass die JVM eine idealisierte Maschine ist und der Compiler leichteres Spiel bei der Optimierung hat. Java holt sogar viel zu wenig raus: Eine streng typisierte funktionale Sprache (z. B. OCaml, Haskell) dürfte noch schneller auf der JVM laufen als Java.
Übrigens mag ich den Begriff "interpretierte Sprache" im Falle von Java nicht. Es gibt auch keinen qualitativen Unterschied zwischen Bytecode und Maschinencode. Eine virtuelle Maschine ist und bleibt eine Maschine, außerdem gibt es auch Mikroprozessoren, die Java direkt ausführen. Interpretierte Sprachen sind m. E. Programmiersprachen, die direkt, also ohne Kompiliervorgang, weder implizit noch explizit, interpretiert werden. Und da fallen mir nur QBasic, Bash und Co ein.
Von Anonymer Feigling am Mi, 21. Januar 2009 um 00:28 #
> Eine streng typisierte funktionale Sprache (z. B. OCaml, Haskell) dürfte noch schneller auf der JVM laufen als Java.
Wohl nicht, da die JVM-Bytecode Operationen genau für Java gedacht sind und für diese Sprache am besten passen. Haskell bräuchte unter Umständen andere Operationen, die dann irgendwie in JVM-Opcodes umgesetzt werden müssten.
Nativer Maschienencode wird auch interpretiert. Gerade im Fall von x86 wird der Code von der CPU vor der Ausführung noch rekompiliert in einen RISC-ähnlicheren Code der dann durch das Microprogramm in der CPU interpretiert wird.
Für embedded (also Maschinensteuerung in der Industrie) hat Java zu große Hardwareanforderungen und die Echtzeitfähigkeiten sind einfach zu schlecht. Desweiteren gibt es für viele Plattformen keine gute und performante VM mitsamt Anbindung an die Hardwarefunktionen.
entschuldige bitte
javainsel8/galileocomputing_javainsel8.zip
Außerdem scheine ich zu blöd zu sein den Download-Link zu finden ...
Naja, Java ist ein Standard; d.h. die SAche sollte mit allen (zertifizierten) Implementierungen laufen
Das JDK von SUN ist nach wie vor default und wenn du das JDK von IBM nimmst oder das von JRockit, sollte alles genauso laufen wie (irgendwann mal) mit CLASSPATH bzw. Harmony.
Ansonsten empfehle ich (seit Jahren schon) jedem Java-Lernenden "Java Examples in a Nutshell" von O'Reilly. Ist zwar nicht kostenlos und vermittelt Version 1.4 aber beides halte ich für Lernende eher für einen Vorteil. Und die Beispiele bringens echt und vermitteln sehr guten Java-Coding-Stil.
Gibt es eigentlich eine "Java Bibel", also etwas wie das "Die C++ Programmiersprache" von Bjarne Stroustrup nur für Java?
es gibt kaum bessere (allgemein gehaltene) deutschsprachige Java-Bücher.
Alternativen gäbe es in Form von
Handbuch der Java Programmierung
Kopf bis fuß kram
diverse Kochbücher....
Die dürften auch wohl taugen, aber mit der Insel bin ich bis jetzt immer sehr gut klargekommen^^
Als englisches Buch scheint "Java in a Nutshell" gut zu sein, wurde mir zumindest öfters empfohlen.
Gruß
Rlf
Das ist doch Kinderkram. Zur Unterhaltung ganz gut, aber zu teuer.
Auch das Buch "Java Concurrency in Practice" ist wirklich excellent, allerdings thematisch spezialisiert.
Gruß
Fox9
Was soll man sonst für plattform-unabhängige Programmierung nehmen? (Wer jetzt .NET/Mono sagt, kriegt die MS-Patente um die Ohren gehauen.).
Wichtiger als die Programmiersprache sind für die Geschwindigkeit aber bei allen Programmen (die mehr als 1000 Zeilen Code beinhalten) die Fähigkeiten des Entwicklers. (Den Link zu der Studie hab ich leider grad nicht zur Hand.)
Außerdem die Möglichkeit, den Überblick über seinen Code zu behalten. Und da ist Java (dank Typisierung und der genialen IDEs) IMHO ungeschlagen.
http://www.mikrocontroller.net/topic/112988
Projekte wie
http://www.jcontrol.org/index_de.php
http://www.harbaum.org/till/nanovm/index.shtml
http://elmicro.com/de/javelin.html
sind eher Nischenanwendungen.
Für industrielle Anwendung ist Plattformunabhängigkeit meist nebensächlich.
Die Handyspiele sind spielkram und man könnte das Ganze genauso in C realisieren. Man braucht sowieso für jedes Handy ein Spezialprogramm um die Anwendungen auf das Handy zu bekommen. Dieses Spezialprogramm könnte dann auch einen passenden C-Compiler beinhalten.
Eine zweite Sache, die ich anmerken möchte, ist, wie konservativ man in diesem Bereich ist. C ist eine der übelsten Programmiersprachen, aber es wird aus Gewohnheit verwendet. Vieles lehnt sich aus mir nicht verständlichen Gründen an C an. C-Programme sind nur noch geringfügig schneller (die Compiler-Technik hat enorme Fortschritte gemacht), dafür aber ist C-Code allgemein weniger wiederverwendbar und sicherheitskritisch. Ich würde in sicherheitskritischen Bereichen Ada, Haskell und OCaml einsetzen.
Vergleiche die Kompilate diverser Sprachen. Am Ende ist alles Maschinencode. Wenn ich mir ansehe was bei manchen Hochsprachen für Knete rauskommt, wundert es mich kein Stück das viele Entwickler C nehmen.
Übrigens mag ich den Begriff "interpretierte Sprache" im Falle von Java nicht. Es gibt auch keinen qualitativen Unterschied zwischen Bytecode und Maschinencode. Eine virtuelle Maschine ist und bleibt eine Maschine, außerdem gibt es auch Mikroprozessoren, die Java direkt ausführen. Interpretierte Sprachen sind m. E. Programmiersprachen, die direkt, also ohne Kompiliervorgang, weder implizit noch explizit, interpretiert werden. Und da fallen mir nur QBasic, Bash und Co ein.
Wohl nicht, da die JVM-Bytecode Operationen genau für Java gedacht sind und für diese Sprache am besten passen. Haskell bräuchte unter Umständen andere Operationen, die dann irgendwie in JVM-Opcodes umgesetzt werden müssten.
Nativer Maschienencode wird auch interpretiert. Gerade im Fall von x86 wird der Code von der CPU vor der Ausführung noch rekompiliert in einen RISC-ähnlicheren Code der dann durch das Microprogramm in der CPU interpretiert wird.