ウィリアムのいたずらの、まちあるき、たべあるき

ウィリアムのいたずらが、街歩き、食べ物、音楽等の個人的見解を主に書くブログです(たま~にコンピューター関係も)

JavaをWindowsにインストール(最新版のLTSを)

2023-04-24 07:15:40 | JavaとWeb
ORACLEのJDKは、以下にある


https://www.oracle.com/java/technologies/downloads/


最新版はJava20だけど、これは2023年9月(Java21)までのサポートなので
2024年9月まで利用できる最新版のLTSであるJava17を入れてみる。


Windows版Java17は
https://www.oracle.com/java/technologies/downloads/#jdk17-windows
にある。


x64 Compressed Archive
x64 Installer
x64 MSI Installer


の3つがある。下の2つはどっちでもいいけど、
せっかくだから一番下のx64 MSI Installerをダウンロード
(URLリンクをクリックする)


ダウンロードすると、jdk-17_windows-x64_bin.msiっていうファイルが
できているので、それをダブルクリック


NEXTをクリックし続けて(2回かな?)でOKだけど、
途中、なにも動かなくなったら、裏で
「許可しますか」というダイアログがでているはず。
そしたら許可するほうのボタンをクリック。先に進む


Successfully Installedというのが1行目に出ていて、
下にcloseボタン、ちょっと左上にNext Stepsという
ボタンが出たダイアログになったら、正常にできているので
closeボタンを押してもいいし
Next Stepsボタンをおしてもいい。


Next Stepsボタンをクリックした場合、
https://docs.oracle.com/en/java/javase/17/index.html
というページが開く。
ってことで、その場合でも、
まあ結局「close」ボタンをクリックするんだけどね(^^;)
(上記ドキュメントページは
「スタート」→「Java Development Kit」→「参照ドキュメント」
 で開けるので、上記「ページが開く」で開いたページをクローズしても
 大丈夫)


  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

「Visual Studio Codeを利用したJava開発環境の構築方法について」のありか

2022-01-28 08:55:23 | JavaとWeb
昨日(1/27)のJJUGナイトセミナー「開発環境の最前線」
の前半戦、寺田さんの

「VS CodeでJavaのアプリ開発ができるってご存じですか?」

のセミナー、「動画でやります!」ってことで、動画を流したけど、その動画

「Visual Studio Codeを利用したJava開発環境の構築方法について」

は、これ



ちなみに、動画内容はこんなかんじ

・JDKインストール
 Microsoft BuildのOpenJDK(プレビュー版)
       Visual Studio Codeでやるには、JDK11以上

・Visual Studio Codeを入れる
   →Cording Pack for javaを使う
 エクステンション
 日本語対応
 各種エクステンションインストール
  Spring Boot関係、
  マイクロプロファイル
  チェックスタイル

・プロジェクト作成
 ソース作成
 ターミナル表示
 構築

 Quarkusの場合

 リファクタリング

 デバッグ
 →Quarkusアプリをデバッグモードで

・Azureへデプロイ
       Mavenプラグイン
    azコマンド
       Advanceツール

・Git hubにプッシュ

【クラウドでの開発】
・Codespaceについて

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

JAVAの最近のLTS(Java17)とそれ以降の話も聞いてきた!

2021-11-26 09:18:43 | JavaとWeb
昨日は17までだったけど、17以降の話も
11月21日のJJUG CCC
「Head toward Java 17 and Java 18」
で、話を聞いてきたので、以下メモメモ


●自己紹介

●メインはJava17
 2021/9/14リリース。3年ぶりのLTS

●LTS
 長期サポートバージョン
 OpenJDKコミュニティ:半年ごとにバージョン上げる
 3年ごとにLTS
 (ただしOpenJDKはバイナリを作っていない)
 2年ごとに変更する提案あり
 →Oracleはそうする予定

 CSR:日互換性をともなう変更のあるレビュー

 NEW API since Java 11 というのがある

・用語
 インキュベーター:試験機能

●Java17の機能
【追加機能 10個】
・内部APIの隠蔽強制的になる→使えない
 所属しているクラス jdepsコマンドで確認
・MacOS(Apple Sillicon)対応
・Java2DAPIのMacOS対応
・疑似乱数生成(PRNG)の改善、新API提供(java.util.random)
・Java9のデシリアライズのフィルター
 filter factory経緯で指定できる
・メモリAPIの提供(使いやすいJNI) 細かいAPI変更有
・VectorAPI
・浮動小数点の計算が厳密になる
・パターンマッチングがswitch文で(プレビュー)ガードパターン、カッコつきも
・シールクラス標準に昇格(継承、インターフェースを制限できる)

【削除・非推奨 4つ】
・AppletAPI非推奨
・セキュリティマネージャー非推奨
・RMI Activation削除(RMIそのものは非推奨でも削除でもない)
・一部のコンパイラ削除

【その他】
・ロギングの非同期出力
・TLS1.3デフォルト(いままでは1.2標準)
・Unsafe一部削除
・JDKフライトレコーダーに新しいイベントなど

・GCの性能改善
 ZGC
 G1GC

●Java18
・Java APIのcharsetがUTF-8デフォルト
・Simple Web Serverの提供
・JavaDocでコードスニペット対応
・VectorAPI


  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

JAVAの前のLTS(JAVA11)から、今度のLTS(JAVA17)までの差分話を聞いてきた!

