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

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

What is java_se_7

4,088

Published on

Published in: Technology
0 Comments
4 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
4,088
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
14
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. 質疑応答• 難しいことは答えられないけどね。

×