What is java_se_7
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

What is java_se_7

on

  • 4,334 views

 

Statistics

Views

Total Views
4,334
Views on SlideShare
3,015
Embed Views
1,319

Actions

Likes
4
Downloads
11
Comments
0

7 Embeds 1,319

http://labs.timedia.co.jp 1285
url_unknown 13
http://www.slideshare.net 8
http://webcache.googleusercontent.com 7
http://localhost 3
http://infra.rrdtool.net 2
http://cache.yahoofs.jp 1
More...

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

What is java_se_7 Presentation 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. 質疑応答• 難しいことは答えられないけどね。