Your SlideShare is downloading. ×
  • Like
What is java_se_7
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Now you can save presentations on your phone or tablet

Available for both IPhone and Android

Text the download link to your phone

Standard text messaging rates apply

What is java_se_7

  • 3,949 views
Published

 

Published in Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
3,949
On SlideShare
0
From Embeds
0
Number of Embeds
2

Actions

Shares
Downloads
13
Comments
0
Likes
4

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Java SE 7 ってなんじゃらほい? 2011年6月15日 飯野 卓見
  • 2. 自己紹介• 飯野 卓見(@troter)• 株式会社タイムインターメディア所属 – 技術者募集してます!• (PHP|Ruby) → Javaプログラマ
  • 3. はじめに• JavaSE7の更新を全てフォローは無理だった• なので普通のプログラマが使いそうな部分に 絞って説明 – 僕の主観• 普通のプログラマを超えたい人は? – 参考資料見て自分で試そう
  • 4. アジェンダ• 自己紹介(済)• はじめに(済)• Java SE 7って? – 構文の拡張(Project Coin) – 新しい入出力API(NIO.2) – その他JDKの更新• Java SE 7を試す• 参考資料
  • 5. Java SE 7 って?
  • 6. Java SE 7って?• Java SE 5 以来の構文の拡張 – でも少しだけ。(大きな変更はJavaSE8待ち)• 新しい入出力API• その他、たくさんの更新 – JDBC4.1とかUnicode6.0とかJAXBとか、並列コレク ションとか、etc• 詳しくは http://openjdk.java.net/projects/jdk7/feature s/
  • 7. Java SE 7 リリーススケジュール• 2011年7月7日リリース – 本当? – http://openjdk.java.net/projects/jdk7/ は更新さ れていない。。。
  • 8. 今回説明するJavaSE7の更新• 構文の拡張 – JSR 334: Small language enhancements (Project Coin)• 新しい入出力API – JSR 203: More new I/O APIs for the Java platform (NIO.2)• その他JDKの更新
  • 9. 今回説明しないこと• core – Upgrade class-loader architecture – Method to close a URLClassLoader – Concurrency and collections updates (jsr166y)• vm – JSR 292: Support for dynamically-typed languages (InvokeDynamic) – Strict class-file checking
  • 10. 今回説明しないこと• i18n – Unicode 6.0 – Locale enhancement – Separate user locale and user-interface locale• ionet – NIO.2 filesystem provider for zip/jar archives – Stream Control Transmission Protocol(Solaris) – Sockets Direct Protocol(Solaris and Linux) – Use the Windows Vista IPv6 stack(windows) – TLS 1.2
  • 11. 今回説明しないこと• sec – Elliptic-curve cryptography (ECC)• jdbc – JDBC 4.1• client – XRender pipeline for Java 2D – Create new platform APIs for 6u10 graphics features – Nimbus look-and-feel for Swing – Swing JLayer component – Gervill sound synthesizer
  • 12. 今回説明しないこと• web – JAXP 1.4 – JAXB 2.2a – JAX-WS 2.2• mgmt – Enhanced MBeans
  • 13. Java SE 8予定のもの• JSR 294: Language and VM support for modular programming• JSR 308: Annotations on Java types• JSR TBD: Language support for collections• JSR TBD: Project Lambda• Modularization (Project Jigsaw)• JSR 296: Swing application framework• Swing JDatePicker component
  • 14. 構文の拡張(Project Coin)
  • 15. 構文の拡張(Project Coin)• switch文で文字列が利用できる• 数値リテラル構文の拡張• 例外ハンドリングの改良• ジェネリックスなインスタンス生成時の型推論 改善• try-with-resouces構文の追加• 可変長引数メソッドの単純化
  • 16. switch文で文字列が利用できる• Java SE 6 までの世界
  • 17. switch文で文字列が利用できる
  • 18. switch文で文字列が利用できる switchにnullを渡すとNullPointerException 何のためのdefaultJavaなら当たり前 caseで正規表現が利用できるわけではない パターンマッチは今まで通りif文で Javaなのに全体的にPHPっぽい なんか、悪いプログラミングスタイルを助長する気が、、、
  • 19. 数値リテラル構文の拡張
  • 20. 数値リテラル構文の拡張 ‘0b’から始まる2進表記の追加 ‘_’(アンダースコア)表記の追加 Rubyでは当たり前
  • 21. 例外ハンドリングの改良• Java SE 6 までの世界
  • 22. 例外ハンドリングの改良
  • 23. 例外ハンドリングの改良 例外を並べることにより、 catchをだらだら並べる必要は無くなった
  • 24. ジェネリックスなインスタンス生成時の 型推論改善• Java SE 6 までの世界
  • 25. ジェネリックスなインスタンス生成時の 型推論改善
  • 26. ジェネリックスなインスタンス生成時の 型推論改善 冗長性がなくなった 型変数を型変数にキャストする事が可能に!
  • 27. try-with-resouces構文の追加• Java SE 6 までの世界
  • 28. try-with-resouces構文の追加
  • 29. try-with-resouces構文の追加 java.lang.AutoCloseableを継承したクラスを宣言可能 tryを抜けた時にAutoClosable.close()が呼び出されるこの構文によりcommons-ioのIOUtils. closeQuietly()は御役御免
  • 30. try-with-resouces構文の中身
  • 31. try-with-resouces構文の中身 Resouces Try-block Catch-block Finally-block
  • 32. 構文の拡張(Project Coin)まとめ• Java SE 5 の拡張for文の様に必ず利用する事• ただ、switch文の文字列の利用は気をつけて – null-safeじゃない。
  • 33. 新しい入出力API(NIO.2)
  • 34. 新しい入出力API(NIO.2)• java.nio.file パッケージ – java.nio.file.Path – java.nio.file.FileSystem – java.nio.file.Paths – java.nio.file.Files• java.nio.channels非同期関連のクラスの更新 – 普通のプログラマは使わないので割愛
  • 35. java.nio.file パッケージ• ファイルシステム固有の情報にアクセスする ための新しいAPI群 – シンボリックリンク作れる! – ファイルの所有者が取得できる!などなど• ファイル操作のための新しいAPI群 – commons-ioの機能が取り込まれたイメージ• 既存のjava.ioとの連携可能• 新しい(そして詳しい)Exceptionを投げる
  • 36. java.nio.file.Path• java.nio.fileの基本となるインターフェース – java.nio.fileの多くのメソッドはPathを引数に取る• ファイルシステムに依存したPathを作成 – java.nio.file.FileSystemがファクトリ• Path.toFile()、File.toPath()で相互変換可能
  • 37. java.nio.file.Path• Pathに対する操作
  • 38. java.nio.file.Path• Pathからの情報取得、述語
  • 39. java.nio.file.FileSystem• 名前の通り各ファイルシステムの操作を提供• getPath()でPathの作成• getRootDirectories()でディレクトリの列挙
  • 40. java.nio.file.FileSystem• getPathMatcher()でPathMatcherの作成 – javaでglobが利用可能に
  • 41. java.nio.file.Paths• java.nio.file.Pathを文字列もしくはURIから作 成するファクトリクラス• Pathsを使わない場合(長い)
  • 42. java.nio.file.Files• org.apache.commons.io.FileUtilsに相当 – ファイル、ディレクトリの作成、削除 – 書き込み、コピー、移動 – 述語 – 属性の確認 – ディレクトリの走査 – java.io.((In|Out)putStream|Reader|Writer)の作成 – などなど、今までなかったのが不思議なものが あります。
  • 43. java.nio.file.Files• ファイル、ディレクトリの作成、削除
  • 44. java.nio.file.Files• 書き込み、コピー、移動
  • 45. java.nio.file.Files• 述語
  • 46. java.nio.file.Files• 属性の確認
  • 47. java.nio.file.Files• java.io.((In|Out)putStream|Reader|Writer)の 作成
  • 48. java.nio.file.Files• ディレクトリの走査(newDirectoryStream)
  • 49. java.nio.file.Files• ディレクトリの走査(walkFileTree)
  • 50. 新しい入出力API(NIO.2)まとめ• ファイル操作のための二つ目の方法• java.ioを利用しているコードはいつでも java.nio.fileの機能を利用できる。 – 全部Pathベースに書き直す必要はない• ファイルシステム依存の操作をしないのであ れば、java.io + comons-ioでも問題ない。
  • 51. その他JDKの更新
  • 52. その他JDKの更新• java.lang.(Boolean|Byte|Short|Integer|Long). compare• java.util.Objects追加• 位しかめぼしい物見つからなかった
  • 53. java.lang.(…).compare• 簡単に比較できるようになった
  • 54. java.util.Objects• org.apache.commons.lang.ObjectUtils的な物• null-safeなtoString、hashCode、equals• assertの様に利用できるrequireNonNull
  • 55. Java SE 7 を試す
  • 56. Java SE 7 を試す• JDK7 をダウンロード&インストール – http://jdk7.java.net/download.html• Java SE 7 対応のIDEのインストール – Emacs、Vim普通の人使わない – Eclipse当分対応しない – NetBeans7.0 – IntelliJ IDEA 10.5
  • 57. JDK7をダウンロード&インストール• http://jdk7.java.net/download.html
  • 58. Java SE 7をNetBeans 7.0で試す
  • 59. NetBeans7.0の場合• メニューからJavaプラットフォームを選択
  • 60. NetBeans7.0の場合• Javaプラットフォームを追加
  • 61. NetBeans7.0の場合• 個々のプロジェクトのプロパティでJDK7の設 定を行う。
  • 62. NetBeans7.0の場合
  • 63. Java SE 7をIntelliJ IDEA 10.5で試す
  • 64. IntelliJ IDEA 10.5の場合• メニューからProject Structureを選択
  • 65. IntelliJ IDEA 10.5の場合• デフォルトのJDKを設定
  • 66. IntelliJ IDEA 10.5の場合• デフォルトのソースコードのレベルを指定
  • 67. ちなみに• スライドのソースコードのスクリーンショットは すべてIntelliJ IDEAのものです。
  • 68. 参考文献
  • 69. 参考文献• 新機能一覧 – http://openjdk.java.net/projects/jdk7/features/• JJUGの発表資料 – http://www.slideshare.net/OracleMiddleJP/new- feature-of-java-se-7• JDK7 javadoc – http://download.java.net/jdk7/docs/api/• try-with-resourcesの仕様 – http://blogs.oracle.com/darcy/entry/project_coin_up dated_arm_spec
  • 70. 質疑応答• 難しいことは答えられないけどね。