HotSpotの反撃:JEP 544はGraalVMの起動時間独占を終わらせるのか?
HotSpot JVMにとってエキサイティングな時代が来ました。JEP 544: Ahead-of-Time Code CompilationがJava 28向けに提案されたばかりです。これにより、GraalVMの厄介な制約を一切伴わずに、HotSpotのAOTキャッシュがGraalVMに匹敵する起動パフォーマンスを得られることが約束されます。ただし、AOTキャッシュのトレーニングはGraalVMによる事前コンパイルとは異なるものです。では、両者は実際のところどのように比較できるのでしょうか?SBOMの義務化まであと15か月。あなたのSBOMはおそらく正しくない。
2027年12月11日から、EUサイバーレジリエンス法(Cyber Resilience Act)におけるSBOMの義務が適用されます。つまり、EUでソフトウェアをリリースしたいなら、間もなくSBOMが必要になります。これはEUに限った話ではなく、この宣言型のアプローチによってサプライチェーンセキュリティを強化する世界的な潮流です。米国では2021年から連邦政府向けソフトウェアベンダーにSBOMが義務付けられており、CISA/NSA/FBIは今年7月にSBOM最小要素の改訂版を公表しました。
SBOMを正しく作成するのは容易ではありませんし、ソフトウェアにインストーラーを付けて出荷する場合には、その難易度はさらに上がります。今、何をすべきでしょうか。見ていきましょう。
jvmguard 登場:本番環境での自動プロファイリング
JProfiler の開発チームから新しいオープンソースツールが登場しました。jvmguard は、組織における本番環境の JVM プロファイリングを支援します。
本番環境でのプロファイリングはリスクを伴いますが、それが問題を理解するための唯一の手段であることも少なくありません。jvmguard を使えば、プロファイリングによるキャプチャは承認と監査の対象となり、人間、自動トリガー、AI エージェントのいずれからでも開始できます。
jvmguard は JProfiler と連携しますが、その統合に限定されるわけではありません。JFR スナップショット、HPROF ヒープダンプ、スレッドダンプも記録でき、それらは他のツールで分析できます。jvmguard の基本的な考え方は、軽量シグナルは常にオンであり、ディープキャプチャは特定の条件下でのみ実行される、というものです。
Website refresh: Visual updates, dark mode, and semantic search for docs
We have just rolled out significant changes to our website. They include many visual updates and important infrastructure updates that speed up loading times in many locations across the globe.
In addition, there are three functional changes that we would like to highlight:
All our artifacts are now published on Maven Central
We have migrated all of our public Maven artifacts to Maven Central. Previously, these artifacts were available from our own Maven repository, which will remain online for older releases. New releases will be published exclusively on Maven Central.
Why JVMTI sampling is better than async sampling on modern JVMs
In recent years, "async sampling" has been hyped as a better way of CPU profiling on the JVM. While this has been true for some time, it is no longer the case. This blog post explains the history of sampling and the current state of the art.
How invokedynamic makes lambdas fast
Recently, we have been at work rewriting our website in Kotlin. Instead of a view technology that uses string templates with embedded logic, we now use the Kotlin HTML builder to develop views as pure Kotlin code. This has a number of advantages, like being able to easily refactor common code. Also, the performance of such views is much better than that of string templates, which contain interpreted code snippets.
When measuring the performance, we noticed that a lot of anonymous classes were created for our views and their loading
time was significant. Code that uses the Kotlin HTML builder is very lambda-heavy and as of Kotlin 1.9, lambdas are
implemented as anonymous classes. The JVM has a sophisticated mechanism to avoid creating classes at compile time that
was introduced in Java 8 - the LambdaMetafactory
and invokedynamic.
The JVM developers also claimed that the performance would be better than anonymous classes. So why does Kotlin not use
that?
Improved Kubernetes authentication handling in JProfiler
Since version 13, JProfiler supports profiling on Kubernetes clusters with no extra configuration.

JProfiler 13.0.6 added an important improvement for profiling a JVM in Kubernetes clusters where authentication is set up in such a way that the authentication plugin prints instructions on stdout.
New web license service and improvements for the on-premises server
Customers with floating licenses now have more flexibility: Starting with with the most recent releases of JProfiler and install4j, we now offer a web license service, so you do not have to install a license server yourself. If you choose that option, you will receive a license key that can be distributed to all developers and is entered just like a single license key. This option requires the ability to make an outgoing HTTP request to our license server.
Going forward, we will be offering both the web as well as the the on-premises solution. For the time being, the on-premises option remains the default and you can contact us if you would like to switch to the web option.
Support for macOS Apple Silicon
Please note: Several JDK providers now offer the macos-aarch64 architecture and there is no need anymore to create the bundle yourself, install4j can do this for you automatically.
(Edited on 2021-01-07 to include changes for install4j 8.0.10)
Apple machines with the new ARM architecture are now available. While you can run existing x64 binaries for on ARM machines through Rosetta, the performance may be impacted significantly. install4j 8.0.9 addresses this concern with support for native ARM binaries.