MCPcopy Index your code
hub / github.com/eclipse-openj9/openj9

github.com/eclipse-openj9/openj9 @openj9-0.59.0

Chat with this repo
repository ↗ · DeepWiki ↗ · release openj9-0.59.0 ↗ · + Follow
85,916 symbols 313,672 edges 7,797 files 19,038 documented · 22% updated 1d agoopenj9-0.59.0 · 2026-04-29★ 3,5302,894 open issues
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

OpenJ9 logo

Welcome to the Eclipse OpenJ9 repository

License License

We're not sure which route you might have taken on your way here, but we're really pleased to see you! If you came directly from our website, you've probably already learned a lot about Eclipse OpenJ9 and how it fits in to the OpenJDK ecosystem. If you came via some other route, here are a few key links to get you started:

  • Eclipse OpenJ9 website - Learn about this high performance, enterprise-grade Java Virtual Machine (JVM) and why we think you want to get involved in its development.
  • Build instructions for JDK8, JDK11, and More - Here's how you can build an OpenJDK with OpenJ9 yourself.

If you're looking for ways to help out at the project (thanks!), we have: - Beginner issues - Help Wanted issues

If you're here to learn more about the project, read on ...

What is Eclipse OpenJ9?

Eclipse OpenJ9 is an independent implementation of a Java Virtual Machine. "Independent implementation" means it was built using the Java Virtual Machine specification without using any code from any other Java Virtual Machine.

The OpenJ9 JVM combines with the Java Class libraries from OpenJDK to create a complete JDK tuned for footprint, performance, and reliability that is well suited for cloud deployments.

