110707 java se7_lt_tanaka

1,464 views

Published on

Published in: Technology, News & Politics
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,464
On SlideShare
0
From Embeds
0
Number of Embeds
412
Actions
Shares
0
Downloads
5
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

110707 java se7_lt_tanaka

  1. 1. 業務アプリ開発者から見た<br />Java SE 7に期待すること<br />田中 孝佳<br />2011/07/07<br />1<br />
  2. 2. 自己紹介<br />㈱ワークスアプリケーションズ所属<br />ERPパッケージの会社です<br />研究部門 クラウド担当<br />お仕事<br />サーバーサイドJavaで開発<br />クライアントはSilverlight使ったり<br />Oracle DBの調査担当<br />自動化できる処理は大抵Javaバッチで書く<br />スクリプト言語よりJavaが好み<br />2011/07/07<br />2<br />
  3. 3. ちょっと昔を思い出して・・・<br />2011/07/07<br />3<br />社会人になってからプログラミングを本格的に始めました<br />最初はJava<br />当時は2007年<br />すでにJava SE 6が出てました<br />なので、最初からGenericsありの世界でした<br />Java SE 7が、私がプログラミングを始めてから<br />最初のJavaのバージョンアップです<br />
  4. 4. というわけで・・・<br />思い入れのあるJavaのバージョンアップに関して、業務アプリ開発者の視点から期待していることを話します<br />2011/07/07<br />4<br />
  5. 5. 業務アプリでのJavaの使いどころ<br />アプリケーションサーバー<br />SEじゃないけど、SEの技術は使われる<br />JavaEE7に期待!<br />特にクラウドと銘打たれているあたり<br />バッチ処理<br />インストーラーなど管理ツール<br />2011/07/07<br />5<br />
  6. 6. 注目しているVerUP内容<br />2011/07/07<br />6<br />
  7. 7. IDEの対応状況<br />2011/07/07<br />7<br />
  8. 8. Fork/Joinのないとき<br />Java6の並行処理<br />ExecutorServiceをよく使っていました<br />タスクに依存関係がないのが前提です<br />タスクに依存関係があると<br />安全性を担保するためには、適切な排他制御が必要<br />するとパフォーマンスが落ちる or排他制御が漏れてデッドロックが起きる<br />結局、適用しづらかった<br />依存性のないようにタスクを設計する必要あり<br />2011/07/07<br />8<br />
  9. 9. Fork/Joinのあるとき<br />分割統治なタスクの並行処理がしやすくなる<br />グループごとに集計して、その結果をグループ同士で演算するとか<br />でも、そんなに単純に使えるケースばかりでもなさそう<br />Java SE 8への期待<br />Concurrent Frameworkのさらなる発展<br />ラムダ式と組み合わさった機能<br />コレクションの要素に対する演算を裏で勝手に並行処理してくれるとか。<br />2011/07/07<br />9<br />
  10. 10. NIO2:ファイルシステムAPI<br />インストーラーなどで結構使います<br />所有者、アクセス権の変更とかも意外と必要<br />鍵ファイルを読み取り専用にするとか<br />java.nio.attribute.AclFileAttributeViewで所有者とかACLを操作できる<br />ファイルシステムに依存<br />2011/07/07<br />10<br />
  11. 11. NIO2:ファイルシステムAPI<br />java.nio.file.SimpleFileVisitorでディレクトリをVisitor的に探索できる<br />java.nio.file.WatchServiceでディレクトリを監視できる<br />このあたりの機能の起点は、java.nio.file.Files クラス<br />2011/07/07<br />11<br />
  12. 12. java.nio.file.Files クラス<br />2011/07/07<br />12<br />
  13. 13. NIO2:Socket<br />チャネルなどの低レベル通信も、管理ツールなどで使います<br />余談ですが、java.nio 配下のクラスはパッケージプライベートクラスのいい活用事例として読んでいます<br />2011/07/07<br />13<br />
  14. 14. ソースコードすっきり系<br />業務アプリでは(でも?)保守性高いコードは必須<br />今までは結構面倒な書き方が必要だった<br />ProjectCoinですっきりできます<br />ほかの方のLTとかぶりそうなのでさらっと。<br />2011/07/07<br />14<br />
  15. 15. リソースを使ったら片付けましょう<br />2011/07/07<br />15<br />途中で例外が発生すると、正常にクローズされません。<br />finally節にcloseを移すと、そこで発生するSQLExceptionを処理するという面倒なことに<br />
  16. 16. リソース付のtry~catchで綺麗に<br />2011/07/07<br />16<br />これで、あの忌々しいtry~catchのネストともおさらば!<br />
  17. 17. Stringによる条件分岐の連発<br />2011/07/07<br />17<br />Stringだと、if文の連発になる。<br />Enumを使おうとすると、Stringとの対応を定義する必要がある。<br />
  18. 18. StringのSwitchで簡単に書ける<br />2011/07/07<br />18<br />
  19. 19. 例外のキャッチがめんどい<br />2011/07/07<br />19<br />一度にたくさんの種類の例外が飛んでくると煩雑。<br />Exceptionでキャッチしたくなるけど、それはご法度。<br />
  20. 20. マルチキャッチで楽に<br />2011/07/07<br />20<br />
  21. 21. Genericsの記述がめんどい<br />2011/07/07<br />21<br />MapのValueがListなオブジェクトとか、定義するだけで面倒。<br />初期化だけで折り返したくない。<br />
  22. 22. ダイアモンドで簡略化<br />2011/07/07<br />22<br />右辺のGenericsは省略できる!<br />余談:<br />C#だと左辺を省略する。Scalaも似た感じ?<br />DictioanaryはJavaでいうところのHashMap<br />
  23. 23. (おまけ)ブログに書いてます<br />http://dev.worksap.co.jp/Members/t_tanaka/<br />2011/07/07<br />23<br />
  24. 24. 2011/07/07<br />24<br />ご清聴ありがとうございました<br />

×