Java Day Tokyo 2015 メモ
(Qiita:Teamにあげそこなったので)
基調講演
- 20th、コミュニティ、IoT、求人 Gosling
- @gsaab
- Certification for Java8
- Java 8 release
- lambda
- performance (fork/join)
- security
- Pepper SDK, workspace demo
- Java SE 8u40, Java 9 EA build
- Java Embedde
- ルネサス
- RZ/A1 http://japan.renesas.com/products/mpumcu/rz/rza/rza1h/index.jsp
- バス運行通知demo
- Embedded, IoT Cloud Server demo http://www.atmarkit.co.jp/ait/articles/1503/25/news010.html
- Java EE
- 楽天のJCP参加の話
Java EE
- EE8のsurveyの話 https://blogs.oracle.com/ldemichiel/entry/results_from_the_java_ee
- JSON Binding
- Object marshaling
- JSON Processing API
- JSON Pointer, JSON Patch http://silphire.hatenablog.jp/entry/2012/01/06/073300
- JAX-RS
- Server-sent events
- MVC
- HTTP2
- リクエスト多重化、priority制御、Server Push
- Resource injection
- EOD, CDI Aliignment
- EE Security
- annotated, role/attribute restriction
- JMS2.1
- async receive API
- Any EE Beans as listener
- Java EE Management 2.0 Manageent and Deployment API
- => JSR77
- require REST base API
- Password ALIAS
- Users and Groups management (role, user services with repository)
- link
ゴールドマン・サックス
- テクノロジー部
- 自分たちで作る、決済システムとか
- 2000年ごろからやってるらし、JCP Executive Committeeだったりする
- 世界でJavaエンジニア3000人 テクノロジー部は15%
- ヒープ190Gとかコードキャッシュが限界超えるとか
- OpenJDK
- ソース、チューニング、セキュリティのため
- トラブルシューティング、リサーチ
- JVMTI
- 圧縮OOP
- GS Collections
- GitHubにある https://github.com/goldmansachs
- Kataというトレーニングコンテンツもある
- zip, chunk, partition, makeString, tapなどの実装
- foreach文?
- 共変戻り値
- Set/Mapのメモリ効率改善、Bag、BiMapなどの実装
- immutableなコレクション
- プリミティブのコレクション
- 遅延評価を行わないstream API
- Java One 2014でのセッションをjjug ccc springでやるらしい
- Java8, Scalaとのパフォーマンス比較資料 http://www.infoq.com/presentations/java-streams-scala-parallel-collections
- Scala Daysでの発表
Nashorn
- ナスホーンまたはナズホーン
- Rhinoのおきかえ
- ECMAScript5.1
- 相互呼び出し可
- jjsコマンド
functionオブジェクト渡してlambda expression
8u20
8u40
エンタープライズアーキテクチャ
- システムのわけかたと組み合わせ方
- 空間的、時間的バランス
- 利害関係者の関心、将来の変化
- システムの構造とプロセスの決定
- 要素への分解と組立の方法
- さらにリソースとスケジュールを入れるとWBS
- エンタープライズは
- 利害が多い、連携が多く複雑、へんかしづらい、現状とルールが大切
- プロジェクトマネージメントに先立つ構造とプロセス
- 全てfixするのではなく、選択肢を残す決定も
選択 - バランスをとる - ITサービス運営、品質、技術トレンド - ITサービス運営=webっぽい、運用 - リーンスタートアップとか言われた - 満足を得るための持続的な改善、UXっぽい話 - この運営モデル分かりやすい - 継続的な活動を前提とした効率性 - 利用されて評価される
品質 - 多面的、バランスを - 経産省の品質メトリクスセット
- 性能特性、キャパプラはスモールスタートでフィッティングさせてく
- 互換性、コネクティビティ、一般的な仕組みを使うこと
- 共有化、プラットフォーム化
- プラットフォーム、レイヤー化
固有化、マイクロサービス
実践 - ECサイト, フロントの購買システムはアジャイルに、受注管理はウォーターフォールで、などのドメイン分割 - 完璧な選択はできない、観点を持って考え、利害関係者で合意を
覚悟 - 正解がないからこその覚悟 - 最小公倍数じゃなくては最大公約数 - 全員の意見を合わせるんじゃなくて、全員の我慢を得る - 意見に基づいてアーキテクトが覚悟を持って判断 - 銀の弾丸はないが、そうだと思ったら撃ち抜く、銀色にする覚悟を - 妥協はできないが諦めを。判断できないならもっと考える。あきらめたらきちんと未来へ託す。 - アーキテクチャはチームで考える
HotSpot
- HeapStats
- 6u25にtiered compilationがはいってる
- ZeroVM http://openjdk.java.net/projects/zero/
- metaspaceはクラスローダのgc時に消える
- コードキャッシュはいっぱいになるとjitがエラーになる。
- フラッシュ機能が6u21から、7u4からデフォルトオン
- CMSならこの資料 http://www.slideshare.net/YujiKubota/concurrent-marksweep-garbage-collection
- metaspaceならこれ http://www.slideshare.net/YaSuenag/metaspace
コードキャッシュ http://www.oraclejavamagazine-digital.com/javamagazine_open/20130708#pg42
メモリは物理メモリの範囲で
- java8のCompressedClassSpaceが1Gもってく
- スレッドスタックのデフォルトは64bit linuxで1M
- Huge Page
- linuxではカーネルパラメータ
- transparent huge page (カーネルいじらなくていい)
tlbのロードストアでのミスヒットが減る
コアが少ないのにメモり多いとgcつらい、8コア越えるとよい?
numaはオプションつけるとparallel (old)gcできく
@Contended
- JOLで見れる
- CPUキャッシュ上の効率化のためにアラインメントする
- アノテーション、sun.miscなので注意
jit, on stack replacement
- intrinsicsによるバイトコードの置き換えをオフにするとすごい遅い例
- 実行時にcpuidを見て、サポートされた命令セットが使えたらjitで置き換える
sumatra
ツール、serviceability
- jstackとか
- HSDB, CLHSDB (Java Magazine - July/August 2012見るといい)
- serviceability agent よむのおすすめ
- http://www.slideshare.net/YaSuenag/serviceability-tools
トラブルシューティング
- Javaトラブルに備えよう http://www.slideshare.net/agetsuma/java-34815905
- クラッシュ時
- hs_err
- クラッシュしたスレッド、segvかどうか
- コールスタックはJNIで死んでるとき役立つ
- hs_errみつつコアダンプみる
- CIReplay (java8)
- jitクラッシュ時の情報、再現させられる
- ABRT
- hs_errがでないときはネイティブスレッドで死んでるかも