The original source contribution to OpenJ9 came from the IBM "J9" JVM which has been used in production by thousands of Java applications for the last two decades. In September 2017, IBM completed open sourcing the J9 JVM as "Eclipse OpenJ9" at the Eclipse Foundation. Significant parts of J9 are also open source at the Eclipse OMR project. OpenJ9 has a permissive license (Apache License 2.0 or Eclipse Public License 2.0 with a secondary compatibility license for the OpenJDK project's GPLv2 license) that is designed to allow OpenJDK to be built with the OpenJ9 JVM. Please see our LICENSE file for more details.

Eclipse OpenJ9 is a source code project that can be built alongside Java class libraries. See the build instructions. Eclipse Foundation projects are not permitted to distribute, market or promote JDK binaries unless they have passed a Java SE Technology Compatibility Kit licensed from Oracle, to which the OpenJ9 project does not currently have access. See the Eclipse Adoptium Project Charter.

What is the goal of the project?

The long term goal of the Eclipse OpenJ9 project is to foster an open ecosystem of JVM developers that can collaborate and innovate with designers and developers of hardware platforms, operating systems, tools, and frameworks.

The project welcomes collaboration, embraces fresh innovation, and extends an opportunity to influence the development of OpenJ9 for the next generation of Java applications.

The Java community has benefited over its history from having multiple implementations of the JVM specification competing to provide the best runtime for your application. Whether adding compressed references, new Cloud features, AOT (ahead of time compilation), or straight up faster performance and lower memory use, the ecosystem has improved through that competition. Eclipse OpenJ9 aims to continue to spur innovation in the runtimes space.

How do I contribute?

Since we are an Eclipse Foundation project, each contributor needs to sign an Eclipse Contributor Agreement. The Eclipse Foundation operates under the Eclipse Code of Conduct to promote fairness, openness, and inclusion.

To get started, read our Contribution Guide.

If you think you want to contribute but you're not ready to sign the Eclipse Contributor Agreement, why not join our weekly updates in the #planning channel? We also have calls after a new release where you can learn more about how we work. We talk about new ideas, answer any questions that get raised, and discuss project plans and status. We do lightning talks on features and functions of the VM. Visit the #planning channel in our Slack workspace for information about upcoming community calls and minutes from previous meetings (Join here).

What repos are part of the project?

  • https://github.com/eclipse-openj9/openj9 : OpenJ9 main code base
  • https://github.com/eclipse-openj9/openj9-omr : Eclipse OMR clone to stage temporary OMR changes. (None so far!)
  • https://github.com/eclipse-openj9/openj9-systemtest : OpenJ9-specific system tests
  • https://github.com/eclipse-openj9/openj9-website-publish : OpenJ9 website repo
  • https://github.com/eclipse-openj9/openj9-docs : OpenJ9 documentation repo
  • https://github.com/eclipse-openj9/build-openj9 : OpenJ9 GitHub actions repo
  • https://github.com/eclipse-openj9/openj9-utils : OpenJ9 utility programs / tools repo, a place to develop community around the tools

Where can I learn more?

Videos and Presentations

Copyright IBM Corp. and others 2017

Extension points exported contracts — how you extend this code

ILineNumberConverter (Interface)
Means of converting line numbers from the pre-processed file into file & line number in the original source file. @auth [7 …
debugtools/DDR_Autoblob/src/com/ibm/j9ddr/autoblob/linenumbers/ILineNumberConverter.java
IDTFJJavaField (Interface)
Return the Java signature for this DTFJJavaField. For example, if the field is a java/lang/Sting, return the signature s [15 …
debugtools/DDR_VM/src/com/ibm/j9ddr/view/dtfj/java/IDTFJJavaField.java
PlatformManagedObject (Interface)
Super-interface of all platform MXBean exported by the Java Virtual Machine. Each PlatformManagedObject ins [17 implementers]
jcl/src/java.management/share/classes/java/lang/management/PlatformManagedObject.java
TestInterfaceWithDefaultMethod (Interface)
An Interface that is used with InterfaceHandleTest class [67 implementers]
test/functional/Jsr292/src/com/ibm/j9/jsr292/TestInterfaceWithDefaultMethod.java
ConstantPoolItem (Interface)
(no doc) [28 implementers]
sourcetools/j9constantpool/com/ibm/oti/VMCPTool/ConstantPoolItem.java
NLSConstants (Interface)
@author PBurka [2 implementers]
sourcetools/j9nls/com/ibm/oti/NLSTool/NLSConstants.java
IXMLDocumentHandler (Interface)
(no doc) [4 implementers]
sourcetools/com.ibm.jpp.preprocessor/com/ibm/jpp/xml/IXMLDocumentHandler.java
ICVisitor (Interface)
Visitor callback for constants and comments. @author andhall [12 implementers]
debugtools/DDR_Autoblob/src/com/ibm/j9ddr/autoblob/constants/ICVisitor.java

Core symbols most depended-on inside this repo

get
called by 9383
test/functional/Java14andUp/src/org/openj9/test/jep358/NPEMessageTests.java
set
called by 7989
debugtools/DDR_VM/src/com/ibm/j9ddr/corereaders/tdump/zebedee/util/BitSetArray.java
println
called by 6295
jcl/src/openj9.dtfjview/share/classes/com/ibm/jvm/dtfjview/spi/IOutputChannel.java
add
called by 3814
test/functional/JIT_Test/src/jit/test/jitt/codecache/IAdder.java
equals
called by 3314
jcl/src/openj9.dtfj/share/classes/com/ibm/dtfj/java/JavaHeap.java
invokeExact
called by 3126
jcl/src/java.base/share/classes/java/lang/invoke/MethodHandle.java
cg
called by 3083
runtime/compiler/arm/codegen/J9AheadOfTimeCompile.hpp
methodType
called by 2529
jcl/src/java.base/share/classes/java/lang/invoke/MethodType.java

Shape

Method 59,274
Function 14,132
Class 11,752
Interface 444
Enum 314

Languages

Java57%
C++32%
C11%

Modules by API surface

runtime/oti/j9nonbuilder.h766 symbols
runtime/compiler/env/VMJ9.cpp554 symbols
test/functional/NativeTest/jniargtests/JniArgTests.java453 symbols
debugtools/DDR_VM/src/com/ibm/j9ddr/corereaders/tdump/zebedee/dumpreader/SystemTrace.java437 symbols
jcl/src/java.base/share/classes/java/lang/invoke/ByteBufferViewVarHandle.java394 symbols
jcl/src/java.base/share/classes/java/lang/invoke/ByteArrayViewVarHandle.java390 symbols
runtime/tests/clinkerffi/downcall.c387 symbols
runtime/vm/BytecodeInterpreter.hpp376 symbols
runtime/compiler/runtime/RelocationRecord.hpp359 symbols
test/functional/Java22andUp/src/org/openj9/test/jep454/upcall/UpcallMethodHandles.java355 symbols
test/functional/Java21Only/src/org/openj9/test/jep442/upcall/UpcallMethodHandles.java355 symbols
runtime/tests/clinkerffi/upcall.c346 symbols

For agents

$ claude mcp add openj9 \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact