Autor: Christian Ullenboom
Java 8: Double/Float.isFinite(), Math.nextDown()
Die Methode Double.isInfinite(double v) liefert true, falls v entweder POSITIVE_INFINITY oder NEGATIVE_INFINITY ist. In Float gibt es die gleiche Methode. Seit Java 8 testet Double.isFinite(double v), ob v nicht unendlich ist und auch nicht NaN ist – ähnliches gilt für Float.
Statt Math.nextAfter(d,Double.NEGATIVE_INFINITY) gibt es in Java 8 auch Math.nextDown().
Java 8 Änderungen an BigInteger: intValueExact(), longValueExact() und shortValueExact()
Die Methoden intValue(), longValue() der Klasse BigInteger (und shortValue(), was aus BigInteger aus Number erbt) liefen ein int/long/short des repräsentierten Werteobjekts, jedoch ist nicht zwingend, dass die Werte in den Datentyp int/long/short passen; falls nicht, werden sie einfach wie bei einer expliziten Typanpassung abgeschnitten. Die in Java 8 eingeführten Methoden intValueExact(), longValueExact() und shortValueExact() lösen eine ArithmeticException aus, falls der vom BigInteger repräsentierte Wert nicht ohne Verlust in den primitiven Datentyp passt.
Google App Engine 1.5.5 freigegeben
Von http://code.google.com/p/googleappengine/wiki/SdkForJavaReleaseNotes:
- We have increased the number of files you can upload with your application to from 3,000 to 10,000.
- We have increased the size limit for a single file uploaded to App Engine from 10MB to 32MB.
- We have increased the Frontend request deadline from 30 seconds to 60 seconds.
- We have increased the online URLFetch maximum deadline from 10 seconds to 60 seconds. The default deadline remains at 10 seconds. The offline maximum deadline for URLFetch remains at 10 minutes.
- We have increased the URLFetch Post payload from 1MB to 5MB.
- App Engine now supports Cross Group (XG) transactions with the High Replication Datastore, which allow you to perform transactions across multiple entity groups. http://code.google.com/appengine/docs/java/datastore/transactions.html
- We have added a graph to the admin console that displays the number of instances for which you will be billed.
- In the XMPP API, getPresence() is deprecated in favor of using the inbound presence handlers documented inhttp://code.google.com/appengine/docs/java/xmpp/overview.html#Handling_User_Presence.
- Fixed an issue in the Admin Console where the "Run Now" button did not work for tasks with a ‚-‚ in the name.
- Fixed an issue to provide a better error message when a user tries to parse an HttpRequest’s input stream more than once in a request.
- Fixed an issue to provide a better error message when using the Mail API to send email to an invalid user address.
- Fixed an issue in the SDK where HttpServletRequest.getInputStream().read() always returned -1.http://code.google.com/p/googleappengine/issues/detail?id=5396
- Fixed an issue where you could not schedule a cron job to run every 100 minutes.http://code.google.com/p/googleappengine/issues/detail?id=5861
Ein paar weitere Details: http://www.infoq.com/news/2011/10/Google-Cloud
Spring 3.1 ist auf dem Weg
Google Cloud SQL, endlich echtes SQL (über MySQL) für die Google App Engine
http://code.google.com/apis/sql/docs/developers_guide_java.html. Noch im Beta-Status
RIP Steve Jobs
Java 8 kommt später :(
Mitte 2013. Weitere News von der JavaONE bei Heise: http://www.heise.de/newsticker/meldung/Java-8-verspaetet-sich-aber-nur-ein-wenig-1354571.html
JavaFX 2.0 ist fertig
Siehe http://blogs.oracle.com/thejavatutorials/entry/javafx_2_0_released.
Naja, jetzt habe ich das Kapitel aus der Insel gerade rausgeschmissen, weil der 2. Band zu dick wurde — die ganzen API-Anpassungen in den letzten Monate hätte ich mir sparen können. Naja, vielleicht im 11. Band wenn ich Swing kürze.
Google Guava 10
Nach längerer Wartezeit gibt es nach Guava 0.9 die Version Guava 10 – die Version 1.0 wollten man vermeiden, das klingt so fertig (ja, Google mag Beta-Status). Es ist einiges im io-Paket rausgeflogen und dabei neue Sachen reingekommen, wie ein Caching und ein eigener EventBus, sodass jetzt auf den java.net EventBus jetzt verzichten kann. News siehe
Viele Videos zu schauen von den ScalaDays 2011
PSP Emulator in Java (jpcsp)
Java ist langsam? Nee, denn sonst würde man keinen PSP Emulator in Java programmieren, sondern in C(++)! Doch das Projekt http://jpcsp.org/ (bzw. http://code.google.com/p/jpcsp/) zeigt wieder einmal, wie leistungsfähig Java (plus ein paar nativer Bibliotheken) ist. Die Emulation ist modernen Spielkonsolen ist schwer, da sie mit spezieller Hardware vollgestopft sind, auch wenn die Prozessoren nicht wie in moderne PCs in Gigahertz-Bereich laufen. Die PSP hat mit einem auf MIPS 4000 basierenden RISC-Prozessor und einen “Media-Engine”-Chip, die JPCSP ausgezeichnet emuliert, was an die 300 Speile ausführbar macht: http://www.emunewz.net/forum/forumdisplay.php?fid=65. Der Code greift für die Media-Low-Level-Operationen auf http://lwjgl.org/ zurück. Es steckt sonst noch nativer Anteil drin, etwa für Raw-Sockets (das sind Sockets mit allen TCP/IP-Informationen, also auch den Headern, nicht nur den Transportdaten selbst, http://www.savarese.org/software/rocksaw/) oder eine Bib. namens Xuggler, was ein Java-Wrapper für FFmpeg ist.
Endlich Eclipse 3.7.1 mit Java 7 Unterstützung
Video: Java-Geschichtsstunde mit Neal Gafter
Neue JavaFX-Version (build 42), mal wieder API-Änderungen
Download unter http://javafx.com/. Änderungen betreffen wohl nahezu jedes Hauptprogramm, denn setVisible(true) wird zu show() und setVisible(false) zu hide(). Das ist natürlich super ungewöhnlich, da AWT genau den anderen Weg gegangen ist, und eben Bean-Methoden einführte. 2.: Die Builder sind in ein andere Paket gerutscht, so fällt weg: import javafx.builders.SplitPaneBuilder;
Achtung: Die Online-Doku ist im Moment noch nicht auf dem neusten Stand.
GWT 2.4
So, da haben wir mal wieder in Update von GWT: http://code.google.com/webtoolkit/release-notes.html#Release_Notes_Current. Als ich den Milestone vor ein paar Wochen getestet habe, gab es noch einige Warnungen auf der Kommandozeile. Weiteres: http://code.google.com/webtoolkit/doc/latest/ReleaseNotes.html. So spektakulär ist das nicht in meinen Augen, hätte uach GWT 2.3.x heißen können.
Wicket 1.5 jetzt raus
Siehe http://wicket.apache.org/2011/09/07/wicket-1.5-released.html.
Most notable changes
With this release the Wicket team has revised many of its internals. A short list:
- HTML5 components added:
EmailTextField
,NumberTextField
,UrlTextField
andRangeTextField
- New inter-component events (explained below)
- Minimum required servlet API is servlet-api 2.5
- All standard validators now extend
Behavior
to allow for client side validationsIBehavior
has been removed andAbstractBehavior
has been deprecated, you should now extendBehavior
instead- Simplified the request cycle processing and made it more extensible
- URL handling is now in one place
- Wicket’s rendering code has been greatly simplified
- Improved browser caching support
- ClientSideImageMap replaces old ImageMap
- Better support for running behind proxies with
x-forwarded-for
header- Request cycle listeners make it easier to integrate frameworks in your Wicket application
- Consistent naming: methods with
Javascript
in the name have been renamed to use proper capitalization:JavaScript
- Switching to HTTPS is as simple as configuring a new root mapper to make Wicket HTTPS aware and annotating a page with @RequireHttps
A longer list of changes and improvements can be found in our migration guide.
Gastbeitrag: AWT-Schwergewichte nach vorne, bitte!
Der Code hinter Container.add(Component comp) hat sich immer wieder gewandelt, und lange Zeit war es problematisch, AWT- und Swing-Komponenten zu mischen. Seit Java 7 stellt das AWT jedoch jede mögliche Kombination von beliebigen Komponenten zuverlässig dar – den zusätzlichen Rechenaufwand bekommt jeder zu spüren, der etwa versucht, eine JScrollPane mit 50.000 JLabels zu bestücken.
Tester für einfache iCalendar Klasse gesucht
Für alles rund um iCal ist http://wiki.modularity.net.au/ical4j/index.php die Standardlösung. Allerdings ist mir das zu fett und hat auch noch diverse Abhängigkeiten. Daher habe ich mir eine einfache Klasse gebaut, die iCal-Dokumente für Events erzeugt.
String s = new ICalendar()
.start( new Date() )
.end( new Date() )
.summary( "Ba,st;ille\\ Day Party\näöß" )
.toString();System.out.print( s );erzeugt:
BEGIN:VCALENDAR
VERSION:2.0PRODID:-//tutego//NONSGML ICalendar//DE
BEGIN:VEVENT
DTSTART:20110904T200944
DTEND:20110904T200944
SUMMARY:Ba\,st\;ille\\ Day Party\näöß
END:VEVENT
END:VCALENDAR
Möchte das jmd. testen und mit Tipps geben?
Sortieralgorithmen getanzt
http://www.youtube.com/user/AlgoRythmics. Das ist ja cool. Eine super Idee!