明日から使える
                  Java SE 7

Java in the Box
 櫻庭 祐一
祝
7/28
JavaSE7
リリース
ほんとは

2008 年
リリース
 予定
だったけど
なぜ遅れた
          Project Lambda
       機能 Project Jigsaw
 買収

           移行 JDK OpenJDK

 JavaFX?
Java SE 7 Themes

  Compatibility
  Productivity    Project Coin
  Performance     G1GC JSR166y
  Universality    InvokeDynamic
  Integration     NIO2
Try-with-resources
Multi Catch/Precise Rethrow




+1
NIO2

Upgrade ClassLoader
try-with-resources




           +1
 try (InputStream in = new FileInputStream(src);
      OutputStream out = new FileOutputStream(dest)) {

     byte[] buf = new byte[1024];
     int n;
     while((n = in.read(buf)) >= 0) {
         out.write(buf, 0, n);
     }
 } catch (IOException ex) {
     // 例外処理
 }
Multi Catch/Precise Rethrow




            +1
   try {
       DocumentBuilderFactory factory
           = DocumentBuilderFactory.newInstance();
       DocumentBuilder builder
           = factory.newDocumentBuilder();
       Document doc = builder.parse(stream);

       // パース

   } catch (final    IOException
                 |   IllegalArgumentException
                 |   ParserConfigurationException
                 |   SAXException ex) {
       log(ex);
       throw ex;
   }
NIO2       FileVisitor を使ったファイルの検索




               +1
Path start = ...;
String regex = ...;