2021-11-25 09:00:28 | JavaとWeb
ちょっと前だけど、
11月21日にあった、JJUG CCCの
「最新 LTS Java 17 でプログラムが書きやすくなるという話」
で、JAVAの前のLTS(JAVA11)から、今度のLTS(JAVA17)までの差分話を聞いてきたので、以下(下線から)、メモメモ



・Java11以降で入ったものの話をします
 レコードクラス等

・自己紹介・会社紹介

・LTSってなあに
2021年9月14日にLTSのJava17
(前のLTSはJava11)
LTS:長期サポートが行われる
3年に1度のペース(2年に1度を検討)

サンプルソースコード、資料
https://bit.ly//3GYJ4n5

●レコードクラス Java16~
 JEP 395
 レコードクラスの宣言 
 public record User(long ld,String name){
}

レコードヘッダ(long ld,String name)
レコードコンポーネントリストlong ld,String name
レコードコンポーネントlong ld
finalなフィールド
大量のボイラーテンプレートを排除
明示的に継承はできない。implimentsはできる
デフォルトコンストラクタは宣言されないが、初期化が暗黙的に
→明示的にコンストラクタをつくることはできる
コンパクトコンストラクタ
メソッド;equalsmhashCode,toStringが暗黙的に→オーバーライドできる
finalなので、フィールドは書き換えられない
エンティティに使うべきではない
 →エンティティは変更可能なことが前提
DTOにするのは、問題ない
JSON変換にはJackson使う
Thymeleaf:SPEl式:レコードでもそのままでOK

●新しいswitchステートメント
→を書くと(switch rule)break文不要
yieldで値を返せる({}とyield省略可能):returnでないこと注意

●Instanceofによるパターンマッチング

●switchによるパターンマッチング Java17プレビュー

