SlideShare ist ein Scribd-Unternehmen logo
1 von 17
Downloaden Sie, um offline zu lesen
明日から使える
                  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
   櫻庭 祐一

Weitere ähnliche Inhalte

Was ist angesagt?

Node-v0.12の新機能について
Node-v0.12の新機能についてNode-v0.12の新機能について
Node-v0.12の新機能について
shigeki_ohtsu
 
Androidの通信周りのコーディングについて
Androidの通信周りのコーディングについてAndroidの通信周りのコーディングについて
Androidの通信周りのコーディングについて
Shoichi Takagi
 
Wpfと非同期
Wpfと非同期Wpfと非同期
Wpfと非同期
yone64
 

Was ist angesagt? (20)

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

Andere mochten auch (6)

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

Ähnlich wie 明日から使える Java SE 7

Javaセキュアコーディングセミナー東京第3回講義
Javaセキュアコーディングセミナー東京第3回講義Javaセキュアコーディングセミナー東京第3回講義
Javaセキュアコーディングセミナー東京第3回講義
JPCERT Coordination Center
 
TDC20111031_Groovy_Geb
TDC20111031_Groovy_GebTDC20111031_Groovy_Geb
TDC20111031_Groovy_Geb
Nobuhiro Sue
 
第三回ありえる社内勉強会 「いわががのLombok」
第三回ありえる社内勉強会 「いわががのLombok」第三回ありえる社内勉強会 「いわががのLombok」
第三回ありえる社内勉強会 「いわががのLombok」
yoshiaki iwanaga
 
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
linzhixing
 

Ähnlich wie 明日から使える Java SE 7 (20)

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

Mehr von Yuichi Sakuraba

Mehr von Yuichi Sakuraba (20)

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

Kürzlich hochgeladen

Kürzlich hochgeladen (11)

Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 

明日から使える 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 櫻庭 祐一