Files.walkFileTree(start, new SimpleFileVisitor<Path>() {
    public FileVisitResult visitFile(Path path,
             BasicFileAttributes attrs) throws IOException {
        if (Pattern.matches(regex,
                            path.getFileName().toString()) {
            System.out.println("File: " + path);
        }
        return FileVisitResult.CONTINUE;
    }
});
+0.5
 Diamond Operator   <>
 数値リテラル
javafx.scene.control.Button button = new Button("OK");




    +0.5
EventHandler<ActionEvent> handler = new EventHandler<>() {
    public void handle(ActionEvent t) {
        // イベント処理
    }
};
button.setOnAction(handler);


button.setOnAction(new EventHandler<>() {
    public void handle(ActionEvent t) {
        // イベント処理
    }
});
道半ば
JSR166y Fork/Join Framework
JSR292 InvokeDynamic

             JSR335 Project Lambda

   実戦投入一歩手前
Garbage First Garbage Collection (G1GC)
微妙 ...
   String Switch
     JDBC 4.1
        MXBean 拡張
     Nimbus L&F

プラットフォーム依存
   SCTP/SDP
  Unicode 6.0
なぜなくなった !!
   XML リテラル
                   JSR255 JMX 2.0
 JSR296 Beans Binding

               JSR303 Bean Validation
JSR274 BeanShell Script Language
                    JSR260 Javadoc
なぜなくなった !!
   XML リテラル
                   JSR255 JMX 2.0
 JSR296 Beans Binding

               JSR303 Bean Validation
JSR274 BeanShell Script Language
コードネーム
     もなくなった
                    JSR260 Javadoc
Conclusion
    全体的に小粒のアップデート
      Java SE 8 につながる技術に注目

 ファイルを扱うなら NIO2!!

       いきなり Java SE 8 はつらいよ

 参考
    ITpro Java SE 7 徹底理解
明日から使える
                  Java SE 7


Java in the Box
   櫻庭 祐一

More Related Content

PPTX
JEP280: Java 9 で文字列結合の処理が変わるぞ!準備はいいか!? #jjug_ccc
PPTX
「書ける」から「できる」になれる! ~Javaメモリ節約ノウハウ話~
PPTX
そうだったのか! よくわかる process.nextTick() node.jsのイベントループを理解する
PDF
C#次世代非同期処理概観 - Task vs Reactive Extensions
PPTX
.NET Web プログラミングにおける非同期 IO のすべて (Build Insider OFFLINE)
PDF
Inside Frontend 2 #insideFE
PDF
東京Node学園#3 Domains & Isolates
PDF
Reactive Extensions v2.0
JEP280: Java 9 で文字列結合の処理が変わるぞ!準備はいいか!? #jjug_ccc
「書ける」から「できる」になれる! ~Javaメモリ節約ノウハウ話~
そうだったのか! よくわかる process.nextTick() node.jsのイベントループを理解する
C#次世代非同期処理概観 - Task vs Reactive Extensions
.NET Web プログラミングにおける非同期 IO のすべて (Build Insider OFFLINE)
Inside Frontend 2 #insideFE
東京Node学園#3 Domains & Isolates
Reactive Extensions v2.0

What's hot (20)

PDF
Node-v0.12の新機能について
PDF
Kibanaでsysstatを可視化する
PDF
About Jobs
PDF
思ったほど怖くない! Haskell on JVM 超入門 #jjug_ccc #ccc_l8
PPTX
Gossip事始め
PDF
Androidの通信周りのコーディングについて
PDF
Deep Dive async/await in Unity with UniTask(UniRx.Async)
PPTX
Stream2の基本
PDF
キメるClojure
PPTX
Wpfと非同期
PDF
MlnagoyaRx
PDF
Clojureによるログ収集と解析
PDF
Tezos Hands on 2019-06-15 Exercise (Japanese)
PPTX
LINQ 概要 + 結構便利な LINQ to XML
KEY
Clojrue 13 testing
PDF
Lombok java
PDF
Docker やってみた
PDF
SQLQL とは!?
PDF
第8回KPF発表資料
PPT
Mongodb
Node-v0.12の新機能について
Kibanaでsysstatを可視化する
About Jobs
思ったほど怖くない! Haskell on JVM 超入門 #jjug_ccc #ccc_l8
Gossip事始め
Androidの通信周りのコーディングについて
Deep Dive async/await in Unity with UniTask(UniRx.Async)
Stream2の基本
キメるClojure
Wpfと非同期
MlnagoyaRx
Clojureによるログ収集と解析
Tezos Hands on 2019-06-15 Exercise (Japanese)
LINQ 概要 + 結構便利な LINQ to XML
Clojrue 13 testing
Lombok java
Docker やってみた
SQLQL とは!?
第8回KPF発表資料
Mongodb

Viewers also liked (6)

PDF
JavaFX & GlassFish 勉強会 Project Visage
PDF
JavaFX & GlassFish 勉強会 Oh! JavaFX 2.0!
PPTX
JavaOne2015報告会 Java EE アップデート #j1jp
PDF
JavaOne 2015 報告会 @ 東京 「About MVC 1.0 & JSON-P」
PDF
JavaOne 2015 JDK Update (Jigsaw) #j1jp
PDF
What's New in Java SE 9
JavaFX & GlassFish 勉強会 Project Visage
JavaFX & GlassFish 勉強会 Oh! JavaFX 2.0!
JavaOne2015報告会 Java EE アップデート #j1jp
JavaOne 2015 報告会 @ 東京 「About MVC 1.0 & JSON-P」
JavaOne 2015 JDK Update (Jigsaw) #j1jp
What's New in Java SE 9

Similar to 明日から使える Java SE 7 (20)

PPTX
Java EE8 Report
PDF
Apache Torqueについて
PDF
イマドキの現場で使えるJavaライブラリ事情
PDF
Javaセキュアコーディングセミナー東京第3回講義
PDF
React Native GUIDE
PPTX
TDC20111031_Groovy_Geb
PDF
Node.jsでブラウザメッセンジャー
PPT
クラウド時代の並列分散処理技術
PDF
第三回ありえる社内勉強会 「いわががのLombok」
PDF
Node予備校 vol.1 名古屋
PDF
Groovyで楽にSQLを実行してみよう
PDF
Rx java x retrofit
PDF
Head toward Java 16 (Night Seminar Edition)
PDF
分散ストリーム処理フレームワーク Apache S4
PDF
Djangoフレームワークの紹介
PDF
Ajax 応用
PDF
SDLoader SeasarCon 2009 Whire
PDF
NIO.2を使って簡単ファイル操作
KEY
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
PPTX
仕事で使うちょっとしたコードをOSSとして開発メンテしていく - Django Redshift Backend の開発 - PyCon JP 2016
Java EE8 Report
Apache Torqueについて
イマドキの現場で使えるJavaライブラリ事情
Javaセキュアコーディングセミナー東京第3回講義
React Native GUIDE
TDC20111031_Groovy_Geb
Node.jsでブラウザメッセンジャー
クラウド時代の並列分散処理技術
第三回ありえる社内勉強会 「いわががのLombok」
Node予備校 vol.1 名古屋
Groovyで楽にSQLを実行してみよう
Rx java x retrofit
Head toward Java 16 (Night Seminar Edition)
分散ストリーム処理フレームワーク Apache S4
Djangoフレームワークの紹介
Ajax 応用
SDLoader SeasarCon 2009 Whire
NIO.2を使って簡単ファイル操作
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
仕事で使うちょっとしたコードをOSSとして開発メンテしていく - Django Redshift Backend の開発 - PyCon JP 2016

More from Yuichi Sakuraba (20)

PDF
Vector API - Javaによるベクターコンピューティング
PDF
Oracle Code One - Java KeynoteとJava SE
PDF
Project Loom + Project Panama
PDF
Project Loom - 限定継続と軽量スレッド -
PDF
Oracle Code One 報告会 Java SE Update
PDF
今こそStream API入門
PDF
Oracle Code One 報告会 Java SE Update
PDF
Learn Language 2018 Java Language Update
PDF
Dockerに向けて、Javaもダイエット
PDF
What's New in Java
PDF
Migration Guide to Java SE 10, and also Java SE 11
PDF
琥珀色のJava - Project Amber -
PDF
Moving to Module: Issues & Solutions
PDF
モジュール移行の課題と対策
PDF
Project Jigsawと、ちょっとだけVector API
PDF
Java SE 9の全貌
PDF
Java SEの現在、過去 そして未来
PDF
Java SE 9 のススメ
PDF
Introduction of Project Jigsaw
PDF
Encouragement of Java SE 9
Vector API - Javaによるベクターコンピューティング
Oracle Code One - Java KeynoteとJava SE
Project Loom + Project Panama
Project Loom - 限定継続と軽量スレッド -
Oracle Code One 報告会 Java SE Update
今こそStream API入門
Oracle Code One 報告会 Java SE Update
Learn Language 2018 Java Language Update
Dockerに向けて、Javaもダイエット
What's New in Java
Migration Guide to Java SE 10, and also Java SE 11
琥珀色のJava - Project Amber -
Moving to Module: Issues & Solutions
モジュール移行の課題と対策
Project Jigsawと、ちょっとだけVector API
Java SE 9の全貌
Java SEの現在、過去 そして未来
Java SE 9 のススメ
Introduction of Project Jigsaw
Encouragement of Java SE 9

明日から使える Java SE 7

  • 1. 明日から使える Java SE 7 Java in the Box 櫻庭 祐一
  • 4. なぜ遅れた Project Lambda 機能 Project Jigsaw 買収 移行 JDK OpenJDK JavaFX?
  • 5. Java SE 7 Themes Compatibility Productivity Project Coin Performance G1GC JSR166y Universality InvokeDynamic Integration NIO2
  • 7. try-with-resources +1 try (InputStream in = new FileInputStream(src); OutputStream out = new FileOutputStream(dest)) { byte[] buf = new byte[1024]; int n; while((n = in.read(buf)) >= 0) { out.write(buf, 0, n); } } catch (IOException ex) { // 例外処理 }
  • 8. Multi Catch/Precise Rethrow +1 try { DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.newDocumentBuilder(); Document doc = builder.parse(stream); // パース } catch (final IOException | IllegalArgumentException | ParserConfigurationException | SAXException ex) { log(ex); throw ex; }
  • 9. NIO2 FileVisitor を使ったファイルの検索 +1 Path start = ...; String regex = ...; Files.walkFileTree(start, new SimpleFileVisitor<Path>() { public FileVisitResult visitFile(Path path, BasicFileAttributes attrs) throws IOException { if (Pattern.matches(regex, path.getFileName().toString()) { System.out.println("File: " + path); } return FileVisitResult.CONTINUE; } });
  • 10. +0.5 Diamond Operator <> 数値リテラル
  • 11. javafx.scene.control.Button button = new Button("OK"); +0.5 EventHandler<ActionEvent> handler = new EventHandler<>() { public void handle(ActionEvent t) { // イベント処理 } }; button.setOnAction(handler); button.setOnAction(new EventHandler<>() { public void handle(ActionEvent t) { // イベント処理 } });
  • 12. 道半ば JSR166y Fork/Join Framework JSR292 InvokeDynamic JSR335 Project Lambda 実戦投入一歩手前 Garbage First Garbage Collection (G1GC)
  • 13. 微妙 ... String Switch JDBC 4.1 MXBean 拡張 Nimbus L&F プラットフォーム依存 SCTP/SDP Unicode 6.0
  • 14. なぜなくなった !! XML リテラル JSR255 JMX 2.0 JSR296 Beans Binding JSR303 Bean Validation JSR274 BeanShell Script Language JSR260 Javadoc
  • 15. なぜなくなった !! XML リテラル JSR255 JMX 2.0 JSR296 Beans Binding JSR303 Bean Validation JSR274 BeanShell Script Language コードネーム もなくなった JSR260 Javadoc
  • 16. Conclusion 全体的に小粒のアップデート Java SE 8 につながる技術に注目 ファイルを扱うなら NIO2!! いきなり Java SE 8 はつらいよ 参考 ITpro Java SE 7 徹底理解
  • 17. 明日から使える Java SE 7 Java in the Box 櫻庭 祐一