JJUG CCC 2024 Spring の発表資料です
![ソートできるUUID v7をJavaで使うときの話](https://cdn-ak-scissors.b.st-hatena.com/image/square/ed9d9ec391641d080f1decd5ef4e919a8e497dad/height=288;version=1;width=512/https%3A%2F%2Ffiles.speakerdeck.com%2Fpresentations%2Fb642de510f054da9aef3bbae810f6b7f%2Fslide_0.jpg%3F30653863)
はじめに Gatherer 組み込み Gatherer Gatherers.windowFixed Gatherers.windowSliding Gatherers.fold Gatherers.scan Gatherers.mapConcurrent Gatherer.ofSequential まとめ JDK 22 でプレビュー公開(https://openjdk.org/jeps/461)、JDK 23 でセカンドプレビュー公開(https://openjdk.org/jeps/473) となる Stream Gatherers を学び、正式公開に備えましょう。 はじめに Stream Gatherers とは、Stream パイプラインの中間操作に対する拡張ポイントを提供するものです。 Stream パイプラインは以下のように構築されます。 long numberOfWords =
また、Python3 スクリプトを実行するサンプル、Go との相互呼び出しを行うサンプルもおいてあります。 前置き Jextract とは jextract is a tool which mechanically generates Java bindings from a native library headers. This tools leverages the clang C API in order to parse the headers associated with a given native library, and the generated Java bindings build upon the Foreign Function & Memory API. jextract は、ネイティブ ライブラリ ヘッダーから Java バインディングを機械的に生成するツ
図1:データベースとJavaプログラミング言語のミスマッチ このギャップを埋め、Javaアプリケーションとデータベースのシームレスな接続を実現するために、私たちはさまざまなデザインパターンとアーキテクチャアプローチに依存している。これらのパターンはトランスレータとして機能し、インピーダンスのミスマッチの影響を軽減し、2つの世界を調和して動作させるのに役立つ。 これらのデザインパターンは、車輪の再発明ではない。これらは、アプリケーションとデータベースのパラダイム間のインピーダンスのミスマッチを緩和するのに有効であることが証明されている、確立されたソリューションである。Driverパターン、Mapperパターン、Active Recordパターン、Repositoryパターンなどがある。 Java Persistenceにおけるデータパターンのナビゲート このセクションでは、アプリケーション開
2年前のブログが未だにブクマされるので、念のため掲題の件について書いておきます。 端的に書くと、あのブログで挙げた懸念事項が解消されたのでどんどん使うと良いと思います。 SLF4J v2の安定版がリリースされた 良かったですね。ちなみにv2.0.9から slf4j.provider プロパティでproviderを指定できるようになったので、Service Loaderによるprovider探索をガツッとスキップできます。多くのユースケースでは利用したほうがログの単純化や起動の高速化に有効のはずです。 SLF4Jの活動は最近活発 JIRAのデータを見れば一目瞭然。私もGitHub Issueで回答に回ったりしますが、著者の方も頻繁にコメントしてくれてます。最近のLogbackの脆弱性への対応も充分に早かったのではないでしょうか。 図1 2023年の活動状況。緑の線が6ヶ月近く右肩上がりなのに
Java仕様の決定に関わるエグゼクティブコミッティに「日本Javaユーザーグループ」の選出が確定。立候補理由や今後の活動を聞いた Javaはその仕様策定の過程で、Javaに関係する企業やJUG(Java User Group)と呼ばれるコミュニティなどの組織、個人開発者などが多数参加し議論が行われるJCP(Java Community Process)と呼ばれるプロセスがあります。 Javaが長い間、発展と進化を遂げてきた理由に、このオープン性があります。 このJCPの中で、特に仕様策定の推進や決定の役割を担うのがExecutive Committee(エグゼクティブコミッティ/執行委員。以下、JCP EC)です。 そして今年、2023年のJCP ECの選挙に日本Javaユーザーグループ(以下JJUG)が立候補し、先月(11月)に発表された選挙結果によって、JJUGがJCP ECに選出され
OpenRewrite とは OpenRewrite プラグイン設定 OpenRewrite プラグインの実行 ライセンスヘッダの追加 その他整形 OpenRewrite とは ソースコードの書き換えツール ソースコードを Lossless Semantic Tree (LST) と呼ばれるツリー表現で解釈して検索と変換を行う フレームワークのバージョン移行、脆弱性パッチや大規模なソースコードリファクタリングが可能 Gradle や Maven プラグインとして利用可能 多くは、フレームワークのバージョンアップに合わせたマイグレーションで使われることが多いと思いますが、コード整形用途であらかじめ導入しておくのが便利なのでここで紹介します。 github.com OpenRewrite プラグイン設定 Gradle の Kotlin DSL を例にします。 build.gradle.kts
Vineflower とは コマンドラインでの実行 コマンドラインオプション Vineflower とは レコードクラスやシールドクラス、スイッチ式などの新しい文法に対応(Java 20+)した JVM 言語用のデコンパイラです(Quiltflower 1.9.0 が、Vineflower 1.9.1 と名称変更されました)。 vineflower.org intellij-community の java-decompiler からフォークして、デコンパイラ・エンジン Fernflower を使っています。Fernflower によるデコンパイルは以下が参考になります。 github.com コマンドラインでの実行 vineflower.jar にデコンパイルしたい jar を渡して実行するだけです。 java -jar vineflower.jar <arguments> <sourc
仮想スレッドと synchronized Java 21 で仮想スレッドが導入されましたが、仮想スレッドで synchronized を使用すると、そのキャリアスレッド (1 つ以上の仮想スレッドが動作しているプラットフォームスレッド) からアンマウントできず、スタックしてしまい、synchronized を抜けるまでキャリアにピンニング (固定化) され独占されしまいます。仮想スレッドとかプラットフォームスレッドとかを気にせず、どちらでも以前の synchronized と同じように排他制御するには、代わりに ReentrantLock クラスを使用します。 private final ReentrantLock lock = new ReentrantLock(); public void m() { lock.lock(); try { // 共有リソースへのアクセスなど } fin
こんにちは、SREの戸田です。本日は社内で開催したJVM勉強会(運用編)の一部を公開します。 JVM、使っていますか?弊社ではサーバサイドKotlinが活躍しているので、もちろん日常的にJVMが稼働しています。このためサービス運用の一貫で必要になる知識や関連ツールなどをSREないしプロダクトチームに共有することを目的として、この勉強会を開催しました。 図1 勉強会はGoogle Meetでオンライン開催しました パフォーマンス・チューニング サービスを開発していると、この処理をもっと高速化したい!ランニングコストを抑えてユーザ体験の向上に投資したい!というというシーンには多く遭遇しますよね。こうしたユーザが増えてサービスに負荷がかかるようになったことで生じた課題に対して迅速に打ち手が取れることは、とても重要です。 しかし焦ってはいけません。「このコードはめっちゃループしてるし遅そう!」「あ
2023/03/30 にやったJava仕様勉強会の動画が公開されました。当日はJavaのマスコットDuke風の服で臨みました(どうでもいい裏情報) www.youtube.com セッション資料もアップロードしたので参考にしてください。 Project Valhalla 2023 中間報告 いずれも 2023年3月時点での情報です。JEPもドラフト版だったりするので、将来的に変更が入る可能性が高いことをお断りしておきます。本稿では勉強会のセッション内容に加えて、セッション時点で追従できていなかった変更点や、勉強会での指摘を踏まえてフォローアップした内容を含みます。 もしもValhalla世界でJava入門したら ここでは、Valhalla導入後のJava世界だと入門者視点でどのように変わるのかというアプローチをしています。まず、Javaのデータ型は大きくふたつに分類できて、Identity
こんにちは、Red Hat Middleware Technical Account Manager のイアンです。 お客様のサポートケースの対応では、現象を再現させるために稼働しているJavaアプリケーションのコードを修正/パッチする場合があります。そのときには、Bytemanをよく使っていますが、新しいツールを紹介したいと思います。 Java Runtime (De)compiler (以降JRDとして略)は弊社社員が作って提供しているJavaのデコンパイルと修正したコードをアプリケーションへ挿入するためのツールです1。最新バージョン 7.2 は Java 11 以降に対応していますが、古いバージョン 6 は Java 8 でも使えるように見えます(未検証ですが)。 簡単な例で使い方を説明いたします。 環境準備 この例では、以下の製品とソフトウェアを使用します。 OpenJDK 11
TL;DR ツールチェーン と ツールチェーンリポジトリ Gradle 8.0 からのツールチェーンリポジトリ blog1.mammb.com TL;DR Gradle 8.0 で以下のようなワーニングや $ ./gradlew build --warning-mode all Using a toolchain installed via auto-provisioning, but having no toolchain repositories configured. This behavior is deprecated. Consider defining toolchain download repositories, otherwise the build might fail in clean environments; see https://docs.gradle.or
このエントリーは Java Advent Calendar の9日目のエントリーです。 qiita.com Virtual ThraedはJava 19でPreview (JEP 425)、Java 20でSecond Preview (JEP 436)となり、うまくいけば次のLTSであるJava 21で導入予定です。 パフォーマンスを考える時に、一般的にはスループットと応答性の2つがあります。スループットは単位時間あたりにどのくらいリクエストをさばけるか、応答性は処理のリクエストから結果が帰るまでの時間です。Virtual Threadのこの2者のうち、スループットを向上させるために導入されます。 では、なぜ今になってVirtual Threadが導入されるのかということを、歴史を振り返りながら考えてみるのがこのエントリーです。 いにしえの時代 - Java 1.0からJ2SE 1.4
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く