HotSpot의 반격: JEP 544, GraalVM 시작 성능 독점의 끝인가?
HotSpot JVM에 흥미진진한 시대가 찾아왔습니다: JEP 544: Ahead-of-Time Code Compilation이 Java 28용으로 방금 제안되었습니다. 이를 통해 HotSpot AOT 캐시가 GraalVM에 필적하는 시작 성능을 확보하되, 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.