Java Kuche Day メモ
2018/12/8 (土) 13:00~18:00
CODEBASE
プロトソリューション運営
プログラミング教室:HTML・JS・Ruby (1000時間)
インターン
β版ハッカソン
実践者向けイベント (AWS・Android)
イベント募集・コワーキングスペース開放
Oracle Code One 報告 (伊藤様)
Java One.
富士通・楽天から展示
40~50人の参加者(日本人)・10セッション(発表者は参加費無料)
Oracle Open Worldも併設
事前登録日+4日セッション
9時6時
Oracleの方針
Javaをオープン化・有償機能の開放
イノベーションを起こす
エコシステムのサポート
JDK11の各社コミット
2500件・500組織(RedHat、Google等)
内2000件のコミット(Oracle)
Java in a World of Containers
JDKは大きいのでコンテナに入りづらい
Javaランタイムのカスタマイズ
JDK(530MB) -> とても重い
-> Jigsawを用いてカスタムのJDKを作成
Full(300MB) -> java.baseのみ(48MB)
OS分が250MB -> slim版でさらに最適化
Project Portola
20MBのHelloWorld
Monolith vs Microservice
Monolith
- 1つのアプリケーション毎にデプロイ
Microservice
JDK Flight Recoder
- エラーログ等を完全に保存
- JDK11から無償化
JDK 新しいリリースモデル解説 (伊藤様)
JDK 11 API ドキュメント日本語版公開
インストールドキュメント等も順次公開
Oracle JDK の作り方(従来)
- Open JDK (ソースコードのみ。GPL)
- Oracle JDK (バイナリ。FX、インストーラ等を追加。BCL)
- 年4回セキュリティアップデートをOracleからOpenに提供
- セキュリティアップデートの同期が不完全
- バージョン更新までは機能追加なし(まとめて追加される)
BCL
- 社内のみ、非商用で複製可能
これから
- OracleもOpen JDKのバイナリを公開
- GPL
- OpenJDKをそのままビルドしたもの
- 3月と9月にバージョンをリリース (機能追加のみ)
- 1月、4月、7月、10月にセキュリティアップデート
- LTSなし
- セキュリティアップデートあり
- Oracle JDKも提供
- 3年に1回更新 (最低8年間のサポート) LTS
- 6か月ごとの更新も行う
- 長期間の固定バージョンへのニーズに応える
- 有償
- 商用の開発・運用?
- 一部用途は無償
- OracleJDK 11 ライセンスに関する重要な変更
- 社内または個人の開発・テスト・デモ用途
- OTNLA for Oracle Java SE
- ソースコードはOpen JDKから
- 小刻みに機能追加がなされる
JDK 12 Early Access版公開
削除される機能
リリースノートに記載 Removed API
最短1年(2version)で削除
Non-Corporate
JDK 8のライセンス
個人利用に限り2020年までOracle JDKを利用可能
Java SE Subscription
提供されるもの
- サポート窓口
- 商用ライセンスと長期サポート
- 商用機能やツール
- Javaが実行されうるすべてのハードウェアに対応
- 価格体系
- Java SE Desktop Subscription
- デスクトップ向け
- 台数×人数
- 3600円/(年・人)
- Java SE Subscription
- サーバー向け
- 台数×人数
- 36000円/(年・人)
- Java SE Desktop Subscription
詳しくはSlide Shareで スライド公開 がされる
Twitter 4J (山本様)
Duke's Choice Award 受賞
日本OSS奨励賞受賞
Duke's Choice Award
Javaのテクノロジーに貢献した人に与えられる
日本では4回目
カンファレンスパス・トロフィー(木製)がもらえる
5~8月に募集
Webフォームを用いた応募 (無料)
Twitter 4J
Twitter APIをラップするJavaのライブラリ
大手企業の利用実績
今年で11年目
月に10万件のDL
3度目の自薦
Practical Library Design
例外処理について
情報量がおおい (利点・欠点)
原因の特定に時間がかかる
工夫
Spring Framework の今 (津波古様)
Spring One + Oracle Code One の報告
Spring One
2019はTexas州で開催
Spring Framework
Javaのフレームワークの集合体
2004~
1.x Web系のフレームワーク
4.x Spring Boot
4.3 2020年までサポート
5.x
- JDK 8 以上
- Kotlinサポート
- リアクティング・プログラミング・モデル
5.1 Java 11対応
5.2
- 来年公開
- Java 12・Kotlin 1.3 対応
- Graal VMとの完全互換
Spring WebFlux
- リソース使用量の最適化
JDK12
Amber
325:Swiching Expressions
カンマ区切りのcase
- breakなしでスルーする場合に読みやすくなる
ラムダ式風の記法
- breakなしでコードが書ける
Switch文に戻り値が追加
- defaultラベルなしだとコンパイルエラー
break文での戻り値が可能
- ラムダ風記法との併用はNG
326:Raw String Literals
今まではパスを書く場合に大量のリテラルが必要
バッククォートを用いたリテラルが追加
- 改行やエスケープ文字を生で記述可能
ブロックチェーン (大谷様)
サーキュレーション
ブロックチェーンの基礎
ブロックチェーン
-
分散型コンピュータの仕組み
-
管理者が不要
-
パブリックブロックチェーン (世界規模)
-
プライベートブロックチェーン
-
アドレスによりユーザーを識別
- アカウントやアプリでアドレスを管理
-
全ての取引がブロック単位で記録
-
改竄不可
-
データとプロセスが透明化されている
-
国際送金の手間が削減できる
- マネロンの温床にもなっている
-
自浄作用が働くのか?
- 価格操作
- ポルノの公開
- 削除が不可能 (機密情報であっても消せない)
-
価格の変動が激しい
コンセンサスにかかる時間
- Bitcoinなら10分かかる
- Eathereumで15秒
- ペイメント層・Lighting NertWork などが提案されている
マイニング
- チェーンにするための計算
- 最初に解いた人に報酬が与えられる
Gasコスト
- マイナーに支払われるコスト
- 一回で数百円かかることもある
スマートコントラクト
- ブロックチェーン上でプログラムを実行
トークン
- 価値を定義する仕組み
- 貨幣化 (仮想通貨など)
- 証券化
セキュリティ
- 「鍵」でセキュリティを管理
- 管理コストが膨大
ハードフォーク
- 仕様変更時に分裂が行われる
- 入出金の停止
- 会計での扱いが難しい (ユーザーが両方にトークンを持つため)
国家×ブロックチェーン (エストニア)
- エストコインを発行予定
自治体×ブロックチェーン (加賀市)
- ブロックチェーン都市宣言
ブロックチェーンを用いた取り組み
Aragon
- 仮想の会社が作れる
- 組織の基本機能を代理
COLONY
- ブロックチェーン上にチームを作成
- タスクに対してメンバーをアサイン
Blocklancer
- 案件の受発注
- 発注元との問題を裁判する
- レビューを公正に保つ
- 労働契約の透明化
- 労働契約の変更手続き
- Solidityを利用
開発で検討したポイント
dApps
- ブロックチェーン技術を最大活用できる
Web apps
- Web技術が利用できる
- ブロックチェーン技術はわずか
ウォレット
- ユーザー管理・料金徴収が楽
- 利便性は悪い
運営側アドレスの利用
- 利便性が高い
- 運営にGasコストがかかる
Ethereumの操作にはGOが便利!
エンジニアの学ぶことが多い
事業としての数値予測が難しい
外部のセキュリティ診断は受けづらい
Oracle Code One Java SE Update (櫻庭様)
Java Champion
日本に4人いる
Jetbrains IDEが無料?
Moscone Center
OpenJDKをGitHubに移す?
Java is still free
発表者はemacs使い (IDEを使わない)
#WorksLikeHeavenOnJDK11
JEP
Normal
- 完成
Preview
- 9割完成
- JVM
Incubator
- もう少し
- API
Experimental
- まだまだかかる
Preview・Incubatorは1、2バージョンでは正式版になる
Amber
Loom
Panama
Valhara
Local Variable Type interface
- ローカル変数の型推論
- 右辺から推論
- 実はjava 5から型推論はある
- ジェネリクスやラムダ式で型推論があった
- 互換性のある型は再代入が可能
- List.of()にArrayListを代入することはできない
-
Style Guidlines
- 有用な情報を持つ変数名にする
- 初期化子が読み手によって十分な情報がある
- Style FAQ
- ダイヤモンド演算子・引数なしofのコレクションは<Object>になる
Project Panama
ネイティブとJavaを繋ぐプロジェクト
Vector API
==java.util.Vectorではない==
複数のデータを纏めて演算する
- 機械学習
- 暗号
- ハッシュ計算
Scalar Loop
for(i = 0; i < a.length; i++){
c[i] = a[i] + b[i];
}
//遅いのでまとめて計算したい
for(i = 0; i < a.length; i+=4){
c[i] = a[i] + b[i];
c[i+1] = a[i+1] + b[i+1];
c[i+2] = a[i+2] + b[i+2];
c[i+3] = a[i+3] + b[i+3];
}
//4倍速
Vector APIを使うと、コード量は増えるが、データを同時に演算できる
Foreign API
Native呼び出しのプロジェクト
Nativeなコードを使うメリット
- 速度チューニング
- ライブラリ呼び出し
JNI
- JavaコードとNativeコードを記述する -> 面倒
Foreign API
-
JavaのコードからNativeのライブラリを直接呼び出す
-
でも普通はバインドクラスを挟む
-
JNIに比べて非常に簡単にネイティブなコードを呼び出せる
jextract
- Cのヘッダーからバインドクラスを作成
まとめ
Moving Java Forward Faster (Javaはとても速い速度で成長している)
今後の時代において価値のあるエンジニアとして成長していくために (寺田様)
Java Champion
Kubernetes?
人それぞれの幸せの形は違う
今後のアプリ開発
会社・開発者が2極化
デジタル革命
この30年で日本の位置づけが変わった (落ちた)
Netflixがディズニーに迫る勢い
設立年数が若い企業がより早く成長している
Microsoftも危機感
Microsoft ♡ Linux
会社が作ったものを届ける -> お客様の声を聞く
企業運営のリスク
システム導入のリスク
エンジニアにとって、変化(IaaS, Containerなど)は大変 (LOW RISK)
でも、会社にとって、変わらないことはハイリスク
他社の成功例を真似ても意味がない!
自社にとっての最適な構成を考えるべき
優秀な人材は宝
人材の獲得合戦が起きる
年収4000万~5000万からの引き抜き
代行できないことをやるか、自分にしかできないことをやるか
他人から言われたことをやるか、自分から率先してやるか
何歳になっても学び続ける姿勢が大切
35歳定年説など嘘
ITの進化は激しい
今正しいことが将来も正しいわけではない
Javaチャンピオンだって昔は英語もプログラムも得意ではなかった
英語の読み書きの差がエンジニアの差
新しいことでハマった時、英語が出来る方が直ぐに解決策が見つかる
トラブルシューティングだけじゃない!
いつでも変わることが出来る
Dreams Come True
今までは業務の改善がメインだったIT
これからは、身近な世界を変えていける
AI for Accessibility