Java 7 News - buschmais.de

Werbung
Java 7 News
Tobias Israel | [email protected]
Donnerstag, 15. Dezember 11
Was bisher geschah:
Donnerstag, 15. Dezember 11
7. Juli 2011
Bangalore
Beijing
Cairo
Canberra
Dallas
Dakar
Düsseldorf
Donnerstag, 15. Dezember 11
Redwood Shores
London
São Paulo
Shanghai
Stuttgart
Tokyo
Jakarta
Mexiko City
New York City
Okinawa
Quebec
Rio de Janeiro
Santiago
5 Monate später ...
Donnerstag, 15. Dezember 11
hello Java 7
@JUG Saxony Dresden
Donnerstag, 15. Dezember 11
Was bringt der Sommer 2013?
Donnerstag, 15. Dezember 11
Java 8
Donnerstag, 15. Dezember 11
Jetzt aber zurück zu Java 7!
Donnerstag, 15. Dezember 11
JSR 336: Java SE 7
• JSR 292: Support for dynamically-typed languages
• Strict class-file checking
• JSR 334: Small language enhancements
• Upgrade class-loader architecture
• Method to close a URLClassLoader
• JSR 166 y: Concurrency and collections updates
• Unicode 6.0
• Locale enhancement
• Separate user locale and user-interface locale
• JSR 203: More new I/O APIs for the Java platform (NIO.2)
• TLS 1.2
• JDBC 4.1
• Create new platform APIs for 6u10 graphics features
• Nimbus look-and-feel for Swing
• Swing JLayer component
• Update the XML stack
Donnerstag, 15. Dezember 11
JSR 334: Small language enhancements
aka „Project Coin“
Donnerstag, 15. Dezember 11
Strings in switch:
"
"
"
"
"
"
"
"
"
"
"
"
String"s"=""JUG"Saxony";
switch"(s)"{
case""JUG"Saxony":
" sayHello(s);
" break;
}
Donnerstag, 15. Dezember 11
Erweiterte Notation in numerischen Literalen und
binäre Integer-Literale:
1234_5678
1_2_3_4__5_6_7_8L
0b0001_0010_0100_1000
3.141_592_653_589_793d
0x1.ffff_ffff_ffff_fP1_023"//"Double.MAX_VALUE
Donnerstag, 15. Dezember 11
Multi Catch und optimiertes Rethrow
try {
loadHelloTxt(file);
} catch (IOException|SQLException e) {
LOGGER.log(e);
}
Donnerstag, 15. Dezember 11
Generics: Diamond operator
"Map<String,List<String>>"m"="new"HashMap<>();
Donnerstag, 15. Dezember 11
Try with resources
try (InputStream in) {
// Do stuff
}
// closed here
Donnerstag, 15. Dezember 11
JSR 166 y: Concurrency and Collections Updates
Donnerstag, 15. Dezember 11
Lightweight Fork/Join Framework
• „Divide and Conquer“ mit java.util.concurrent
if"(Aufgabe"klein"genug)
""direkte"Prozessierung
else
""zerteile"Aufgabe"in"zwei"Teile
""prozessiere"beide"Teile"und"führe"die"
Ergebnisse"zusammen
Donnerstag, 15. Dezember 11
public"class"SearchJUGChampion"extends"RecursiveAction"{
private"List<JUGFan>"jugFanList;
private"JUGFan"jugFan;
private"int"max"="20000;
public"SearchJUGChampion(List<JUGFan>"jugFanList){
this.jugFanList"="jugFanList;
this.jugFan"="jugFans.get(0);
}
protected"void"computeDirectly()"{
for(JUGFan"jf:"userList)"{
if(jugFan.visitCount"<"jf.visitCount)"{
jugFan"="jf;
}
}
}
Donnerstag, 15. Dezember 11
protected"void"compute(){
int"listSize"="jugFanList.size();
if(listSize"<"max){
computeDirectly();
}"else"{
int"split"="listSize"/"2;
SearchJUGChampion0left0=0
new0SearchJUGChampion(jugFanList.subList(0,split));
SearchJUGChampion0right0=0
new0SearchJUGChampion(jugFanList.subList(split,listSize));
invokeAll(left,right);
if(left.jugFan.visitCount">"right.jugFan.visitCount){
jugFan"="left.jugFan;
}"else"{
jugFan"="right.jugFan;
}
}
}
Donnerstag, 15. Dezember 11
ForkJoinPool"pool"="new"ForkJoinPool();
SearchJUGChampion"sjc"="new"SearchJUGChampion(jugFanList);
" pool.invoke(sjc);
"
return"sjc.getJugFan;
Donnerstag, 15. Dezember 11
JSR 292: Invokedynamic
Donnerstag, 15. Dezember 11
Neuer Bytecode: invokedynamic
Performance-Boost für dynamische
typisierte Sprachen: 150-200%
Donnerstag, 15. Dezember 11
JRuby - Ruby auf der JVM - Das Beste zweier Welten
15.03.2012 19:00Uhr
JRuby
Donnerstag, 15. Dezember 11
Next: In-Memory Datagrids
Donnerstag, 15. Dezember 11
Herunterladen