Java 7 アプレッソ 吉田哲也
基本情報 <ul><li>コードネーム : Dolphin </li></ul><ul><li>現在のバージョン : java version &quot;1.7.0-ea“ Java(TM) SE Runtime Environment (b...
<ul><li>言語関連の変更点  ( 予定 ) </li></ul><ul><li>パッケージの追加  ( 予定 ) </li></ul><ul><li>VM  関連の変更点  ( 予定 ) </li></ul>
言語関連の変更点  ( 予定 ) <ul><li>Array Syntax for Collections </li></ul><ul><li>Closures </li></ul><ul><li>Property Literals </li>...
Array Syntax for Collections <ul><li>Collections  を配列のように扱う </li></ul><ul><li>List list = new ArrayList(); list.add(0, “te...
Local Functions/Closures <ul><li>ローカル関数 </li></ul><ul><ul><li>関数のポインタのような感じ </li></ul></ul><ul><ul><li>int plus2(int x) {r...
Properties Literals <ul><li>簡単なプロパティアクセス </li></ul><ul><li>Point p = new Point(); p.setX(56); p.setY(87); int z = p.getX()...
Subpackage Access <ul><li>JSR 294 </li></ul><ul><li>サブパッケージからスーパーパッケージのクラス内の保護されたフィールドやメソッドにアクセス可能 </li></ul><ul><li>サブパッケ...
パッケージの追加  ( 予定 ) <ul><li>New Filesystem API </li></ul><ul><li>True Asynchronous I/O </li></ul><ul><li>Date and Time API </...
New Filesystem API <ul><li>java.nio.filesystems </li></ul><ul><li>java.nio.filesystems.attributes </li></ul><ul><li>コピーや移動...
Swing Application Framework <ul><li>Swing  アプリケーションを作成するのをより容易に </li></ul><ul><li>いちいち個々に  Swing  コンポーネントを作り、アクションを作っていかなく...
VM  関連の変更点  ( 予定 ) <ul><li>Versioned JARs/Package Management </li></ul><ul><li>More Scripting Engines </li></ul><ul><li>Ne...
Versioned JARs/Package Management <ul><li>Java Module System (JSR 277 、 294) </li></ul><ul><ul><li>「あるプログラムが  Xerces 2.6  ...
Tiered Compilation <ul><li>Client/Server HotSpot VM  の混在 </li></ul><ul><li>Client VM  は起動が速く、 Server VM  はパフォーマンスが漸近的 </li...
URLs <ul><li>JDK 7 Project </li></ul><ul><ul><li>https://jdk7.dev.java.net/ </li></ul></ul><ul><li>Java 7 and Beyond </li>...
ありがとうございました
予備資料
Type Interface <ul><li>コンパイラが推測できる型の省略可能 </li></ul><ul><ul><li>ローカル変数の型 </li></ul></ul><ul><ul><li>など </li></ul></ul><ul><...
Arbitrary Precision Arithmetic <ul><li>無限精度の演算の簡略化 </li></ul><ul><li>BigInteger low = BigInteger.ONE; BigInteger high = Bi...
Factory Methods instead of Constructors <ul><li>new  キーワードの追加?? </li></ul><ul><li>Foo f1 =  Foo.new(1, 2); </li></ul><ul><...
今後の  Java  でサポートされない可能性の高い機能 <ul><li>多重継承 </li></ul><ul><li>演算子オーバーロード </li></ul><ul><li>AOP </li></ul><ul><li>プリプロセッサ / マ...
Upcoming SlideShare
Loading in...5
×

Java 7

6,525

Published on

アプレッソ x ラグザイア 技術者交流会で発表した Java 7 の紹介資料

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

No Downloads
Views
Total Views
6,525
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
80
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

Java 7

  1. 1. Java 7 アプレッソ 吉田哲也
  2. 2. 基本情報 <ul><li>コードネーム : Dolphin </li></ul><ul><li>現在のバージョン : java version &quot;1.7.0-ea“ Java(TM) SE Runtime Environment (build 1.7.0-ea-b18) Java HotSpot(TM) 64-Bit Server VM (build 1.7.0-ea-b18, mixed mode) </li></ul><ul><li>Project ホーム : JDK 7 Project ( https://jdk7.dev.java.net/ ) </li></ul><ul><li>リリースは 2008 年? </li></ul>
  3. 3. <ul><li>言語関連の変更点 ( 予定 ) </li></ul><ul><li>パッケージの追加 ( 予定 ) </li></ul><ul><li>VM 関連の変更点 ( 予定 ) </li></ul>
  4. 4. 言語関連の変更点 ( 予定 ) <ul><li>Array Syntax for Collections </li></ul><ul><li>Closures </li></ul><ul><li>Property Literals </li></ul><ul><li>Type Interface </li></ul><ul><li>Factory Methods instead of Constructors </li></ul><ul><li>Arbitrary Precision Arithmetic </li></ul><ul><li>Sub-package Access </li></ul>
  5. 5. Array Syntax for Collections <ul><li>Collections を配列のように扱う </li></ul><ul><li>List list = new ArrayList(); list.add(0, “tencho”); list.add(1, “ono”); String name = list.get(0); </li></ul><ul><li>List list = new ArrayList(); list[0] = “tencho”; list[1] = “ono”; String name = list[0]; </li></ul><ul><li>List list = {“tencho”, “ono”}; </li></ul><ul><li>コンパイラの変更のみ </li></ul><ul><li>VM の変更はなし </li></ul>
  6. 6. Local Functions/Closures <ul><li>ローカル関数 </li></ul><ul><ul><li>関数のポインタのような感じ </li></ul></ul><ul><ul><li>int plus2(int x) {return x + 2}; int(int) plus2f = plus2; System.out.println(plus2f(2)); </li></ul></ul><ul><li>Closure </li></ul><ul><ul><li>名前のないローカル関数 </li></ul></ul><ul><ul><li>int(int) plus2f = (int x) {return x + 2}; </li></ul></ul><ul><ul><li>void(int) throws InterrupedException closure = (int t) { Thread.sleep(t) }; </li></ul></ul><ul><li>ユースケース </li></ul><ul><ul><li>ActionListner 、 Runnable など </li></ul></ul><ul><ul><li>引数としてのアルゴリズムの提供 </li></ul></ul>
  7. 7. Properties Literals <ul><li>簡単なプロパティアクセス </li></ul><ul><li>Point p = new Point(); p.setX(56); p.setY(87); int z = p.getX(); </li></ul><ul><li>Point p = new Point(); p->X = 56; p->Y = 87; int z = p->X ; </li></ul><ul><li>-> の代わりに . や # も提案されている </li></ul><ul><li>property キーワードの追加 public class Point { public int property x; public int property y; } </li></ul><ul><li>フィールド名と setter/getter が同名の場合、 setter/getter にディスパッチ </li></ul>
  8. 8. Subpackage Access <ul><li>JSR 294 </li></ul><ul><li>サブパッケージからスーパーパッケージのクラス内の保護されたフィールドやメソッドにアクセス可能 </li></ul><ul><li>サブパッケージから友好的であることを明示的に宣言されたスーパーパッケージのメンバーへのアクセス可能 </li></ul><ul><li>org/jdom/super-package.java superpackage org.jdom { // スーパーパッケージのメンバー member package org.jdom, org.jdom.input, org.jdom.output; // 公開するクラス export org.jdom.Element, org.jdom.Attribute, org.jdom.input.Builder } </li></ul><ul><li>下記のアクセスレベルが可能 </li></ul><ul><ul><li>public </li></ul></ul><ul><ul><li>non-exproted public(superpackage private) </li></ul></ul><ul><ul><li>package private </li></ul></ul><ul><li>JUnit テストを作成するときに便利 </li></ul><ul><ul><li>テストのために public にする必要なし </li></ul></ul>
  9. 9. パッケージの追加 ( 予定 ) <ul><li>New Filesystem API </li></ul><ul><li>True Asynchronous I/O </li></ul><ul><li>Date and Time API </li></ul><ul><li>Swing Application Framewok </li></ul>
  10. 10. New Filesystem API <ul><li>java.nio.filesystems </li></ul><ul><li>java.nio.filesystems.attributes </li></ul><ul><li>コピーや移動用のメソッド </li></ul><ul><ul><li>PathRefefence#copyTo() </li></ul></ul><ul><ul><li>PathReference#moveTo() </li></ul></ul><ul><ul><li>存在すればどうする? などの各種オプションの付加可能 </li></ul></ul><ul><li>FileAttributes クラス </li></ul><ul><ul><li>BasicFileAttributes </li></ul></ul><ul><ul><li>PosixFileAttributes </li></ul></ul><ul><ul><li>FATFileAttributes </li></ul></ul><ul><ul><li>など </li></ul></ul>
  11. 11. Swing Application Framework <ul><li>Swing アプリケーションを作成するのをより容易に </li></ul><ul><li>いちいち個々に Swing コンポーネントを作り、アクションを作っていかなくても、ほとんどのアプリケーションで共通の処理 ( お約束コード ) を framewok が提供 </li></ul><ul><li>起動や停止、リソースやアクション、セッション状態の管理などを framework が吸収 </li></ul><ul><ul><li>Windows クローズ </li></ul></ul><ul><ul><li>ウィンドウサイズやレイアウト情報の保存 </li></ul></ul><ul><ul><li>など </li></ul></ul><ul><li>いくつかのカスタマイズポイントのみプラグインしていく </li></ul><ul><li>イベント・ディスパッチ・スレッドの外で実行する非同期アクションの作成も可能 </li></ul>
  12. 12. VM 関連の変更点 ( 予定 ) <ul><li>Versioned JARs/Package Management </li></ul><ul><li>More Scripting Engines </li></ul><ul><li>New Javadoc Tags </li></ul><ul><li>Tiered Compilation </li></ul>
  13. 13. Versioned JARs/Package Management <ul><li>Java Module System (JSR 277 、 294) </li></ul><ul><ul><li>「あるプログラムが Xerces 2.6 ではなく、 Xerces 2.7.1 を要求する」などが可能 </li></ul></ul><ul><li>JMS は下記の機能を提供 </li></ul><ul><ul><li>JAM (Java Application Module) </li></ul></ul><ul><ul><li>リポジトリ </li></ul></ul><ul><ul><li>など </li></ul></ul><ul><li>JAR 単位の配布ではなく JAM 単位の配布 </li></ul><ul><li>JAM の情報 </li></ul><ul><ul><li>インポートするモジュール </li></ul></ul><ul><ul><li>エクスポートするクラス </li></ul></ul><ul><ul><li>など </li></ul></ul><ul><li>JAM の内容 </li></ul><ul><ul><li>メタデータ </li></ul></ul><ul><ul><li>モジュール (JAR 、ネイティブライブラリ など ) </li></ul></ul><ul><ul><li>リソース ( ファイル など ) </li></ul></ul>
  14. 14. Tiered Compilation <ul><li>Client/Server HotSpot VM の混在 </li></ul><ul><li>Client VM は起動が速く、 Server VM はパフォーマンスが漸近的 </li></ul><ul><li>起動時は Client VM で起動し、その後 Server VM に変更する </li></ul>
  15. 15. URLs <ul><li>JDK 7 Project </li></ul><ul><ul><li>https://jdk7.dev.java.net/ </li></ul></ul><ul><li>Java 7 and Beyond </li></ul><ul><ul><li>http://www.cafeaulait.org/slides/nycjava/java7/index.html </li></ul></ul><ul><li>2007 年の Java: この 1 年を占う </li></ul><ul><ul><li>http://www-06.ibm.com/jp/developerworks/java/library/j-java2007.shtml </li></ul></ul><ul><li>Super Package </li></ul><ul><ul><li>http://journal.mycom.co.jp/articles/2007/05/10/javaone3/002.html </li></ul></ul><ul><li>JAM 、 JMS </li></ul><ul><ul><li>http://journal.mycom.co.jp/column/jsr/012/index.html </li></ul></ul>
  16. 16. ありがとうございました
  17. 17. 予備資料
  18. 18. Type Interface <ul><li>コンパイラが推測できる型の省略可能 </li></ul><ul><ul><li>ローカル変数の型 </li></ul></ul><ul><ul><li>など </li></ul></ul><ul><li>void method() { List<String> list = new ArrayList<String>(); … } </li></ul><ul><li>void method() { list := new ArrayList<String>(); … } </li></ul><ul><li>final として宣言される?? </li></ul>
  19. 19. Arbitrary Precision Arithmetic <ul><li>無限精度の演算の簡略化 </li></ul><ul><li>BigInteger low = BigInteger.ONE; BigInteger high = BigInteger.ONE; high = high.add(low); </li></ul><ul><li>BigInteger low = BigInteger.ONE; BigInteger high = BigInteger.ONE; high = high + low; </li></ul>
  20. 20. Factory Methods instead of Constructors <ul><li>new キーワードの追加?? </li></ul><ul><li>Foo f1 = Foo.new(1, 2); </li></ul><ul><li>Foo f2 = Foo.new(subclass of Foo.class, 1, 2); </li></ul>
  21. 21. 今後の Java でサポートされない可能性の高い機能 <ul><li>多重継承 </li></ul><ul><li>演算子オーバーロード </li></ul><ul><li>AOP </li></ul><ul><li>プリプロセッサ / マクロ </li></ul><ul><li>多重ディスパッチ </li></ul><ul><li>複数戻り値 </li></ul><ul><li>By Peter von der Ahe at JavaOne Tokyo 2005 </li></ul><ul><li>「可読性」「シンプルさ」「互換性」の維持 </li></ul>
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×