http://download.java.net/jdk7/docs/api/. JavaScript Suche fehlt immer noch… Scala’s Hilfe ist fein.
Google App Engine Update 1.5.1
Weitere Infos unter http://code.google.com/p/googleappengine/wiki/SdkForJavaReleaseNotes.
JComboxBox mit Separator nutzen
Standardmäßig unterstützt die JList und auch JComboBox keine Separatoren, doch die Unterteilung in Segmente ist in der Praxis sehr nützlich. Microsoft Word und PowerPoint benutzt sie zum Beispiel, um die zuletzt vom Benutzer ausgewählten Zeichensätze prominent oben in der Liste zu haben (Excel dagegen nicht).
Wir wollen diese Möglichkeit nachbilden, und dabei noch einiges über Modelle und Renderer lernen.
Open Symphony Projekt hat sich erledigt. Was sagt uns das?
Open Symphony versammelte Open-Source Projekte unter sich, wie die Apache Group, The Codehaus oder Eclipse Foundation. Nun haben sich die erfolgreichen Open Symphony-Projekte im Laufe der Zeit verselbständigt und Open Symphony selbst machte dicht:
Die verbleibenden Projekte sind auf neuen Domänen
- WebWork and XWork. http://struts.apache.org/
- Quartz Scheduler. http://www.quartz-scheduler.org/
- SiteMesh. http://www.sitemesh.org/
- Compass. http://www.compass-project.org/
Und andere sind auf java.net gewandert:
Die Frage leitet sich ab, ob Organisationen überhaupt noch nötig sind, da Projekt-Hosting so einfach geworden ist. Ich würde sagen, dass man diesen Trend nicht unbedingt ablesen kann. Denn WebWork ist zu Struts 2 geworden, und das ist ganz klar Apache und eben nicht solo, und Jetty geht den Weg von codehaus zu Eclipse. Was man vielleicht sehen kann, das gewissen Organisationen an Gewicht gewinnen und andere verlieren.
Besonders Eclipse hat viele Projekte angezogen. Das reine Sammeln ist aber an sich nicht Gutes, denn es sagt nicht aus, dass die Projekte eine hohe Priorität genießen und nicht mehr sterben – viele Projekte sind schon im Eclipse-System gestorben, TPTP ist ein Beispiel. Eclipse zeigt einen ganz neuen Weg im Release-Management auf, etwas, was bisher in der Software-Welt noch fehlt: Gewisse Zeitpunkte auszumachen und Software-Releases zu synchronisieren, sodass sie die Teilprojekte zusammen harmonisieren. Das ist gewinnbringend für OS-Software aber für kommerzielle Software. Nicht umsonst sind daher Zeitpunkte für Releases so wichtig. Sun war nicht für die Einhaltung dieser Zeiten bekannt, Oracle schon. Mit der Einführung der Java 7-Kandidaten kann jeder seine Software auf Java 7 vorbereiten und wenn Java 7 dann im Juli erscheint können auch alle anderen Produkte prinzipiell zeitgleich auf den Markt gehen.
UI-Design: Anschriften/Namen können Sonderzeichen enthalten
Ja, es kann passieren das Anschriften ein Sonderzeichen wie & enthalten. Die sollten nicht dazu führen, dass eine Web-Maske nicht bestätigt werden kann.
Für mein Guam-Visum (Teil der USA). Negativbeispiel 1:
Man muss zahlen und es folgt schon gleich Negativbeispiel 2:
Warten auf Eclipse 3.7.1 für Java 7
Es ist schön zu sehen, das Compiler/AST im Eclipse-Repository schon Java 7 können: http://wiki.eclipse.org/JDT_Core/Java7. Das einzige was jetzt noch fehlt ist Formatter, Indexer, Code-Assistenten, also eher UI-Stuff.
Im Moment ist Eclipse 3.6 (Hellios) aktuell und Eclipse 3.7 (Indigo) wird laut Foundation kommen: “Our target is to complete 3.7 in late June 2011”. Das heißt also, dass Eclipse 3.7 vor Java 7 fertig sein wird. (Ja, wäre schön gewesen, wenn sich Oracle und IBM/Eclipse abgesprochen hätten. Und die Versionsnummer hätten auch so gut gepasst.) Die Java 7 Funktionalität wird in Version 3.7.1 nachgeliefert.
Startausgaben vom embedded Jetty unterdrücken
Log-Ausgaben von Jetty sind speziell”. Wie http://docs.codehaus.org/display/JETTY/Debugging schreibt:
Jetty logging looks for a slf4j jar on the classpath. If found, slf4j is used to control logging otherwise stderr is used.
Dinge einfach nach System.err zu schreiben ist nicht so tolle und Jetty nutzt kein JUL. Daher bekommt man, wenn man slf4j nicht im Pfad hat, eine lästige Ausgabe wie diese:
2011-05-27 18:18:57.898:INFO::jetty-7.4.2.v20110526
2011-05-27 18:18:59.658:INFO::started o.e.j.w.WebAppContext{/,file:/C:/Users/Christian/Documents/My%20Dropbox/Development/TraidaWorkspace/Traida/war/},C:\Users\Christian\Documents\My Dropbox\Development\TraidaWorkspace\Traida\war
2011-05-27 18:19:00.053:INFO::Started SelectChannelConnector@0.0.0.0:8080 STARTING
Was tun, wenn man auf slf4j verzichten möchte? Es bleibt einem nichts anders übrig, als beim Starten temporär den System.err-Strom auf’s Nirwana zu lenken:
PrintStream err = System.err;
System.setErr( new PrintStream( new OutputStream() { public void write( int b ) { } } ) );
// Jetty hier starten
System.setErr( err );
Dann ist Ruhe im Karton.
JavaFX 2.0 als Beta verfügbar
Update der Project Coin/JSR 334 Dokumentation
Java 7 gut in der Zeit
Nach dem Beitrag von http://mail.openjdk.java.net/pipermail/jdk7-dev/2011-May/002124.html und dem Kalender http://openjdk.java.net/projects/jdk7/ kann man sagen, dass das JDK-Team gut in der Zeit liegt und Java 7 vermutlich punktgenau am 28.7.2011 landen wird.
2010/12/23 Feature Complete (M11)
2011/02/17 Developer Preview (M12)
2011/04/12 Rampdown start: P1-P3 bugs only
2011/04/28 API/interface changes: Showstoppers only
2011/05/11 All targeted bugs addressed
2011/05/18 Bug fixes: Showstoppers only
2011/06/02 Last scheduled build (M13)
Final test cycle starts
2011/07/28 General Availability
Allerdings führt http://mail.openjdk.java.net/pipermail/jdk7-dev/2011-May/002124.html auch auf:
- The Gervill sound synthesizer was integrated early in JDK 7 but due to a clerical error never made it onto the feature list; and - The "Enhanced JMX Agent and MBeans" feature has been reduced to "Enhanced MBeans"; the JMX Agent work was not completed in time.
Scala 2.9.0 ist fertig
weitere Details unter http://www.scala-lang.org/node/9483
GWT Eclipse Plugin 2.3 ist nun final
Ankündigung im GWT-Blog http://googlewebtoolkit.blogspot.com/2011/05/gwt-and-google-plugin-for-eclipse-23.html.
Oracle lenkt im Streit mit Hudson/Jenkins ein
Groovy 1.8 ist fertig
Die News unter http://docs.codehaus.org/display/GROOVY/Groovy+1.8+release+notes. Interessante Änderungen sind:
- Bessere Performance bei nicht-gemischten Typen (Ganzzahlen bleiben intern int)
- In DSLs waren Punkte, Klammern beim Zugriff auf Eigenschaften immer etwas hinderlich. In der neuen Version kann man auf sie verzichten. So steht “turn left then right” etwa für “turn(left).then(right)”. Das nennt sich Command-Chain
- Die Parallel-Bibliothek http://gpars.codehaus.org/ ist standardmäßig mit dabei, Tutorial unter http://gpars.org/guide/index.html.
- Closures als Argumente für Annotationen. Das macht etwa @Invariant({ number >= 0 }) möglich.
- Neuer JSON-Builder wie XML-Builder
- Neue AST-Transformationen für injizierte Logger, automatische toString()/equals()/hashCode()/clone()-Methode, Prüfung auf Thread-Blockierer, …
- Diamanten-Operator wie aus Java 7
NetBeans 7 verfügbar
Ankündigung: http://www.oracle.com/us/corporate/press/363625
Guice 3 mit @PostConstruct = Mycila
Von Spring habe ich mich schon länger verabschiedet und bin für meine clientseitigen Programme auf Guice gewechselt. Bis auf die Tatsache das es keinen automatischen Autoscan gibt, hat mir nichts wirklich gefehlt. Guice unterstützt auch standardmäßig nicht die Common Annotions, aber bei Guice 2 hatte ich http://code.google.com/p/guiceyfruit/ im Einsatz, da das jedoch auf intern Datenstrukturen von Guice 2 zurückgriff, konnte ich nicht auf die neue Version Guice 3 migrieren. Also schmiss ich GuiceFruit raus und suchte eine Alternative. Die gibt es mit dem Projekt http://code.google.com/p/mycila/:
http://code.mycila.com/wiki/MycilaGuice
Google Guice contributions:
- ServiceLoader plugin (enables injection into loaded services)
- JSR250 supports improved from GuicyFruit
- Custom Injector with more useful methods which consider the whole Injector hierarchy
- CachedScope to cache your binding for a specific duration
Neben Mycila Guice gibt es auch noch andere tolle Dinge:
- Mycila Event
- Mycila JMX
Guava 0.9
Guava erreicht die nächst Stufe mit der Version 0.9: http://code.google.com/p/guava-libraries/. Release Notes: http://code.google.com/p/guava-libraries/wiki/Release09. API-Diff unter http://guava-libraries.googlecode.com/svn/tags/release09/javadoc/jdiff/changes.html.
Mal wieder eine neue JVM-Sprache, diesmal von Gavin King
Seit 2 Jahren bastelt Gavin an der Programmiersprache Ceylon und stellt sie nun in Peking vor: http://www.qconbeijing.com/download/Gavin%20keynote.pdf. Richtig hübsch ist das nicht. Zum Mitdiskutieren auf http://blog.talawah.net/2011/04/gavin-king-unviels-red-hats-top-secret.html gehen.
Insubstantial 6.2
Nach dem Kirill Grouchnikov in sein Substantial keine Zeit mehr investiert, gibt es vom Nachfolgeprojekt ein erstes ernsthaftes Update: http://shemnon.com/speling/2011/04/insubstantial-62-release.html. Unter anderen gehört Maven dazu, Änderungen laut Webseite:
- Gradle – the codebase has been adjusted to use Gradle as the build system. This has allowed for seampless deployment into the maven repositories. For Trident, laf-plugin, and substance-swingx this represents the entirity of the changes
- Maven Distribution – this deserves it’s own bullet point. The jars are available from day one in the maven repositories.
- NPE Bugs – most of the code changes are to deal with possible null pointer exceptions. No one in their right mind would use a JTable as a table cell renderer, but it does happen in the wild.
- Flamingo API addition – a patch from Jonathan Gileswas applied to allow commands to be removed from the ribbon.
- Java 7 fixes – there is a bug fix in Java’s Color Choosers that broke substance 6.1. This is fixed in Substance 6.2, so it should run on Java 7 now!
Jersey 1.6 ist fertig
Download wie immer auf der java.net Seite http://jersey.java.net/. Jersey 1.6 implementiert JAX-RS 1.1.