Java 7
Java 7 Milestone 5: Build b76 vorgestellt
Download gibt es unter http://download.java.net/jdk7/m5/, die Neuerungen bei http://download.java.net/jdk7/changes/jdk7-b76.html. Am Interessantesten dürfen sein:
- bb3. 6865582. jsr166y – jsr166 maintenance update
- 6865571. Add a lightweight task framework known as ForkJoin
- 6445158. Phaser – an improved CyclicBarrier
- 6865579. Add TransferQueue/LinkedTransferQueue
und
- 8fb9b4be3cb1. 6827009. Project Coin: Strings in Switch
Java 7 bringt binary literals und Underscores in literals
Im Build http://download.java.net/jdk7/changes/jdk7-b73.html gibt es noch mehr, aber diese beiden Änderungen betreffen die Sprache:
- 6860965. Project Coin: binary literals. http://mail.openjdk.java.net/pipermail/coin-dev/2009-March/000929.html
- 6860973. Project Coin: Underscores in literals. http://mail.openjdk.java.net/pipermail/coin-dev/2009-April/001628.html
Erste Sprachänderung in Java 7
Die Diamand-Schreibweise zur Abkürzung von generischen Instanziierungen ist in Java 7 Build 72 eingegangen.
- http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6840638
- http://download.java.net/jdk7/changes/jdk7-b72.html
- http://download.java.net/jdk7/
Die Sprachänderungen für Java 7 nun fest
Das schreibt Joseph D. Darcy in seinem Blog http://blogs.sun.com/darcy/entry/project_coin_final_five (und bei Java.net http://weblogs.java.net/blog/forax/archive/2009/08/29/seven-small-languages-changes-will-be-jdk7).
-
Improved Type Inference for Generic Instance Creation (diamond)
-
An omnibus proposal for better integral literals (also binary literals and underscores in numbers)
-
Language support for Collections
Die Spezifikationen stehen im Einzelnen noch nicht fest.
Raus sind erst einmal
und auch alle anderen Dinge.
Das alles erscheint mir schon mehr merkwürdig in der Auswahl. Improved Exception Handling for Java war so ein heißer Kandidat und wird es nun doch nicht.
Deadline ist Ende Oktober.
Video mit Danny Coward über Java 7
Das Video gibt es bei Sun unter http://java.sun.com/developer/media/deepdivejdk7.jsp. Es zeigt die 5 Top-Features, die in Java 7 erwartet werden. Das Interview erwähnt noch das Swing Application Framework, was aber gestorben ist.
Swing Application Framework fliegt aus Java 7 raus
Unter http://weblogs.java.net/blog/alexfromsun/archive/2009/08/saf_and_jdk7.html ist von Alexander Potochkin nun zu lesen:
After much discussion it’s become clear that the Swing Application Framework API as it is today hasn’t reached consensus and we feel still needs further design work done.
Since the SAF API was committed to milestone 5 of JDK7 and that time is already here, this date is now impossible, and we need to decommit SAF from any specific JDK 7 milestone
OpenJDK7 / JDK7 M4 Release
Vorschläge für Projekt Coin (Java 7 Sprachänderungen) geht in die nächste Runde
-
Strings in switch,
Joe Darcy -
Improved Exception Handling for Java,
Neal Gafter -
Automatic Resource Management,
Josh Bloch -
Improved Type Inference for Generic Instance Creation,
Jeremy Manson -
Elvis and Other Null-Safe Operators, Neal Gafter, Stephen Colebourne
In der näheren Auswahl sind desweiteren noch:
-
Integer-Literale:
-
Byte and Short Integer Literal Suffixes,
Bruce Chapman -
Binary Literals,
Derek Foster -
Underscores in numbers,
Derek Foster
-
-
Language support for JSR 292
(wiki),
John Rose -
Indexing access syntax for Lists and Maps,
Shams Mahmood Imam -
Collection Literals,
Joshua Bloch -
Large arrays (revised),
James Lowden
Alle andere Vorschläge, die bisher in der Mailingliste http://mail.openjdk.java.net/pipermail/coin-dev/ vorstellt wurden, sind damit raus. (Eine Begründung für die Ablehnung gibt es nicht zwangsläufig.)
Nimbus Swing Look and Feel wird auch Teil von Java 7 sein
Von Java 6 wurde das Nimbus LaF auch auf das OpenJDK 7 gebracht. Es wird dann unter javax.swing.plaf liegen.
Transparente und nicht-rechteckige Fenster
Kirill Grouchnikov gibt in seinem Blog-Eintrag http://www.pushing-pixels.org/?p=1209 den Hinweis, dass in JDK 7 (b57) transparente und nicht-rechteckige Fenster unterstützt werden. Die Sun-interne Klasse com.sun.awt.AWTUtilities wird nun vom Entwickler nicht mehr benötigt, und die Funktionalität ist in die Windows-Klasse gewandert; sie delegiert aber weiterhin an AWTUtilities.
Größe vom Integer.valueOf Cache ist nun konfigurierbar
Unter http://hg.openjdk.java.net/jdk7/jdk7/jdk/rev/4c3f752993a5 ist die Änderung sichtbar, mit der in Java 7 der Cache für die Integer-Objekte nun nicht mehr zwangsläufig im Bereich –128 bis +127 liegen muss. Ändern kann man die Cache-Größe auf der Kommandozeile mit -XX:AutoBoxCacheMax=<size>.
JSR 203 (NIO2) im OpenJDK 7
Na endlich: JDK 7 feature list, build and integration schedule
Mark Reinhold schreibt auf seinem Blog:
At Devoxx back in December I presented a list of candidate features for JDK 7(video, interview); more recently, at FOSDEM, I discussed that list as well as the high-level schedule and the means by which we plan to deliver the release (slides, audio/video). The high-level schedule is now available on the JDK 7 Project page in theOpenJDK Community along with a detailed feature list, the near-term build and integration schedule, and the long-term, build-by-build calendar. The JDK 7 feature list, like that of any large software project, is provisional and subject to change based upon new information and new proposals. Who Many of the planned features will be implemented by Sun engineers; the rest will be contributed from outside Sun. We’ll shortly define a process by which additional features can be proposed—so long as you’re willing to write not just the code but also the necessary tests and specification material. There will also be a simpler, lighter-weight process for smaller changes. Where Regardless of who writes the code, the expectation is that all development will take place in the open, either in the JDK 7 Project, in some other OpenJDK Project, or elsewhere. What about the JCP? The JDK 7 Project is creating a prototype of what might—or might not—wind up in the Java SE 7 Platform Specification. When the SE 7 Platform JSR is submitted then the features under development in JDK 7 will be proposed for inclusion therein, except for those that are VM-level or implementation-specific.
Der Kalender gibt Ende Februar an.
M8 2010/02/12 – 2010/02/18 b95
Die Feature-List ist interessant aber ich denke, dass einiges im Detail noch offen ist:
- JSR TBD: Small language enhancements (Project Coin)
- JSR 296: Swing application framework
- Swing updates
Java 7 und Named Capturing Group
Hatte man bei reguläre Ausdrücken und Gruppen auf die Gruppen über eine Index zugreifen müssen, so kann man dies in Java 7 auch über einen Namen tun; das ganze nennt sich dann named capturing group:
String pStr = "0x(?<bytes>\\p{XDigit}{1,4})\\s++u\\+(?<char>\\p{XDigit}{4})(?:\\s++)?";
Matcher m = Pattern.compile(pStr).matcher(INPUTTEXT);
if (m.matches()) {
int bs = Integer.valueOf(m.group("bytes"), 16);
int c = Integer.valueOf(m.group("char"), 16);
System.out.printf("[%x] -> [%04x]%n", bs, c);
}
Der Blog-Eintrag http://blogs.sun.com/xuemingshen/entry/named_capturing_group_in_jdk7 gibt es in paar mehr Infos.
URLClassLoader schließen in Java 7
URLClassLoader bekommt in Java 7 eine close()-Methode: http://blogs.sun.com/CoreJavaTechTips/entry/closing_a_urlclassloader.
Video: Java 7, Modularisierung, Jigsaw, was kommt, was geht, 2010
Mark Reinhold spricht über Java 7
Geplante Änderungen:
- re-throw
- null-dereference expressions
- Type-Inference — Wer zu viel Zeit hat, dem ist http://blog.henning.makholm.net/2008/11/java-50-type-inferences-is.html empfohlen
- Multi-Catch
- JSR 203 (More NIO, NIO2)
- JSR 296: Swing Application Framework
- SCTP
- SDP
- Unicode 5
- Swing-Updates wie JXLayer, DatePicker
- G1 GC
- JSR 308, http://groups.csail.mit.edu/pag/jsr308/
Wird (wohl) nicht in Java 7 kommen wird:
- Closures
- Reified Generics
- First Class Properties
- Überladene Operatoren
- BigDecimal Syntax
- JSR 295: Beans Binding
Der Hammer: Java 7 wird Anfang 2010 erwartet.
Wer mal was inspirierendes hören möchte: Unter http://channel9.msdn.com/posts/Charles/C-40-Meet-the-Design-Team/ sprechen C#-Macher Anders Hejlsberg und weitere C#-Experten über die Zukunft von C# und .NET, insbesondere im Kontext dynamischer Sprachen. Hier läuft man meilenweit vor Java; und das Interview ist schon 1 Jahr alt… Unter http://code.msdn.microsoft.com/csharpfuture geht’s es dann mit ein paar Links zur C# 4 und Ideen zu C# 5 weiter.
Auswirkung von neuen Sprachkonstrukturen in Java 7 und Project Coin
Joseph Darcy veröffentlichte schon vor 2 Jahren einen interessanten Blog-Artikel über die Änderungen, die enum mit sich brachte: JSL, Compiler, Bibliotheken, JVM-Spezifikation, usw. Da Sun sich mit dem neuen Modulsystem Jigsaw wohl ganz gut was vorgenommen hat, wird es große Änderungen an der Sprache (wie Closures oder Reified Generics) wohl nicht in Java 7 geben. Dennoch gibt es mit dem aktuellen Project Coin: Small Language Changes for JDK 7 einen neuen Versuch, zumindest einige Features unterzubringen, die mit wenig Aufwand implementiert werden können. Dazu zählen ein switch mit Strings oder die Möglichkeit, multiple Exceptions in einem catch zu fangen.
Joda Time 1.6/JSR 310
Von Joda Time (http://joda-time.sourceforge.net/) gibt es ein neues Update in der Version 1.6 (vom 2008-10-27). Interessant bleibt zu sehen, wie sich Joda Time im Laufe der Zeit gegenüber der JSR 310: A New Java Date/Time API abhebt.
Zur JSR 310, die in Java 7 erwartet wird:
- https://jsr-310.dev.java.net/
- http://jcp.org/en/jsr/detail?id=310
- http://today.java.net/pub/a/today/2008/09/18/jsr-310-new-java-date-time-api.html
- https://jsr-310.dev.java.net/nonav/doc-2008-08-04/index.html
Stephen Colebourne ist einer der treibenden Personen von Joda Time und auch Specification Lead der JSR 310.
Erster Java Closures Prototype im openjdk
Von http://gafter.blogspot.com/2008/08/java-closures-prototype-feature.html:
The complete source code, released under GPLv2, is in the project’s openjdk repository. A binary build, suitable for use with an existing JDK6, is at http://www.javac.info/closures.tar.gz. Other related documents are on the website http://www.javac.info/
Neu sind Method references aus dem FCM proposal:
{ String => int } parseInt = Integer#parseInt(String);
int x = parseInt.invoke("42");
Damit wird es immer wahrscheinlicher, dass es Closures in Java 7 gibt, obwohl Zeitpunkt und Inhalte immer noch nicht feststehen.