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.
JavaFX Performance Tipps und Tricks …
.. gibt es im Wiki https://wiki.openjdk.java.net/display/OpenJFX/Performance+Tips+and+Tricks.
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.
Neue kritische Java-Lücke
So schreibt http://www.heise.de/newsticker/meldung/Forscher-entdeckt-kritische-Luecke-in-aktueller-Java-Version-1920014.html. Das Problem geht auf einen Fehler in der Reflection API von Java 7 zurück: http://seclists.org/fulldisclosure/2013/Jul/172.
Weniger produktiv mit Scala?
Hier stößt Graham "Grundlefleck" Allan eine Diskussion an: http://grundlefleck.github.io/2013/06/23/using-scala-will-make-you-less-productive.html. Was meint ihr?
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.
Java-Foren kommen und gehen
Erinnert sich noch jemand an http://www.javacore.de/ — bis es dann 2011 geschlossen wurde?
nach nunmehr 9 Jahren mit javaCore.de habe ich für mich den Entschluss getroffen die Plattform nicht mehr weiter zu führen. Ich habe schlicht und ergreifend zu wenig Zeit um mich diesem Thema noch weiter zu widmen. Allen, die dabei geholfen haben javaCore.de die ganze Zeit aufrecht zu erhalten, gilt mein Dank.
Das kann passieren, wenn es eine Privatperson betreibt.
Heute ist auf der Homepage zum Glück keine bebilderte Fortpflanzungserklärung oder sonstige Werbung, sondern einfach nur:
Seit dem 01/04/2011 ist die Community geschlossen!
javaCore.de bedankt sich bei allen Moderatoren und Community-Mitgliedern für die Zusammenarbeit, das rege Interesse und ihre langjährige Treue.
Mein erster Java-Blog-Eintrag….
… ist heute nicht mehr zu rekonstruieren. Am Anfang habe http://javainsel.blogg.de/ genutzt, heute schon lange tot, aber blogg.de gibt es immer noch. Im Archiv http://web.archive.org/web/20040321205354/http://javainsel.blogg.de/ geht der erste Eintrag auf den 17.03.2004 zurück, was heißt, dass ich schon über 10 Jahre blogge. Nach blogg.de folgte blogger.com von Google und seit einigen Jahren ist es eine eigene WordPress-Installation.
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.
Q&A: Wie bekommt man Javadoc-Kommentare der Konstruktoren “vererbt”
Ein Konstruktor wird nicht wie Methoden vererbt und überschrieben. Wo also @inheritDoc für sichtbare Methoden der Oberklasse funktioniert, ist das bei Konstruktoren nicht möglich. Eine Lösung wäre, mit @see die Verbindung im Javadoc herzustellen.
Siehe auch http://stackoverflow.com/questions/13327534/details-of-difference-between-see-and-inheritdoc.
Q&A: Wie kann man zwei Datenbanken auf Unterschiede vergleichen?
Dafür gibt es verschiedene Werkzeuge, die auch erst einmal nichts mit Java zu tun haben. Wenn man das jedoch programmieren möchte, so hilft dbUnit, siehe auch http://www.dbunit.org/howto.html.
Q&A: Wird Math.sin(…) auf Maschinencode abgebildet?
Math.sin(double) ist eine native Implementierung, aber wie hier genau optimiert wird, kommt auf die JVM-Implementierung an. Trigonometrische Berechnungen sind echt ein Problem, insbesondere, weil sie alle strictfp durchgeführt werden (siehe Quellcode). Die Berechnung ist zwar native doch muss der Fließkommaprozessor mitunter den IEEE 754 Standard nachbilden, um auf ein exaktes reproduzierbares (eben strictfp) Ergebnis zu kommen auf allen Rechnern zu kommen. Eine oft diskutierte Lösung ist eine native C-Funktion zu nutzen, die direkt SIN vom Fließkommaprozessor nutzt, ohne die in IEEE 754 beschriebene Lösung zu berechnen. (http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=5005861) Das Problem ist in Java 6 angegangen worden aber nicht abschließend gelöst. Vielleicht gehen auch Sin-Tabellen, aber dass muss man dann ganz genau messen, ob sich das lohnt.
Q&A: Wie kann man die Netzwerkübertragung besser optimieren?
Bei der Client-Server-Kommunikation meines Spiels harkt es und das auch nur bei einem Spieler, was kann man tun?
Es gibt kaum Möglichkeiten zur Optimierung im Java-Umfeld. Die Netzwerkverbindung sollte auf bleiben, sodass keine (große) Zeit für den Neuaufbau anfällt. Serialisierung ist nicht so teuer, GZippen wird auch nicht viel bringen. Im lokalen Netz ist time(UDP) = time(TCP) und bei UDP muss man zu viel selbst machen, da bringt auch ein Protokollwechsel im Grunde nichts. NIO wäre mit Kanonen auf Spatzen und lohnt sich nur bei vielen Verbindungen. Eventuell bringt Nagle noch was: http://www.davidreilly.com/java/java_network_programming/#3.3.