Nettes Projekt: http://vll.java.net/. Kurzanleitung auch unter http://today.java.net/article/2011/09/14/visuallanglab-grammar-without-tears.
Buchkritik: Die Java-Syntax, Michael Kofler
Der Autor ist jedem ein Begriff, der in der Unix-Welt einmal unterwegs war: Wo die Java-Insel das Standard-Werk für Java ist, ist Koflers Linux-Buch (jetzt auch bei Galileo) DAS Buch für das Open-Source Betriebssystem. Nicht vielen bekannt ist, dass Kofler neben Linux auch noch weitere Bücher verfasst hat, insbesondere als eBook. Eines davon handelt über Java und trägt den kurzen Titel „Die Java-Syntax“. Hier kommen Assoziationen zur Java Language Specification auf, doch mit einer formalen Beschreibung der Sprache hat dieses eBook überhaupt nichts gemeinsam — es ist eher eine allgemeine Einführung in Java und einigen Bibliotheken, wie Date/Time, Threading und Collection. Die Beschreibung ist dabei nicht sonderlich tief und einige Begrifflichkeiten sind doch sehr ungewöhnlich, die Collection-Klassen heißen etwas Aufzählungsklassen, der Autor schreibt oft „Klasse“, wenn er „Typ“ meint, die Sprachst ist im Allgemeinen etwas ungenau und könnte präziser sein, teils irreführend wie bei „Normalerweise können Methoden nur genutzt werden, wenn vorher ein Objekt der betreffenden Klasse erzeugt wird“ klingt, als ob statische Methoden un-normal seien und abartig. Einige Aussagen zeugen von nicht sehr tiefem Java-Verständnis, etwas bei den Überschreibungsregeln der throws
-Klausel, wenn Kofler über die Implementierung der Schnittstelle AutoCloseable
schreibt „Sie müssen nur darauf achten, dass Sie Ihre close-Methode mit throws Exception deklarieren“. Oder wenn der Autor den Minus-Strich im Paketnamen wählt (de.meine-firma
) und ein ganzes Beispiel mit Pakten, und Jar-Archiven darum aufbaut, was aber nie compilieren würde, da „-“ in Bezeichnern überhaupt nicht erlaubt ist. Zusammenfassend lässt sich festhalten, dass Kofler eine Einführung in Java gelungen ist, die aber weit hinter seinen anderen Büchern zurückbleibt. Im dem Segment der Einführungsbücher wird „Die Java-Syntax“ es daher schwer haben. Eine Kurzvorstellung vom Autor gibt es in einem Video, eine Leseprobe auf seiner Webseite. Ein Buch-Update ist geplant.
Die Java-Syntax; Variablen Operatoren Klassen Exceptions Multi-Threading Generics und Collections Lambda-Ausdrücke. Für Java 6, 7 und 8
Michael Kofler. Verlag ebooks.kofler. ISBN 978-3-902643-09-4. 216 Seiten
ControlsFX 8.0.2 Developer Preview 1
http://fxexperience.com/2013/08/announcing-controlsfx-8-0-2-developer-preview-1/. Chic die Tabellenkomponente.
Video über Google Collection (also Guava)
Sehenswert diese kleine Einführung: GTUG – Using the Google Collections Library for Java (1 of 2):
Doppio: JVM, Compiler und Disassembler in JavaScript
Extrem cooles Projekt: https://github.com/int3/doppio. Der Blog-Eintrag http://badassjs.com/post/32812527381/doppio-a-java-virtual-machine-compiler-and gibt einen Überblick, auch die Git-Seite.
Was gibt’s Neues in JAX-RS 2.0?
http://java.dzone.com/articles/whats-new-jax-rs-20. Im 2. Band der Insel gibt es ein Kapitel über JAX-RS, das natürlich angepasst wird. Der alte Blog-Eintrag bleibt auf dem Niveau von JAX-RS 1 und ist nicht falsch, denn nur die Client-API ist etwas anders, nicht allerdings die Annotationen auf der Serverseite.
Bei Parleys gibt es immer tolle Vorträge zu sehen
Parleys (http://www.parleys.com/) hat sich im Laufe der Jahre zur Top-Adresse von Vorträgen entwickelt. Man nimmt Vorträge von Konferenzen auf und vermarktet sie. Einige Vorträge sind frei, manche kommen nach einiger Zeit dazu. Auch für Java-Entwickler ist viel dabei, etwa
- http://www.parleys.com/play/51afc0e7e4b01033a7e4b6e9/chapter0/about: Devoxx UK 2013, Project Nashorn in Java 8
- http://www.parleys.com/play/516bc12fe4b07b9cc6de32b2/chapter0/about: Jfokus 2013, Invokedynamic in 45 Minute
- http://www.parleys.com/search/java. >1300 Präsentationen, 1000 Stunden Java-Content
Erster Release Candidate von Tomcat 8
http://www.theserverside.com/discussions/thread.tss?thread_id=76803:
It aligns Tomcat with the Java EE 7 specification, including Java Servlet 3.1, JavaServer Pages (JSP) 2.3, and Java Unified Expression Language (EL) 3.0 as well as introducing support for WebSocket 1.0.
Neue JavaFX-Komponenten: Von JIDE und dem ControlsFX-Projekt
Java 8 ganz einfach im Web-Browser ausprobieren
http://tryjava8-t20.rhcloud.com/ bietet ein simples Textfeld und einen Button “Run Code”. Dann übersetzt ein Dienst in der Wolke den Code mit einem aktuellen Java 8-Compiler und gibt den “Programm Output” (Compilerfehler oder Resultat der Ausführung) in der rechten Spalte aus.
Java ME (ehemals J2ME) in JavaScript nachbildet, Work in Progress
Das ist das Vorhaben von https://github.com/szatkus/js2me. Ein paar Kritikpunkte zeigt die Diskussion auf REDDIT auf: http://www.reddit.com/r/programming/comments/1hg5t9/j2me_for_firefox_os_j2me_in_javascript/. Später soll es als Web-App für Firefox OS laufen.
OpenJFX nutzt Gradle zum Bauen
Statt Ant nutzt OpenJFX nun Gradle (http://www.gradle.org/), ein Ritterschlag für das alternative Build-Tool? Dazu auch das Wiki: https://wiki.openjdk.java.net/display/OpenJFX/Building+OpenJFX. In einem Video gibt Richard Bair ein paar Hintergründe: https://www.youtube.com/watch?v=aGOFxvGkKqM.
Artikel über JMS 2 Updates und JMS 2.0 Folien
Im Text http://www.oracle.com/technetwork/articles/java/jms20-1947669.html. Oder eine Folien-Zusammenfassung:
Neues Release von JFreeChart 1.0.15
http://www.jroller.com/dgilbert/entry/jfreechart_1_0_151. Zu den Updates:
This release contains support for non-visible series in XYBarRenderer, minor gridlines in PolarPlot, new legend item ordering options, chart editor enhancements, updates to StandardDialScale, localisation files for Japanese, refactored parameter checks and a fix for a minor security flaw in the DisplayChart class, detected and reported by OSI Security: http://www.osisecurity.com.au/advisories/jfreechart-path-disclosure.
Wie sich GWT im Laufe der Jahre veränderte …
… beschreibt http://googlewebtoolkit.blogspot.de/2013/07/gwt-news.html. So liegt es heute unter http://www.gwtproject.org, es ist weniger von Google gelenkt (echt?), die Roadmap gibt es im Video https://developers.google.com/events/io/sessions/327833110. So soll GWT 2.6 in Q3 2013 erscheinen und GWT 3.0 auf der Google I/O 2014 vorgestellt werden.
Java-App für iOS mit JavaFX 8 und RoboVM, ausführliche Anleitung
Schaut euch die Dokumentation unter http://blog.software4java.com/?p=41 an. Auf der JavaOne gibt es auch sogar einen Track für iOS-Entwicklung, wie der Autor unter http://blog.software4java.com/?p=97 schreibt.
Nebenläufigkeit und Parallelität
Computersysteme lösen Probleme in der echten Welt, sodass wir zur Einstieg auch in der Realwelt bleiben, um uns dem Umfeld der nebenläufigen Programmierung zu nähern.
Gehen wir durch die Welt bemerken wir viele Dinge, die gleichzeitig passieren: Die Sonne scheint, auf der Straße fahren Mofas, Autos werden gelenkt, das Radio spielt, Menschen sprechen, einige essen, Hunde tollen auf der Wiese. Nicht nur passieren diese Dinge gleichzeitig, sondern es gibt mannigfaltige Abhängigkeiten, wie Wartesituation: an der roten Ampel warten einige Autos, während bei der grünen Ampel Menschen über die Strasse gehen – beim Signalwechsel dreht sich das Spiel um.
Wenn viele Dinge gleichzeitig passieren, nennen wir ein interagierendes System nebenläufig. Dabei gibt es Vorgänge, die echt parallel ausgeführt werden können, und bei machen Dingen sieht es so aus, als ob sie parallel passieren, aber in Wirklichkeit passiert es nur schnell hintereinander. Was wir dann wahrnehmen, ist eine Quasiparallelität. Wenn zwei Menschen etwa gleichzeitig essen, ist das parallel, aber wenn jemand isst und atmet, so sieht dass zwar von außen gleichzeitig aus, ist es aber nicht, sondern schlucken und atmen ist sequenziell[1]. Auf Software übertragen: die gleichzeitige Abarbeitung von Programmen und Nutzung von Ressourcen nebenläufig ist; es ist eine technische Realisierung der Maschine (also Hardware), ob diese Nebenläufigkeit durch parallele Abarbeitung – etwa durch mehre Prozessoren oder Kerne – auch wirklich umgesetzt wird.
Nebenläufige Programme werden in Java durch Threads realisiert und im Idealfall findet die Abarbeitung auch parallel statt, wenn die Maschine mehrere Prozessoren oder Kerne hat. Ein Programm, was nebenläufig realisiert ist, kann durch zwei Prozessoren bzw. Kerne in der parallelen Abarbeitung in der Zeit halbiert werden, muss es aber nicht, es ist immer noch Sache des Betriebssystems, wie es die Threads ausführt.
[1] lassen wir Kleinkinder einmal außen vor
Q&A: Wie lässt sich mit JavaMail die Anzahl Mail-Anhänge ermitteln?
Eine gesonderte Methode gibt es nicht, aber man kann die Mail-Teile ja ablaufen und dann zählen:
int nrOfAttachements = 0; Multipart mp = (Multipart) message.getContent(); for (int i=0, n=multipart.getCount(); i<n; i++) { Part part = multipart.getBodyPart(i)); String disposition = part.getDisposition(); if ((disposition != null) && ((disposition.equals(Part.ATTACHMENT) || (disposition.equals(Part.INLINE))) nrOfAttachements++; }
Q&A: Wie kann man die Laufzeit von Programmteilen messen und Statistiken einsammeln?
Hierzu gibt es viele Möglichkeiten, eine davon mit JAMon: http://jamonapi.sourceforge.net/.
Q&A: Gibt es kostenlosen Webspace mit Java-Server?
Mit PHP als Sprache gibt es einiges, im Java-Umfeld sieht es da mau aus. Eine Lösung ist die Google App Engine. Sie ist frei (für normale Quotas), es laufen normale Web-Apps drauf (Jetty), es gibt einen NoSQL-Datastore, und noch mehr. Deployment ist auch sehr einfach, über die IDE.