This section covers the myriad ways in which you can contribute to the Adopt OpenJDK program. As always the latest coding projects are on our [https://bitbucket.org/adoptopenjdk/ BitBucket] and [https://github.com/AdoptOpenJDK/ GitHub] repos.
= Starter Level =
== Understand OpenJDK ==
There's a lot to learn about the technology and the open source project
* [[Trees and Forests]]
* [[Patch Flow]] - How fixes and features move through the trees and forests
== Build OpenJDK ==
Build Java itself!
* See [[Your own Environment]] then [[Adopt OpenJDK Build Instructions]]- Building OpenJDK on your machine
* See [[Adopt OpenJDK VM Build]] then [[Adopt OpenJDK Build Instructions]] - Building OpenJDK within a virtual machine
* Extra [http://openjdk.java.net/projects/code-tools/friday-stats/ Code Tools] - We're planning on integrating these with [https://bitbucket.org/adoptopenjdk/betterrev Betterrev]
== Testing (Test Fests) ==
Improve the quality of Java!
* [[Test Fests]] - Hackdays focusing on improving the quality and quantity of OpenJDK tests.
* [[Testing Java 8 | Testing Java]] - Co-ordinating projects to use early builds of Java 8/9
== Betterrev ==
[https://bitbucket.org/adoptopenjdk/betterrev Betterrev] - A new website and workflow to improve patch submission process for OpenJDK. Includes:
# Pull Request mechanism for patch submission
# Build Farm
# Continous Integration with JTreg regression tests
# Static code analysis
# Patch creation
# License checking
# Patch submission
# And more
* Also see [[Build Farm for OpenJDK]]
== Javacountdown ==
[https://github.com/AdoptOpenJDK/Javacountdown Javacountdown] - A JavaEE 6/7 and HTML 5 website to track global usage of Java in the Browser and encourage its demise.
== Javadoc Updater Tool ==
* Tool that fixes a Javadoc security vulnerability - [https://github.com/AdoptOpenJDK/JavadocUpdaterTool JavadocUpdaterTool]
== Evangelism ==
* Ux overhaul of the [https://wikis.oracle.com/display/OpenJDK/Home|OpenJDK wiki] pages
== 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]]
* [[Coinification of the OpenJDK]]
* [[StringBuffer to StringBuilder replacements]] (where appropriate)
* Replace ''0xff'' with calls to ''Byte.toUnsignedInt'' - TBA
* Apply enhanced-for loop (foreach) replacement of manual for loops - TBA
* Apply enums - TBA
* Apply covariant overrides - TBA
* Apply autoboxing - 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 Adopt OpenJDK mailing list) which project you should be targeting for your patch. Note that this may not necessarily be the OpenJDK 9 mainline project.
You should also have [http://java.net/projects/adoptopenjdk/pages/InstallJtreg installed jtreg] as that will be needed for testing your patch.
= Java 9 =
== 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
== Javadoc overhaul ==
See [[Javadoc]] for details - Lead by [https://www.twitter.com/#!/kittylyst Ben Evans] and [https://www.twitter.com/#!/richardwarburto Richard Warburton]
== Coroutines ==
* Investigate the experimental patch by Lukas Stadler and get it up to date with OpenJDK 9 - 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
== Java Microbenchmark Framework ==
Giving feedback, adding tutorials etc for the Java Microbenchmark framework
* [[Java Microbenchmark]] - lead by Helio
== Other JDK Enhancement Proposals (JEPs) ==
Read Alex Blewitt's [http://www.infoq.com/news/2011/11/jdk-jeps blog post] for some background information on the JEP process. Some JEPs can be classed as advanced level proposals:
Java 8 has now been released, here are the projects we ran to support it. You can still find useful tutorials and material there!
== Lambdas ==
Java 8 will include Lambdas (aka closures), bringing functional programming capabilities to Java
* [https://github.com/AdoptOpenJDK/lambda-tutorial Lambda Tutorials] - Hands on, test driven tutorials for Java 8
* [http://www.meetup.com/Londonjavacommunity/events/64939182 Lambdas Hackday 1] and [http://www.meetup.com/Londonjavacommunity/events/70388732 Lambdas Hackday 2] - Hackdays exploring Lambdas and the new Collections APIs
* Also, see JSR 335 at the [http://adoptajsr.java.net Adopt a JSR] program
* For more details see the page on [[Nashorn]]
== PermGen Removal ==
* [[PermGen Removal]]
= Misc Projects =
* Preparation for Tuples - TBA - Lead by [https://www.twitter.com/#!/mikeb2701 Mike Barker]
* Value Types - TBA - See John Rose's [https://blogs.oracle.com/jrose/entry/value_types_in_the_vm Value Types Blog Post]
* Some rough goals are listed here: [[AdoptOpenJDKGoals]]
= Delayed Projects =
* Ux overhaul of the [http://openjdk.java.net] - This is delayed until an infrastructure move takes place.
* Triage OpenJDK Bugs - This is delayed until the public JIRA instance is available
Back to [[AdoptOpenJDK]]