Sakata // Oracle CodeOne 2018 (original) JVMCI means "JVM compiler interface". We can use JVMCI's interfaces to write a JIT compiler in Java. Such compiler already exists, called Graal. Graal was introduced in Java 10. But I tried to write my own super simple JIT compiler for learning purpose. JVM passes byte array of hot method to the interface. So we need to translate that into Java bytecodes. After that we make machine code from Java bytecodes. Machine code is cpu-specific, so I made machine code only for Intel 64 bit CPU. There are so many optimization techniques, so I used only a few techniques. In this session I will talk about what a JIT compiler is, specification of JVMCI interfaces, how to write implementations and how to run an application with your own compiler.
Sakata // Oracle CodeOne 2018 (modified) JVMCI stands for "JVM Compiler Interface". We can use JVMCI to write a JIT compiler in Java, an example of which is Graal, which was introduced in Java 10. In my talk I will share my experiences writing a super-simple JIT compiler. JVM passes byte array of hot method to the interface. So we need to translate that into Java bytecodes. After that we make machine code from Java bytecodes. Machine code is cpu-specific, so I made machine code only for Intel 64 bit CPU. There are so many optimization techniques, so I used only a few techniques. In this session I will talk about what a JIT compiler is, specification of JVMCI interfaces, how to write implementations and how to run an application with your own compiler.
Nishikawa // JavaZone 2024 This session will demonstrate how to collect signals from GraalVM Native Image applications with OpenTelemetry in a "no collector" approach, providing valuable insights for those seeking to optimise their data collection processes. Furthermore, I will share insights and benefits on the technical aspects, based on my experience of supporting several customers in real-world scenarios. GraalVM Native Image is an excellent technology for reducing the time taken to start up, the potential for attack and the amount of memory required by Java applications, offering significant benefits to customers. From an observability standpoint, however, the typical monitoring agent is not the optimal choice for native image applications, as they do not require a standard JVM to run. To address this challenge, the "no collector" approach is emerging as the preferred solution for Java-based microservices, including GraalVM Native Image. This approach is gradually being supported by various observability solutions and development frameworks. Attendees will gain the knowledge to effectively use the no-collector approach for monitoring GraalVM Native Image applications.