Future Tech Night #10 に行ってきた #future_tech_night

Future Tech Night #10 に参加しました。オンライン開催。簡単に所感をまとめます。

future.connpass.com

所感

前半は Java 8 から Java 16 で追加された API のおさらいみたいな感じでした。Record の機能は Lombok でまかなえるっていう意見が TL で流れてたけど、標準機能として提供されるところに価値があると思う。

後半は Tomcat の話。Tomcat のコミッターで 詳解 Tomcat の著者。マニアックというだけあって、知らない内容もあってとても参考になりました。

今週末は JJUG CCC かー。

以下、メモから抜粋。

Javaレガシー言語からモダンな言語へ。どこまで知ってる?Java最新事情!

  • Java 8 から Java 16 の API おさらい
  • ラムダ式
  • Stream API
  • Optional
  • Date and Time API
  • var
  • HttpClient (HTTP/2)
  • Switch 式
  • テキストブロック
  • Record
  • instanceOf
  • Sealed Class

Future では 14 を使っているところが多い。16 へのバージョンアップもあるかも。バージョンの追随はコストとの兼ね合い。deprecated な API の調査が大変。

Tomcatコミッタがお送りするちょっとマニアックなコンフィグレーション10選

  • 設定値を外部リソースから読み込む
  • ポートオフセット
  • JSON Error Report
    • デフォルトの HTML ではなく JSON で返す
  • StuckThreadDetectionValve
    • 閾値以上、スタックしたスレッドの stacktrace が出力される
    • スレッドダンプのようなロック情報は見れない
  • レガシーアプリケーションベース
  • 静的クラスタメンバーシップ
    • クラスタリングのメンバーシップはデフォルトではマルチキャスト
    • StaticMembershipService
      • IPアドレスをキャッシュしているので要注意 (今後修正予定)
    • CloudMembershipService
      • k8s 向け
      • Pod に対して Cloud メンバーシップを設定する
      • 公式ドキュメントには記載がない (GitHub を見よう)
  • 組み込み Tomcat のコンフィグソース
    • new Tomcat() したあとの設定はどうするか
    • ConfigurationSource
    • CatalinaBaseConfigurationSource
      • server.xml をパースして設定してくれる
    • -generateCode 起動オプション
  • 多言語対応
    • ログは環境に合わせた言語で出力される
    • POEditor
    • 変なのがあったらコントリビュートしましょう
  • Tomcat 10 以降のバージョン体系
  • TomcatJava EE のサブセットをサポートしている
  • Tomcat 10 は Jakarta EE 9 をサポートする
  • Jakarta EE と併せて Java EE 8 は長めにサポートされそう
  • 自分のアプリケーションをどのバージョンの Tomcat で動かすか
  • Apache/Tomcat の通信は HTTP にした方がよい
    • AJP脆弱性があるため今後はやめる方向になりそう