FAQ zum Java -Kurs
Inhaltsverzeichnis
– Aber was wären Beispiele für nützliche Java-Programme?
– Wie kann man nach dem Ende des Kurses weiterlernen?
– Warum wird Eclipse im Kurs nicht unterrichtet?
– Was muß man lernen, bevor man Android -Programmierung erlernen kann?
– Wie kann man eine EXE-Datei aus einem Java-Programm erzeugen?
Allgemeine FAQ zu Programmierkursen
- >722564 FAQ zu Programmierkursen
FAQ „Aber was wären Beispiele für nützliche Java-Programme?“
Die meisten Android-Apps sind ganz oder teilweise in Java geschrieben, genauso sind viele Web-Server teilweise mit Java programmiert (was man von außen nicht immer erkennen kann), das bekannte Spiel Minecraft wurde ursprünglich in Java programmiert.
(Siehe auch: Abschnitte „Einsatzgebiete“ und „Was kann man mit Java machen?“ in „>720301 Charakterisierung von Java “)
FAQ „Wie kann man nach dem Ende des Kurses weiterlernen?“
(Siehe auch: >724350 Notiz Weiterlernen nach dem Ende eines Programmierkurses)
(Siehe auch: >723647 A.1.2. Weiterlernen von Java )
Um richtig gut programmieren zu lernen, muß man noch viel mehr Zeit investieren, als die Dauer des Kurses beträgt! Deswegen ist diese Frage sehr richtig und wichtig!
Möglichkeiten des Weiterlernens
Weiterlernen nach dem Grundkurs
Nach dem Ende des Grundkurses kann man auch einen Aufbaukurs besuchen. Dieser sollte möglichst beim selben Dozenten stattfinden, da die Kurse oft aufeinander abgestimmt sind.
Besuch desselben Kurses
Wenn man die Grundlagen der Programmiersprache nach dem Ende eines Grundkurses noch nicht sicher beherrscht, kann man denselben Grundkurs ein zweites oder drittes Mal besuchen, da Vieles durch die Wiederholung besser verständlich wird!
Eine andere Möglichkeit besteht darin, noch mal bei einem anderen Dozenten in einen Grundkurs zu gehen, weil man dann den Stoff aus einer anderen Perspektive hören kann.
Lesen des Skriptes
Man kann auch das Skript zu dem Kurs noch einmal durchlesen und dabei einige Übungsaufgaben bearbeiten.
Besuch eines längeren Kurses
Die Stefan-Ram-Kurse sind an einigen Volkshochschulen länger. Beispielsweise in Tempelhof-Schöneberg und im Sommer in Reinickendorf.
Wegen der Komplexität des Themas und der großen Stoffülle entsprechen längere Kurse dem Thema besser und erlauben es auch eher, schwierigere Punkte langsamer anzugehen und umfangreicher zu üben. Deswegen kann es empfehlenswert sein, nachdem man erst einmal in einem kurzen Kurs einen Überblick erhalten hat, noch einmal denselben Kurs in seiner Langfassung in Tempelhof-Schöneberg und im Sommer in Reinickendorf zu besuchen.
Besuch eines Android -Programmierkurses
In Android -Programmierkursen werden Java -Kenntnisse schon vorausgesetzt. Deswegen sind sie eine gute Möglichkeit, um zu sehen, wie Java angewendet wird. Allerdings können die dafür nötigen Vorkentnisse nur in einem längeren Java -Aufbaukurs richtig vermittelt werden. Deswegen empfiehlt es sicht, zuerst einen langen Java-Aufbaukurs in Tempelhof-Schöneberg oder im Sommer in Reinickendorf zu besuchen und dann in einen Android -Kurs zu gehen oder sich die nötigen Vorkenntnisse anders anzueignen.
Am Anfang des Skriptes zum Android -Programmierkurs von Stefan Ram werden die benötigten Vorkenntnisse ausführlicher beschrieben.
Lesen von Büchern
Natürlich gibt es auch die Möglichkeit, ein Buch zu lesen. Obwohl es viele deutschsprachige Lehrbücher gibt, die sich nach ihrem eigenen Bekunden an Anfänger richten, kann leider keines davon besonders empfohlen werden. Ein paar Hinweise zum Thema der Literatur finden sich auch noch auf der folgenden Seite
>720782 Deutschsprachige Quellen zur Programmiersprache Java
Übungsaufgaben
Nach Ende des Kurses kann man auch die Übungsaufgaben aus dem Kurs wiederholen.
Falls jemand lieber Übungsaufgaben mit Lösungen bearbeiten möchte, kommt vielleicht das Buch „Java 8 Das Übungsbuch: Über 200 Aufgaben mit vollständigen Lösungen“ von Elisabeth Jung in Frage.
Programmierprojekte
Vielleicht haben Kursteilnehmer auch Ideen für eigene Programmierprojekte, die sie nach Ende des Kurses durchführen wollen. Dies ist eine ausgezeichnete Möglichkeit zum Lernen. Falls eine bestimmte Idee noch zu schwierig ist, sollte man sie so lange vereinfachen, bis man sie in einer einfache Basis-Version programmieren kann.
- Projektideen für Programmierer ohne eigene Ideen
http://mindprod.com/project/beginner.html
http://mindprod.com/project/projects.html
Lesen von Programmen
Für viele Java -Programme und Bibliotheken, große und kleine, ist der Quellcode legal und kostenlos verfügbar und darf teilweise sogar für eigene Projekte verwendet werden. Von Oracle gibt es beispielsweise den Quelltext der Standardbibliothek und verschiedener Beispielprogramme,
Man kann auch viel über Programmieren lernen, indem man den Quelltext von Programmen, die vollständig ausgebildete Programmierer geschrieben haben, liest und zu verstehen versucht. Danach kann man versuchen, einige Änderungen vorzunehmen. Ideal wäre es, ein Programm, das man selber auch benutzt, auf diese Weise an eigenen Bedürfnisse anzupassen.
Arbeitsgruppen
Vielleicht wollen Sie sich mit anderen Kursteilnehmern zu einer von Ihnen organisierten Arbeitsgruppe treffen, und regelmäßige Treffen mit Vorträgen und gemeinsamen Übungen veranstalten?
User-Groups
Es gibt auch eine Java User-Group für Berlin und Brandenburg, die gelegentlich Veranstaltungen durchführt, beispielsweise mit Vorträgen zu Java -Themen. Mehr Informationen dazu gibt diese User-Group direkt auf ihrer Webseite.
Die Newsgroup »de.comp.lang.java«
In der Newsgroup »de.comp.lang.java« werden Themen und Fragen mit Java -Bezug diskutiert. Leider seit langem mit immer weniger Teilnehmern! Heute (Stand 2018) ist die Newsgroup fast inaktiv, aber vielleicht wollen Sie zu ihrer Wiederbelebung beitragen? Noch kann man damit rechnen, daß eine dort gestellte Frage von jemandem beantwortet wird.
Java-Foren
Auch in Web-Foren kann man Fragen zu Java stellen oder beantworten. Hier gibt es allerdings keines, das besonders empfehlenswert ist.
“Java Mock Exams ”
Die (englischsprachigen) “Java Mock Exams ” oder “Java Mock Tests ” sind oft kostenlose On-Line Prüfungen mit Übungsfragen zu Java.
Lesen, Bauen und Anpassen
Für viele Java -Programme ist der Quelltext verfügbar (open-source Software). Man kann Vieles lernen, indem man versucht, den Quelltext zu lesen und zu verstehen, das Programm zu übersetzen und dann an eigene Vorstellungen anzupassen.
Programmiernachrichten
Man kann Nachrichten zum Thema Programmieren im Web lesen, beispielsweise bei reddit.
Themen
Eine Java -Programmierer sollte sich im Laufe der Zeit mit folgenden Themengebieten beschäftigt haben:
- Alle Arten von Operatoren, Anweisungen und Datentypen der Programmiersprache
- Die wichtigsten Klassen der Java-Standardbibliothek
- Die wichtigsten Bibliotheken außerhalb der Standardbibliothek
- Algorithmen und Datenstrukturen
- Entwurfsmuster
- Refaktoren
- Das zu Entwicklung verwendete Betriebssystem (beispielsweise die Kommandosprache seines Betriebssystems und die wichtigsten Kommandos)
- Die Organisation von Software-Projekten (beispielsweise Agile Softwareentwicklung)
- Die wichtigsten Entwicklungs -Werkzeuge (Bausysteme (wie Ant, Maven und so weiter), Versionskontrollsystem (wie Git ))
- allgemeine Werkzeuge wie vim, grep, sort, uniq, sed, awk
- Eventuell: Morphologische und syntaktische Analyse von Texten, Compilerbau, Grundlagen der Information (Komplexitätstheorie, formale Sprachen)
Themen und Bücher für Fortgeschrittene
Diese Bücher für Fortgeschritte sind oft auf englisch geschrieben und verwenden für Beispiele nicht immer Java als Programmiersprache.
- Java (auch für Anfänger geeignet)
- Java How to Program, Deitel and Deitel
- Java-Bücher von Cay Horstmann
- Stilregeln für Java
- Effective Java von Joshua Bloch
- Algorithmen
- The Algorithm Design Manual von Steve S. Skiena
- Entwurfsmuster
- Design Patterns von Erich Gamma, et al.
- Stilregeln
- Clean Code von Robert C. Martin
- Refaktorieren
- Refactoring von Fowler
- Aufbau von Programmen mit objektorientierten Programmiersprachen
- Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design and Iterative Development (3rd Edition), Craig Larman
- Software-Engineering
- keine Empfehlung spezieller Bücher, sondern nur Beispiele:
- Software Engineering: A Practitioner's Approach, Roger S. Pressman (2005)
- Beginning Software Engineering, Rod Stephens (2015)
- Die Windows-Kommandozeile
- keine Empfehlung spezieller Bücher, sondern nur Beispiele:
- The Windows Command Line Beginner's Guide, Jonathan Moeller ( 2011 )
- Learn Batch File Programming, John Albert (2014)
- Die klassischen Werkzeuge (gibt es meist auch für Windows, obwohl unten „Linux“ steht)
- keine Empfehlung spezieller Bücher, sondern nur Beispiele:
- Unix and Linux: Visual QuickStart Guide, Eric J. Ray, Deborah S. Ray (2014)
- Data Science at the Command Line, Jeroen Janssens (2014)
- Programmieren mit Kontrakten
- A Touch Of Class von Bertrand Meyer
- Durchführung von Software-Projekten
- keine Empfehlung spezieller Bücher, sondern nur Beispiele:
- The Mythical Man-Month
- Managing and Leading Software Projects, Richard E. Fairley (2011)
- Agile Project Management with Scrum, Ken Schwaber (2004)
- The Rational Unified Process: An Introduction, Philippe Kruchten (2004)
- Numerik
- What Every Computer Scientist Should Know About. Floating-Point Arithmetic. David Goldberg.
- Compilerbau
- Compilerbau von Niklaus Wirth
- Compilers: Principles, Techniques and Tools von Alfred V. Aho, Ravi Sethi, and Jeffrey D. Ullman (detailliert und mit viel Theorie und deswegen anspruchsvoll)
- Informatik
- Introduction to Formal Languages, Automata Theory and Computation von Jeffrey D. Ullman, John E. Hopcroft
Hinweise zum Lernen
In dem folgenden Text gibt Peter Norvig, der Leiter der Forschungsabteilung von Google, Tips zum Erlernen des Programmierens.
- Lernen Sie zehn Jahre lang programmieren!
- https://www.purl.org/stefan_ram/html/21-tage
Hier sind noch einige Gedanken von Stefan Ram zum Lernen zu finden:
- >721639 Lernen lernen
FAQ „Warum wird Eclipse im Kurs nicht unterrichtet?“
Teilnehmer, die Eclipse bereits kennen, können Eclipse gerne auch im Kurs verwenden! Es ist nur so, daß der Dozent Eclipse nicht für alle Kursteilnehmer erklärt. (Allerdings kann Eclipse auf Wunsch in der Fragestunden gegen Ende des Kurses behandelt werden.)
Eclipse wurde in der Kursankündigung nicht genannt, so daß von Anfang an, nicht der falsche Eindruck erweckt wurde, daß Eclipse im Kurs behandelt werden würde.
Im Kurs werden zum Übersetzen und Starten von Programmen Kommandozeilenprogramme, wie »javac«, behandelt, die zum offiziellen (d.h. vom Inhaber der Rechte am Namen „Java “ stammenden) JDK gehören und die (laut Berichten von Eclipse -Benutzer in Newsgroups) auch ein Eclipse -Benutzer früher oder später benötigt, und deren Handhabung daher ohnehin erlernt werden muß.
Das Thema des Kurses ist die Programmiersprache Java. Für Java gibt es verschiedenen Entwicklungsumgebungen, wie beispielsweise Eclipse. Eclipse ist aber kein Teil der Programmiersprache Java. Daher gehört Eclipse nicht zum Thema des Kurses.
Neben Eclipse gibt es verschiedene andere Entwicklungsumgebungen (Netbeans, Idea, BlueJ, Java Oriented Editing [JOE], jGrasp und viele andere), und es wäre auch etwas willkürlich und parteiergreifend, wenn im Kurs nun gerade eine davon (Eclipse ) herausgegriffen werden würde.
Die Vorstellung von Eclipse würde Zeit kosten, welche dann für die Behandlung des Kursthemas Java fehlt. (Insbesondere, wenn gelegentlich Störungen oder Probleme beim Umgang mit der Entwicklungsumgebung auftauchen, kann deren Behebung zeitaufwendig werden.)
Da Eclipse einen eigenen Java -Compiler an Stelle des Standard-Compilers »javac« verwendet, findet man auch nicht immer gleich alle aktuellen Fähigkeiten einer neuen Version von »javac« auch in Eclipse wieder, und manchmal gibt es Probleme durch Abweichungen des Eclipse -Compilers vom Standard. (Anfang 2014 unterstützte Eclipse in der Version Kepler [im Gegensatz zu Netbeans ] beispielsweise noch nicht das JDK 8.)
Wer nur mit den Hilfestellungen von Eclipse programmieren gelernt hat, ist vielleicht nicht in der Lage, auch ohne diese ein Programm zu schreiben, wenn dies manchmal benötigt wird (was beispielsweise in Einstellungsprüfungen oder anderen Prüfungen manchmal verlangt wird).
Aus fachdidaktischer Sicht könnte die Verwendung von Eclipse, dazu führen, daß die Themen Eclipse und Java mental zu sehr miteinander vermischt werden, und es für einen Lernenden nicht immer erkennbar ist, wo nun Java aufhört und wo Eclipse anfängt. Es wäre denkbar, daß ein Anfänger, der nur mit Eclipse lernt, irrtümlich annimmt, daß Eclipse für bestimmte Dinge notwendig sei, während diese tatsächlich auch ohne Eclipse möglich sind.
Anfänger könnten sich zu sehr auf die Eingabehilfen von Eclipse verlassen ohne zu lernen, den Quellcode selber richtig zu schreiben; sie könnten sich zu sehr auf die farbliche Markierung von Quelltext verlassen ohne zu lernen, den Quellcode selber genau zu lesen.
Eclipse zeigt manchmal Meldungen an, die sich an fortgeschrittene Java -Programmierer richten aber für Anfänger unverständlich sind und nur eine Ablenkung darstellen. Die automatischen Hinweise und Korrekturen könnten die Aufmerksamkeit beim Eingeben von Quellcode zu früh auf unwichtige technische Details lenken und dazu führen, daß ein Programmierer dabei von seinen eigentlichen Plan abgelenkt wird. (Teilweise zeigt die Entwicklungsumgebung auch manchmal Stellen als falsch an, die gar nicht falsch sind.)
Nachdem Eclipse jahrelang immer populärer wurde, nahm die Popularität von Eclipse 2013 erstmals ab, verschiedene Unternehmen (Google, IBM ) ziehen sich langsam von Eclipse zurück (http://heise.de/-2039088). Unter diesen Umständen darf man gespannt sein, wie lange Eclipse noch mit den Aktualisierungen anderer Software (wie dem JDK ) Schritt halten können wird.
Ein Software-Entwickler sollte ohnehin in der Lage sein, sich die Bedienung eines GUI -Programms, wie Eclipse, bei Bedarf selber anzueignen, verlangt die Programmierung neuer Software doch ohnehin größere geistige Ressourcen als die Nutzung vorhandener Software. (Es wäre ein wenig würdelos, wenn ein Programmierdozent erklären würde: „Um die Datei zu speichern, wählen Sie im Dateimenü den Eintrag ‚Speichern unter …‘ an.“, „Um ein neues Projekt anzulegen, wählen Sie ‚Neu‘ und dann ,Projekt‘ an.“, denn solche Dinge sind recht offensichtlich. Der Dozent sollte im Kurs eher das erklären, was man sich nicht so leicht selber aneignen kann, nämlich die Programmiersprache Java.)
Verschiedene sehr kompetente Programmierer bevorzugen Editoren gegenüber IDE s (“We haven't met a single great hacker that relied on an IDE ” — http://giraffesoft.ca/blog/2009/03/10/4-core-competencies-of-great-hackers.html), es gibt auch Berichte über einzelne Programmierer, die große Programme zunächst wochenlang mit einem Stift in eine Kladde schrieben und dann schließlich eintippten! – Auch wenn nur ein Minderheit dies für größere Programme bevorzugt, so sollte ein guter Java -Programmierer in der Lage sein, ein Java -Programm einigermaßen korrekt auf Papier zu schreiben. Bei einigen Einstellungsprüfungen für Programmierer in Unternehmen aus den USA wird erwartet, daß der Programmierer ein Programm schreibt, und zwar auf eine Tafel oder ein Blatt Papier, also ohne Hilfe durch eine IDE.
FAQ „Was muß man lernen, bevor man Android -Programmierung erlernen kann?“
Siehe Anfang/FAQ des Android-Kurses!
FAQ „Wie kann man eine EXE-Datei aus einem Java-Programm erzeugen?“
Dies ist mit verschiedenen Programmen möglich, wie beispielsweise
- Excelsior Jet ,
- JExePack,
- Jar2Exe,
- NativeJ oder
- Jlauch.
(Vorteile der AOT compilation mit Jet: Bei der Ausführung eines Programms wird die Zeit für die JIT-Kompilierung eingespart und die Dekompilierung wird erschwert.)
Kostenlos sind (teilweise veraltet, also nicht mehr gepflegt/aktualisiert)
- GCJ (GNU Compiler for Java, Stand: JDK 1.4, ruht seit 2008)
- Java Packager,
- Packr,
- conyay,
- AppBundler Ant Task,
- JSmooth,
- jstart32,
- exeJ,
- Java Launcher und
- Janel.
Teilweise wird das Programm wirklich in Maschinensprache übersetzt, teilweise wird es mit einem JRE zusammen in eine EXE-Datei gepackt.
Der »javafxpackager« aus dem JDK kann eine installierbare EXE-Datei erstellen, wenn Inno Setup 5 vorhanden ist (oder eine MSI-Datei mit WiX 3.0 ).
Mit der SFX -Funktion kann das kostenlose Programm 7zip ein beliebiges Verzeichnis in eine EXE-Datei wandeln (hier könnte man ein Verzeichnis nehmen, welches ein Java -Programm zusammen mit einem JRE enthält.).
Allerdings hätte das Ausliefern einer EXE-Datei verschiedene Nachteile
- sie läuft nur noch unter Windows
- falls sie ein JDK enthält, müßte das JDK ständig aktualisiert werden, oder es könnte eine Sicherheitslücke darstellen.
Ein ausführbares JAR-Archiv kann unter Windows auf dieselbe Weise wie eine EXE-Datei gestartet werden (falls ein JRE installiert wurde), aber weist keinen der Nachteile einer EXE-Datei auf, weswegen die Erstellung eines ausführbaren JAR-Archivs oft zu bevorzugen ist.
Bei einer EXE-Datei ist es schwieriger, auf den Quellcode zu schließen, und sie könnte unter Umständen schneller starten und laufen als ein Java-Programm, das auf einer JVM läuft. Nicht alle Java -Programme können zu einer EXE-Datei kompiliert werden.
- Aussprachehinweis
- jet ʤɛt
- Quellenhinweise
www.excelsior-usa.com/articles/best-jar-to-exe-conversion-tools-free-commercial.html
www.excelsior-usa.com/articles/java-to-exe.html
www.excelsior-usa.com/blog/excelsior-jet/java-app-as-a-single-exe/
www.excelsiorjet.com/kb/35/howto-create-a-single-exe-from-your-java-application