●テキストブロック
 文字列の連結を使わずに書ける
 """で始まり、終わり

●シールクラス
 JEP 409
 利用できる場面、それほど多くない
 APIで提供するとき、間違って作成しないために
 enumでも似たことはできるが、柔軟にできる


  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

JAVA15の変更点を聴いてきた!

2020-10-01 08:00:00 | JavaとWeb
そうそう、メモメモといえば、この前(9/28(月) )

【オンライン】 JJUGナイトセミナー「Java 15 リリース記念イベント」
https://jjug.doorkeeper.jp/events/111440?utm_campaign=event_111440_134638


を聴いて、最近出たJAVA15の変更点を聴いたのでメモメモ
https://www.youtube.com/watch?v=c_tyFmgb1lYで見れる
 初めのほうの話でJAVA15の変更点について触れている)



■JAVA15の変更点
(1)削除・非推奨になったところ:4つ
(2)新機能:6つ
(3)プレビュー、インキュベーションなど:4つ

(1)削除・非推奨になったところ:4つ
・Nashorn(Javascriptエンジン)
・バイアスロック
・solaris/SPARCポート
・RMIアクチベーション(非推奨:RMIのアクチベーションのみ非推奨)

(2)新機能:6つ
・EdDSA(エドワーズ曲線デジタル署名アルゴリズム)
・Hidden Class
・UDPの新しい実装(バーチャルスレッド対応。TCPはJava13で対応済み)
・ZGC
・テキストブロック
・Shenandoah(RedHatのGC)

(3)プレビュー、インキュベーションなど:4つ
・パターンマッチング(instanceofによる)
・Records
・シールドクラス
・フォーリンメモリーアクセス:ヒープ外のメモリアクセス



  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Java 14がリリースされて、Javaのバージョンアップの向き合い方を聴いてみた

2020-03-23 08:49:33 | JavaとWeb
この前の、オンライン版?JJUGナイトセミナー

Javaのバージョンアップとの現実的な向き合い方 - Java 14リリース記念
https://www.youtube.com/watch?v=QMUV4h7YbUg

が上記の通りYouTubeにあがっていたので、メモメモ




・自己紹介
・Java14 注目の新機能
 レコード
 JFR(JDKフライトレコーダー)イベントストリーム
 フォーリンメモリーアクセスエリアの話
 Javaパッケージ
 ・・・おいといて、いろんな人たちがコミット
 他にも文法的改善、面白そうな機能

・使いますか
 Java14→LTSではない
  知見をためる
  次17?

・追従は?6か月、3年、しない?
 本心は最新版→使いたいバージョン使えば
 アプリケーションサーバー、下まわり、フレームワークに縛られる
 テストしておく
 Dockerイメージに入っているものになる
 求人のため
 フレームワークのバージョンアップのほうがつらい(Spring)
 ラムダ、モジュール→Java6,7,8使っている人は、いつやるの?
 正論ではやったほうがいい

 6か月:耐えられる証明としてやる

・保守開発でバージョンアップすべき
 脆弱性に対応するのが保守開発
  →正論は置いといて
 ほそぼそとやっている場合(0.5人月)
  →Springはむり
 体制と予算

 サーバーサイドJavaではそんなに・・・
  →だからJavaがはいる

 請負に対する考え方
  →時代的に作って終わりでなくなってきている

・バージョンアップに追従するためにやっておくべきことは
 サイドカーサービス→ルーティング、ロードバランシングなどを担う
  インフラとフレームワークの境界線をうまく切りたい
  ビジネスロジックはサイドカーにHTTP通信する
  →バージョンアップしやすくなる
 Javaとインフラのバージョンアップを別のタイミングにできる
  →ライフサイクルの違うものを分離できる
 横断的関心事を減らしたい

 コンテナがやってくれる

 テスト大事、CI大事。ほかに?
  ろんぼっくはややこしくなるから・・・

 やろうという気、スタンス

 流れが読めない→ビジネスロジックとの分離

 フレームワーク:依存しちゃうと抜けられない

 関数型で書けば?

【質問】追従するとしたら手順は?
 自動テストから
 フレームワーク、ライブラリを上げてからランタイムを上げる
 戻せること→ビジネスロジックが更新してたら?
  →ブランチをきって、両方にロジックを入れる
 Dockerイメージ:戻せる→データ構成変わったら?
 DBを先にあげる?ケースバイケース

・ディストリビューションどれが一押し
 みんなのJava読んでください
 https://www.amazon.co.jp/dp/4297111993

 システムの事情で決まる(システムデフォルト)
  →標準を決める理由がない

 複数言語だとPython,RubyよりJavascriptかも

 組織標準いらない
  →どうしたらいいかわからない

 ディストリビューションのイメージ
  Linux:ちがう そんなかんじではない

 迷うのは決まらないケース:趣味とか

・Java8で稼働中のシステム、これからどうすべき?
 7,6なら:しおずけ?
 9以上にもっていけるか、ビジネス的に価値があるか?
 とりあえずクラウド
 むかしのような大きいサーバーがいる環境では今はない
  →今はコンテナ
 Java11世代のAP 変わりやすい
  jakarta EE はまだまだ
 モノリス、マイクロサービス:やりかた

 Java8の人、変わらないと思って採用した
  →9以降、話が変わった

 ネイティブイメージとそうでないのの共存

 デスクトップアプリ

 2026年までは選択肢を持たせている

 モノリスからマイクロサービスだけではなく、
 システムをリフレッシュしたい

(このへんいろいろはなしてたけど
 はっきりしないのでしょうりゃく)

 15,16で入りそうな機能 →17で?
 
 お金のバランス
 セキュリティー WAFとか手前に
 塩づけ→脆弱性のコスト:それならあげちゃったほうが
 戦略的に塩づけはない?

 OSのアップデートとおなじこと。

 エンジニアが調達できないから、塩漬けする

 コンテナ対応;バックポートされてるけど

 アップデートしたくない理由:
  新規案件8でやりたい人(APサーバーは置いといて)
  8を選んだら11にあげられる気がしない
 Spring Boot Java8で新規案件はないよね

 8に下げてくれと言われた
  →無償で使える8、足並みを合わせる
 ふっと8を入れてしまう
  →CENT OSでインストールしてて。。。
 Oracle JDKからOpenJDKになって、人は不安になる
  →誤解だけど、向き合わないと
  →Python,RubyのSIerが、そこを攻めてくる

 正しい情報で正しく判断するのは難しい
  2000年代 かれているほうがいい
  今      新しいもののほうが安全
   →攻撃のスピードが上がったから
  昔の判断になってしまう
  →Javaはあぶない、Pythonかな?

 Android最近どう?
  あっちから上げる気はない

 正しい:ポジショントーク
 営業さんも混乱する

・他言語に比べ、最近のJava
 ここがだめというのが、減ってきている
  →これから攻めに転じる?
 コード互換性:今書いたソースが10年後動くか

・まとめ:最後にひとこと
 周りの環境大切
 塩漬け:脆弱性きけん
 ダウンロードして使って、コミュニティで使ってる感
 14も通過点
 オンラインイベント、どうだった?→ポジティブな意見

P.Sちなみに、次の動画は
いかにJavaのバージョンアップと付き合うべきか 谷本 心
https://www.youtube.com/watch?v=DTzoPkdicJY

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

「Javaが有償化されたと思っている方いないですよね?」ってことで、OpenJDKの話を聞いてきた!

2019-07-29 09:15:25 | JavaとWeb
7月25日に
JJUGナイトセミナー「JCP 20周年記念 / OpenJDKテイスティング」
https://jjug.doorkeeper.jp/events/94344

に行ってきた!時のメモ



■JCP20周年記念! 浜本さん
・20周年記念のデュークくんもいるよ
Twitter : @jcp_org #JCP20Years

・Javaは成長している
 1200万の開発者
・Javaのフィロソフィー
・オープンな改革
 1995 Javaを開発
 1998 JCPが生まれる
 2006 JavaSE,EEをオープン化
 2010 オラクル SUNを買収
 2017 オープンJDKリリースサイクル短縮、JavaEEがEclipseへ
 →南極以外は7大陸使ってる

・JCPメンバー
 世界各国いろんな方々
 営利団体
 非営利団体&オープンソース
 JUG→80以上
 個人

・Oracle Code One→Java OneがOracle Code Oneになった
 JCPも参加:コミュニティーパーティ

・らっふるチケット

■これからのJDK/JVM 何を選ぶ?どう選ぶ?
 -Tasting OpenSDK Distribution
・諸注意
 ネットにアップしちゃいけないところあるよ
・自己紹介
・免責事項
・なぜマルチプラットフォーム対応のJDKに着目するか
 開発環境とテスト、本番環境でのJDK種類・バージョンによる差異を極力なくす
 リリース早い
 Linux distroに含まれるOpenJDK 古いかも→改元対応、Mystery meat

・その前に:Javaが有償化されたと思っている方いないですよね?
 Java自由化
 現在の主流はOpenJDK with HotSpot
 Java is Still Free

・OpenJDKの歴史
 JDK8まで Oracle JDK 一強

・時代の変化
 8から11で何が起こったのか
  リリースモデルの変更:LTSとnon-LTS
  共有ランタイムではなく、カスタムJREをアプリに組み込むことを推奨
   →まだ過渡期JDK14で配布やりやすくなる
 JDK8までとOpenJDKの違い
  JavaFX→OpenJFX
  モジュールシステム

 11以降は
  OpenJDKとOracleJDKが一緒になった
  グラフィック→フォントが変わってる
  →いろんなJDKがでてくる

・誰がOpenJDKをつくっているか
 Oracleさん(RedHatさんの存在感も出てきてるけど・・)
 アップデートはRedHatさん(OpenJDK)

・改元対応
 13に入れて、そこから前のバージョンにバックポートしていく

・LTSリリースはOracle JDKとRedHat主導のOpenJDKで差異あり
 CPUとPSUがある
 
・OpenJDKProjectの動向把握用の基礎情報源
 JEP:JSRをけん引
 JBS:

・Oracle JDK
 Oracle Open JDK LTSなし
 Redhat OpenJDK
 Azul zulu(ずーる)
 SAP machine
 BellSoft Liberica JDK
 Adopt Open JDK
 Amazon Corretto
 GraalVM
→Oracle OpenJDKを選ぶ人が多いが。LTSないよ

・判断軸
 サポート
 使いやすさ
 どこで運用するか

・コストをどう考えるか
 商用技術サポートは有料
 ITライフサイクルを通じて考える
 
(ここから2まい、SNS禁止)

・JDKディストリビューションにどう接していくか
 開発
  複数のJDKの特徴を把握
  新しい機能リリース

・Java/JVMエコシステムはこれまでと変わらず重要

・ブログ書くまでが勉強会

■OpenJDKカジュアルトーク
・OpenJDKを選ぶときの注意点を教えて!
1.独自機能が多いJDKを利用すべき
2.開発環境と運用環境で同じJDK
3.OS/ミドル・JDK
4.政治

1.独自機能が多いJDKを利用すべき
 利便性VSロックイン
 Java8でJFR?
 標準化される機能を使うのはあり

2.開発環境と運用環境で同じJDK
 グループ内で合わせたほうが、トラブル少ない
 RHEL→Mac版は?
 証明書:デフォルトのルートCAの違いとか

3.OS/ミドル・JDKの組み合わせ
 OS標準のJDK?
 違いは認識

4.政治的なことを気にすべき
  AWS
  民法の改正:動作保証

・とにかく、どのOpenJDKを選べば教えて
 REHL→RedhatのOpenJDK
 Amazon→Corretto
 Azure→Zulu
 バックポートではいってくる
 LTSが主流になっていくのかな?

■連絡
・来月は、OpenJDK作ってる人
・JJUG CCC Fall 11月23日
  Call For Paper 8月20日

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

JDK8でビルドできたものがJDK11だとできないとか、Open JDKの8に移行する話

2018-09-19 08:46:21 | JavaとWeb
OracleのJDKのリリースとサポートがあんなことになってしまい、
傷心モードになっているJavaのエンジニアの心の傷に、てらだよしおさんが、
塩を塗るようなデモをみてきた・・・

9月19日、日本 GlassFish ユーザー会の

【JDK 11 リリース直前】各ベンダーのJDKリリースモデル特集!
https://glassfish.doorkeeper.jp/events/78762


を聞いてきたのでメモメモ

なお、表題の件、寺田さんのデモは最後のほうにでてくる。




■Azul System Your Long Term Java Partner
・会社紹介
・Zing:ガベージコネクション レスポンスいいJVM
・Zulu:エンタープライズ、エンベディッド ARMに対応
・JavaSEアップデート&ロードマップ
 6か月ごとにアップデート:
 Java8の公開アップデート収量は2019年1月
 非LTSリリースを使用するとJDK12から潜在的なリスクが生じる

・Zing ヒープ8TBまでサポート
 ファルコンLLVMに基づく

・ユースケース

Q&A
・ZuluとZuluエンタープライズの違い
  Zulu ダウンロードはできる。それをしただけでは、サポート対象外
  Zuluエンタープライズ 会社で使う場合
  Zuluエンベディッド なにかに組み込んで使う場合。契約が違う


■オープンソースで提供される第二のJVM
 OpenJ9 VMとIBM Javaについて

・OpenJDK/OracleJDK

・IBM SDK for Java Technorogy
 J9VM
 サーバーでの使用に特化している
   クライアント、組み込みは対象外
 2017年までは単独提供なし
 2018年以降は、オープンソース提供

・IBM J9 VM
 IBM内でクリーンルーム開発(Oracleのライセンスに縛られない)
 Power,大型汎用機でも使えるように開発

・特徴
 先進的な機能を率先
   クラス共有
   参照圧縮:64ビット→ヒープが増える:32ビットに圧縮(アラインメント8バイト→3ビット切り捨てられる)
   メトロノームGC

 多彩な問題判別機能
   Java DUMP(Javacore)

・OpenJ9
 オープンソースに
 2段階
  コアの部分 Eclipse OMR Javaだけでない汎用環境(COBOL,PL/I、Ruby)
  OMRの上にJ9VMをOSSとして公開
 EPLとAPLのデュアルライセンス

・2018年以降のIBM
 OpenJDKが正になっている

 OpenJDK+OpenJ9
 IBM SDK forJava

・OpenJDK+OpenJ9
 無償(OSS)
  入手方法(1)
    Adopt OpenJDK https://adoptopenjdk.net

  入手方法(2) Docker Hubから
    https://hub.docker.com/u/adoptopenjdk

・サポートも提供
  IBM Support for Runtime
    年間54800円
  →Oracle:クラウド環境の場合割高になるケースも
 障害サポート

・IBM SDK for Java Technology
  AS400にも対応、IBM JCE(暗号化ライブラリ)
  ソフトウェア同梱(Docker環境のみ単独も)
  LTSを適用

・Dockerイメージの入手方法
 https://hub.docker.com/_/ibmjava/
 ライセンスILAN
 IBMの多くの製品がDocker環境→DB2とかも
 IKS IBM くーばねーてぃす サービス
 プライベート、ベアメタル
  ICP

・OpenJDK 8 2022年までサポート
 Java11も終わり決定していないけど、長期間サポート

・IBM JavaEE アプリケーションサーバー
 WebSphere: Libertyランタイムは軽い
  月額5524円
 Open Libertyというのがでている。

 Oracleさんからパッチ提供を受けている

■”マイクロソフトの”寺田さんからのお話
・Java11のリリースを控えて
・自己紹介
・今後のJavaに関して
  今まで3年に1回
  それがなぜ半年に変わったか?
    IT業界:3年はすごく長い→価値のないものに変わっていった
 →Javaの開発・提供もアジャイル的に
 Windows10 10の中でもアップデート
  今の時代に合わせた話
・JDK10よりDockerコンテナの対応強化
   ヒープメモリの割り当てを調整可能
・JDK11が今月正式リリース
  ぜひ、早めに触って→結構大変!
 でも:
  JDK8だと動くけどJDK11→エクセプションが出て落ちる
 今まで動いていたアプリが11だと動かなくなる可能性がある
 あげていただきたいんです!
 早めにどっちの問題か、(製品側の問題か、自分たちの問題か)

・JDK11から削除されるパッケージ
  XML系、CORBAが取り除かれる!
 自分が作ったアプリなら→依存関係を追加する

・なぜ11へ 
 カスタムのスモールJDKの作成:小さいオブジェクトのものが作れる
   →Dockerに組み込んで

■お知らせ
・RedHatのOpenJDKのサポート
 →ブログを読め
 タグで検索すれば、みつかるはずだ!




【所感】

表題の件は、11になると、XML系などのライブラリが削除されるから。
寺田さんは11にあげてくださいっていうけど、
これじゃ、怖くて上げられない。
OpenJDKに移行して、延命する?

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Spring5の変更店などを聞いてきた!

2018-05-27 18:01:58 | JavaとWeb
5月26日、JJUG CCC 2018 Springに行ってきた!ので、その内容をメモメモ

次に

Pivotal認定講師が解説!ReactiveだけじゃないSpring5&SpringBoot2新機能解説

をメモメモ




・このセッションについて
 リアクティブは対象外

・自己紹介

・会社紹介(これはスポンサーセッション)
 Core Spring(4日間) 800ページ
  ハンズオン 6月28日

・1Coreの新機能
  8ベース、
   9,10,11でも使える
  ロギング

 8ベース
  7未満では動かない
 JDK9,10でも動く(Tomcatはエラー出たけど)
  開発プロセスでは9,10でビルドして確認
  モジュールシステム対応
  Springの各jarは自動モジュール

 モジュールシステム対応
  module-info.javaにrequireする必要あり

・JDKアップグレードの考慮天
 モジュールパスでなく、クラスパス
 バイトコードレベルはJava8
  ASM5が9以上拒否
  Spring5.0はJDK11でも動く予定

・ロギングがより便利に
  spring-jcl
   commons Logging Bridge
   ログバック追加するだけ

 ビルド時のコンポーネントインデックス作成
  spring-context-indexse
   コンポーネントスキャンの遅さを解消
   ビルド時のannotation Processer
  ビルドすると。・・
   コンポーネントしないで
   インデックス利用の注意点:大きなプロジェクトでないと、意味ない
     →小さいと、コンポーネントのほうが早い

 @NonNull/@Nullableがつけられる→IDEで検知できる

・2Web
 HTTP2対応(サーブレット4.0)
 Bean Validation 2.0対応
 イミュータブルなフォーム

 Http2対応
  Servlet4.0対応
   push Builderをコントローラーメソッドの引数で取得可能
   サーバーのHTTP2対応も必要:Tomcat

  BeanValidation2.0
   新アノテーション追加
   DateTimeAPI
   コレクション要素の検証

 WebMvcConfigurerAdapterの非推奨

 イミュータブルなフォーム
   入力を変えられない→Setterいらないはず
   javacの-parametersもしくはデバッグ情報の有効化必要
   SpringBoot2.0+Mavenだとデフォルト
    →まともに動かない。夏か秋の5.1に期待

 例外処理の便利機能

3.Data:破壊的変更有
 APIの変更
 SpringDataJDBC
   Optionalの利用
   メソッド名の変更
 →互換性ない

 SpringData JDBC(ベータ版)
  JdbcTemplateを利用したSpringData
  いくつかブログ出てる

4.セキュリティ
 OAuth2.0対応
  従来はSoringSecurity OAuth2→ほかのライブラリにもあった
  →本体で再実装
 OAuth2には、
   クライアント
   リソースサーバー
   認可サーバー
 の3つのサーバーがいるが、いまのところクライアントだけ
  OpenID Connectにも対応
 リソースサーバは5.1→現時点ではSpring Security OAuth2.0
 認可サーバーはそのあと


 Delegating Password Encoder
  パスワードエンコーダー:ハッシュ化する
  じゅうらいは、平文ではいってしまう。
 →デフォルトが入るようになった
    パスワードのプリフィックスを読んで、適切なパスワードエンコーダに処理を委譲する

5.テスト
 JUnit5対応
  SpringEtention DI機能が使えるようになる
  ParameterResolverを実装→テストメソッド引数でもDI可能

 便利なアノテーション
   Spring JUnit Config,webconfig

6.Boot
 2.0→5.0対応→Java8以上
   Date and Time API使える

 セキュリティの簡素化
   設定をJavaConfigに一本化
   ベーシック、フォーム認証が基本

 アクチュエーターの改良
  デフォルトでURLぷれふぃっぅす 
  デフォルトではindex,helpのみ公開

 エンドポイントの公開設定
  有効かつ公開するとき

・その他;プロパティのリネーム
 spring boot properties migratorという便利ツール出ている
  →ただし、ずっと使うものではない


  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Variable Handlesって、何?

2018-05-27 12:58:41 | JavaとWeb
5月26日、JJUG CCC 2018 Springに行ってきた!ので、その内容をメモメモ

こんどは

■Java 9 Variable Handlesのイロハ(JavaSE基調講演)

をメモメモ





VarHandles

・自己紹介
・今日の内容
  あちこち適当に
  Javaのメモリモデル
  MethodHandles
  ごきぶりほいほい

・valhalla
  ばはら=天国に行って支配→ばりゅーたいぷすと発音似てるから
   Project ぱなま Javaとねいてぃぶつなぐ・・

  Value Types
  ジェネリックの特殊化
  VarHandles→これは出ている

・余談その1 まいこん
 PEEK POKE 任意のメモリのアドレス値を取得・設定
  →アセンブラ
 sun.misc.Unsafe
  JDKの内部機能を直接呼び出す内部インターフェース
  これを使ってメモリを操作できる

  リフレクション、シリアライゼーションの利用から、CPUの使用率を見るため・・・まで
  Sun以外の利用は想定外
  RTじゃないとだめにした→破る方法見つかる

・Unsafe Demo!
  Java10だとできない
  すぐクラッシュする

・JDK→9からアクセスできなくなる
   メモリ管理    valhalla
   メモリレイアウト panama
   メモリアクセス  Arrays2.0
 
  細かいメモリモデル varHandles

。varHandles
 3つクリアすればいい
  C11/C++11のメモリモデルに合わせる
  j.u.cのatomicのような変数の変更もできる
  sun.misc.UnsafeのメモリアクセスのAPIをリプレース

・C++メモリモデル
 Happenes-Before
Atomicメモリアクセス

 従来のJavaのメモリモデルより細かい
   データの単位ではなく、アクセスの単位で決める
   ほかの言語などで導入されている傾向がある

・Atomicのような変数
  C++→3つのステージ よみこみ たして 書き出し
   →syncronizedを使う:重くなる

   ごきぶりほいほいはロックと似ている
     一回入ったら、もうでない

  Atomicクラスを使う→オーバーヘッド高い
    2つのオブジェクトになる:オーバーヘッド

  unsafeを使う:Java9ではできない

・varHandle
  methodHandleの知識は不可欠


・method Handle→ダビンチ マシン プロジェクト
  メソッドハンドル→関数ポインタ
    リフレクションよりパワフル
      コールサイト:Javaレベルのリンキング

  リフレクションAPIより効率的:代わりに呼ぶ
  フィールドのアクセスができる(単なる関数ポインタではない)

  MethodHandleの魅力
    生成時のアクセスチェック:
    シグニチャ・ポリフォーフィズム
     invokeExact
     javacで使うときに生成

  varHandleで作る
     compareAndSet,読み込むにはget

・Atomic以外
 必要な時だけvolatileとしてアクセスできる

・まとめ
 varHandleは普段使わない
 methodHandleは役に立つ
unSafe使うな

<HR>

【所感】

で、Variable Handlesって何?

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

JUnit4とJUnit5の違い(境界値テストのパラメータ化の際等、いろいろと)を聞いてきた!

2018-05-27 09:55:57 | JavaとWeb
5月26日、JJUG CCC 2018 Springに行ってきた!ので、その内容をメモメモ

はじめに

まだまだこれからJUnit5入門

をメモメモ




・まあ、まだそんなに使ってないよねJUnit5
・JUnit5とは
 Javaのテスティングフレームワーク
 ながらく4が使われていたが、その光景
 API/アーキテクチャの全面的な再設計
 17年9月からGAリリース
 1.8いこうでないとX、ラムダ式のアサーション

・テスティングフレームワークに何を求めますか
 簡潔さ
 可読性
 一貫性

・イントロダクション
  何がよくなったのか
   テスティングフレームワークにとって大事な部分がちゃんと進化

   代わりに失ったもの:互換性
    1.8+、パッケージ異なる。構造化テスト、パラメータテスト異なる
    フレームワーク、IDEの対応状況
    mavenはびみょーなところも

・セットアップ(maven前提)
  JUnit4 pom.xml シンプル
  JUnit5 pom.xml なんか増えてる・・これ何?
    →マルチモジュール構成:用途、環境に合わせて適切なものをインポート
  JUnit5 = JUnit Platform   実行基盤
       + JUnit Jypiter 新テストAPI
       + JUnit Vintage マイグレーション

 代表的なモジュール
   JUnit jupiter-api アノテーション多い
   JUnit Jupiter -engin
   JUnit platform launcher これないと、eclipseで動かない

モジュール間の依存関係:公式に出てる・・・よくわかんない
   pomで指定するのは多くない

 pom.xml
   junit jupter engin
junit platform lancher
Mavenならjunit platform surefine provider
Gradleは4.6からネイティブサポート
 →5.2からはBOMを使う

・シンプルなテスト
 @Test
  JUnit4と、ほぼ同じだか、パッケージ異なる
  @org.junit.jupiter.api.Test ハブリックでなくてもOK(プライベートはX)

 事前処理、事後処理
   @BeforeAll
   @BeforeEach
   afterもおなじ

 実行を無視する @Disabled reasonにメモ書きできる

 テスト名の表示:@DisplayName(Mavenではまだ)

 --- ここまでは大体JUnit4と同じ ------

・アサーション
 org.junit.jupiter.api.Assertions
 assertEquals 基本使い方は同じだが、引数の順番が変わった
 グループ化:
   JUnit4:途中のassertに失敗すると、次のassertは実行されない
   JUnit5:assertAllラムダ式を渡す。渡した式が、検証に成功すると、成功になる

 例外の検証
   JUnit4:@Testのexpectedに例外クラスを指定する→投げられたメッセージの検証はできない
       →外側でcatchしてしまう
   JUnit5:assertThrows 例外を投げるメソッドは、ラムダ式の中で実行

・使いたくなってきました?

・構造化テスト・パラメータ化テスト
 構造化テスト
  テストクラスは複雑になりがち→似たようなテストは何とかしてまとめたい
  JUnit5: @Nested
      @Testと並べて書ける

 パラメータ化テスト
  引数だけ違うテストをまとめて実行したい
   境界値テストなど
  JUnit4:@Theory
  JUnit5:pom.xmlにパラメータを追加
   @ParameterlizedTest
   @ValueSource:ほかにもソースの指定あり(@methodSource)

・拡張モデル
  JUnit4では拡張方法2つ
   Runner
   Rule
  JUnit5
   extention
    @extendsWithで指定する(複数可)
    BeforeEachCallbackなど拡張ポイントいろいろある

・マイグレーション
 戦略
  1.JUnit5で書き換える
  2.Vintageで動かす

 書き換える場合
   引数の順番が変わった

 JUnit Vintage
   既存はVintage,新規はJupiter
   4と5、ごちゃませにしないようにしたい

・まとめ
  (おぼえるのが)はやい、(かき)やすい、うまい
  IDEの対応状況
  ユーザーガイド一読

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

「なくなるJava SE無償版」って、まじ!(@_@!)

2018-05-21 22:12:25 | JavaとWeb
米オラクル(Oracle)はこれまで、Java開発実行環境「Java SE」(Java Platform, Standard Edition)を無償で提供してきた。ところが、2018年9月からは有償版しかなくなる

ま、まじ(@_@!)

【詳しくは&上記引用元(5月24日5時まで見れる)】
なくなるJava SE無償版、ユーザーはどうなる
http://tech.nikkeibp.co.jp/atcl/nxt/column/18/00294/051700002/

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

JavaEE8の後、Eclipseが引き取り、EE4JじゃなくってJakarta EEになった?

2018-04-30 16:54:27 | JavaとWeb
前に、

JavaEE8のあと、Eclipseが引き取って、EE4Jになる件
https://blog.goo.ne.jp/xmldtp/e/5bcbb2505950b26418ab54bf615079d6


っていうのを書いたけど、

Jakarta EEをサポートするワーキンググループがEclipse Foundation内に設立
http://www.fujitsu.com/jp/products/software/middleware/busi
ness-middleware/interstage/resources/news/topics/2018/0424/

の話をみると、EE4Jじゃなく、Jakarta EEになった?


  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

イマドキのJavaScript

2017-12-28 09:30:11 | JavaとWeb
書き方まとめがあったので、URLをメモ

イマドキのJavaScriptの書き方2018
https://qiita.com/shibukawa/items/19ab5c381bbb2e09d0d9

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

JavaSE9のつぎは、18.3じゃなく、やっぱ10にする、テヘペロ(^^;)だって

2017-11-20 12:05:38 | JavaとWeb
11月18日にJJUG CCCに行ってきた!
つづき
(表題の件は、一番初め「JDK新しいリリースモデル」)





■JDK新しいリリースモデル
・Java One前後から情報が出ている
 この資料は、共有できません
 →情報的に動くため

・JavaSE9
 けいでんす:リリースモデルを変えるぞ!
 JDK 9
   7のとき、理想高かった
   7で考えていたものが乗った
 91の機能UP

・リリースサイクル長い
 大きな機能を待つ:小さい機能が待たされる
 言った通りに出してくれ!!!
   2年おき、本当かよ!(理想です)
 ライセンスモデルの問題:再配布不可

・他の言語と比べてみる
  Go:半年に一度
  Java:間延びしてきている

・JavaSEの選択肢
  Oracleから
  OpenJDK

・JCPがOKすると出せる
  ジグソー:1回目ひけつ

・新しいリリースモデル(きのう現在)
 まえから・・・だいぶかわった!!

 より計画的なリリースサイクル:6か月ごとメジャーバージョン

 だすのはOpenJDK
 削除提案と、削除も6か月の中で行う

 OpenJDK=無償で使ってもらうもの、バイナリーも出す
 オラクルも暫定期間出しているが、ゆくゆくは。。。
 同じ機能に機能強化:1年後

 GPLにする
  & クラスパスえくせぷしょん
 
 商用サポート継続、コミュニティ継続

・OpenJDKの強化
  アプリケーションクラスデータ共有
  Zガベージコレクター

・従来のリリースモデル
  従来:技術的な差があった
  2年に1度のリリースが目標だった
  長期サポート
  更新リリース

・新しいリリース
 技術的な差なくなる
 6か月に1度
 リリース重複期間なくなる
 Oracleはサポート8年間、帰納更新はしないセキュリティパッチ

・11が出てくるタイミングでOracle JDKはなくなり、
 LTS版のみになる

・18.3、18.9を、インクリメンタルな数字に戻した
 JavaSE9のつぎは、18.3じゃなく、やっぱ10にする、テヘペロ

・これからは、シングルソースコード

・いまは、OracleJDKもバイナリ提供

リリース情報
・OpenJDK:いままでどおり
 10のearly access版も
・リリースノート
 削除されるAPIがリストアップ
   CORBA関連なくなる
→1年後に機能がなくなる

・JCPが仕様の承認は今のところ変わってない

・公式アップデート終了のスケジュール
 8 無償アップデート終了 2018年9月
 9 無償アップデート終了 2018年3月
10 無償アップデート終了 2018年9月

8までのバージョンの移行先は、11以降

商用サポート

デプロイメントテクノロジー:サポート短くなる
 (アプレット使ってる場合注意)

・直近のアップデート
 JDK 10 Early Access ビルド
 OpenJDKでもLTSサポートという話が出てきた
  今後の情報に期待
 jlinkを使ったパッケージ
 32ビット版のバイナリ提供はない(9でもない)

■ついにきたリアルタイムSpark
 ビッグデータ処理の新定番SnappyDataとは

・SnappyData知ってる人・・・0
・自己紹介
・現在のビッグデータ処理の課題
  複数プロダクトを組み合わせて複雑
  時間かかる
  パフォーマンス悪い
  キャッシュだと速いが・・・

 よくある要求

  RDB→分析はDWH

 ビッグデータ
  NOSQLでスケールアウト→分析SQLおんHadoop→ストリーミング

・技術を積み上げると、つぎはぎのシステムになりがち
  TCO増大
  非効率
 Spark登場後はかなりシンプルになったものの
  Spark,ふりんく
 →SnappyDataは1つでできる

・SnappyData:データベース機能を備えたSpark
 ベースとなっている製品がインメモリ

・主要機能
 Sparkのコア、マイクロバッチ
 分散インメモリ:ローテーブル、インデックス

・SnappyData
 インメモリデータベース
 データ保持形式
 クラスター統合
 SparkSQLを高速化

・(1)インメモリデータベースにデータを保持している


・(2)Sparkと同一のデータ形式で保持している
 違う形式だと:型変換、シリアライズ・でシリアライズ

・(3)Sparkとインメモリ―DBのクラスターを統合できる
 もう一つのクラスターモード(参考)
  別々にして個別にスケールアウトもできる

・(4)SparkSQLを高速化している
 DAGがそもそもちがう
 ステージまとまってる:通信起きていない
 SQLワークロードを一部いじって高速化


・SnappyDataの使い方
 クレジットカード不正使用検知システム
  SQLで書ける
 ・ストリームデータ処理:マイクロバッチストリーミング
  コンテニュアスクエリー:Window指定
  テーブルをつくるのもDDLと同じ
  
 ・トランザクション処理
  データの追加。更新、削除が可能

  データの特性によっててーうる形式を使い分けることも可能
   Row table,column table

  レプリケーション、パーティションを使い分ける

  トランザクション処理もRDと同様に使用可能
   一部出来ないものもあるが、近い形で

  P2P型アーキテクチャ
   書き込みもスケールアウト

 ・アナリティクス処理
  リアルタイム分析:近似クエリ、TOP Kテーブル

  サンプリング技法を活用
   →サンプルテーブルを作る方法と直接クエリーする方法がある

  TOPKテーブル
   →CREATE TOPKテーブルでOK
    たぶろう、ちぇっぺりん、ずーむでーたでみよう
  
  JDBCアクセス

 ・サマリー
  Spark100%コンパチブル
  SparkといんめもりーDB統合
  テーブルとSQL
  高速化

■最近のDeep Learning事情とJava
・自己紹介

・仕事でDeepLearningしてるひと ちらほら

・DeepLearningの歴史と経緯
 人工知能:1956~
 機械学習:
 深層学習:

2012年のDeepLearning
 ILSVRC:ヒントン教授(2006年から)
 Googleの猫

2014年のDeepLearning
 AIに仕事がう会われる
 DeepMind買収
 ドワンゴ人工知能研究所
 画像から文章

2015年 あるふぁごー

AIの定義は明確に決まっていない

・アトム:強いAI
・弱いAI:これだけならできる、専用機:ディープラーニング

・ディープラーニング

・ディープラーニングの基本的な原理
 基本的な原理の一部のみです

 ニューラルネットワーク
 ニューロンモデルをつなげた
  入力層:データのベクトル化
  出力層:どう表現するか

 学習するとは:落ち着くところに向かっていく

 畳み込みニューラルネットワーク
  畳み込み層 プーリング層

 再帰型ニューラルネットワーク(RNN)

・ディープラーニングの教科書が出た
 パターン認識と機械学習は9年前
 ディープラーニング

 これならわかる深層学習入門
 仕事で始める機械学習(Python前提)

 ハード面
  GPU
  なぞのUSB
  Alphago Zero

 DeepLearning資格
  ジェネラル、エンジニア

・DeepLearningとJava

 DeepLearning for Java
 DL4J
 
 Python:ライブラリ豊富

 フレームワーク
  exampleでやれることを確認(今日からDL4J)
  githuで質問
  ユーザーグループある
  11月30日にイベントある

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする