Skip to main content
This revision made May 25, 2013 15:26, by Martijn Verburg


As of Java 7, OpenJDK is the Reference Implementation (RI) for Java. In essence, the OpenJDK is the Java we use every day! With legal and technical barriers become smaller every day, it is now more possible than ever to get involved in the language and VM that we all love.

Also, see Goals and Benefits

Who's Adopting OpenJDK?

Many individuals, JUGs and organisations, see Who Is Adopting OpenJDK

Getting Started

There are many levels, projects and smaller programmes within Adopt OpenJDK that you can join

Sign Up

You can participate in the program via:

  1. Google group: Adopt OpenJDK Google Group
  2. Mailing the Adopt OpenJDK group directly
  3. IRC: #adoptopenjdk channel on
  4. Twitter: @adoptopenjdk (follow the #adoptopenjdk hash tag on twitter)
  5. Google+ Community Google+ Community

See Adopt OpenJDK Etiquette for our community rules

Initial Steps

See Initial Steps

Join Project(s) and Event(s)

Email the Adopt OpenJDK group to signup to a project and/or an event. Some of the current projects and events include:

  • Betterrev - A new workflow for the submission of patches to OpenJDK, including a build farm / CI farm and more
  • Test Fests - Fixing existing OpenJDK tests and writing new ones
  • Lambda Tutorials - A hands on learning guide for Lambdas in Java 8
  • Javacountdown - A site to track global usage of Java in the browser.
  • Bugathons

Leading an Adopt OpenJDK effort

See Leading an Adopt OpenJDK effort

What do we work on for OpenJDK?

See What to work on for OpenJDK

Talks and Presentations


See the Downloads section for this project (left hand menu).

JavaOne 2012

Difference compared to previous revision
== What do we work on for OpenJDK? == See [[What to work on for OpenJDK]]= Levels of contribution = This section covers the myriad ways in which you can contribute to the Adopt OpenJDK program == Starter Level == === VM Build === * See [[Adopt OpenJDK VM Build]] Lead by [!/karianna Martijn Verburg]. === Your own build === * See [[Your own Environment]] Lead by [!/karianna Martijn Verburg]. === Evangelism, Testing & Triage === * Ux overhaul of the [|OpenJDK wiki] pages - Lead by [!/karianna Martijn Verburg] * [[PermGen Removal]] === Bug fixes and small enhancements === There are some [[General Instructions for Small Changes]] which apply to most of the sub projects below. * [[Clean up javac warnings]] - Lead by [!/mikeb2701 Mike Barker], [!/karianna Martijn Verburg], [!/kittylyst Ben Evans] and many more. * [[Coinification of the OpenJDK]] - Lead by Stefan Reich * [[StringBuffer to StringBuilder replacements]] (where appropriate) - Lead by Stefan Reich * Replace ''0xff'' with calls to ''Byte.toUnsignedInt'' - Lead by TBA * Apply enhanced-for loop (foreach) replacement of manual for loops - Lead by TBA * Apply enums - Lead by TBA * Apply covariant overrides - Lead by TBA * Apply autoboxing - Lead by TBA == Intermediate Level == === Your First Patch === In order to get a patch ready for committing, you need to have written the patch, but there are several other things you need to do. First off, you should be comfortable with building OpenJDK & keeping up to date with the head of the relevant repo. You should also know (from having watched the mailing lists, or by asking on the AdoptOpenJDK mailing list) which project you should be targeting for your patch. Note that this may not necessarily be the OpenJDK 8 mainline project. You should also have [ installed jtreg] as that will be needed for testing your patch. === Jigsaw and OSGi === There are two parts to this. Project Jigsaw itself and project Penrose, a splinter project investigating OSGi/Jigsaw interaction * Jigsaw - TBA * Project Penrose - Lead by Neil Bartlett === jtreg, JUnit, TestNG etc === * [[Replace Shell Script Tests]] - lead by TBA === Other JDK Enhancement Proposals (JEPs) === Read Alex Blewitt's [ blog post] for some background information on the JEP process. Some JEPs can be classed as intermediate level proposals: * TBA == Advanced Level == * Finding and eliminating memory leaks. JDK provides good tools for that, 3rd-party profilers are also helpful * New platforms support. They can include operating systems, hardware, browsers, window managers - everything. Sometimes the fix is small, sometimes it makes sense to request a new OpenJDK project (e.g. BSD port, or PowerPC/AIX port) * Performance. It's a never-ending task. === Javadoc overhaul === See [[Javadoc]] for details - Lead by [!/kittylyst Ben Evans] and [!/richardwarburto Richard Warburton] === Lambdas === * [ Lambdas Hackday 1] and [ Lambdas Hackday 2] * Also, see JSR 335 at the [ Adopt a JSR] program === Build and CI === * Co-ordinating projects to use early builds of OpenJDK 8 - lead by [!/karianna Martijn Verburg] * [[Build Farm for OpenJDK]] - Lead by [!/jyeary John Yeary] and [!/kittylyst Ben Evans] === Coroutines === * Investigate the experimental patch by Lukas Stadler and get it up to date with OpenJDK 8 - Join co_jsrATsswDOTuni-linzDOTacDOTat for details * Start discussions within mlvm-dev about coroutines, their state and their suitability going forward for the JVM === Concurrency Testing === * [[Concurrency testing]] - lead by Venudhar Gogineni === Other JDK Enhancement Proposals (JEPs) === Read Alex Blewitt's [ blog post] for some background information on the JEP process. Some JEPs can be classed as advanced level proposals: * TBA == Misc Projects == * Preparation for Tuples - TBA - Lead by [!/mikeb2701 Mike Barker] * Value Types - TBA - See John Rose's [ Value Types Blog Post] * Some rough goals are listed here: [[AdoptOpenJDKGoals]] ==Delayed Projects== * Ux overhaul of the [] - This is delayed until an infrastructure move takes place. * Triage OpenJDK Bugs - This is delayed until the public JIRA instance is available = Talks and Presentations = ==Hosted==
Please Confirm