Understanding the Adopt a JSR program

First of all, what is the Adopt a JSR program?

Adopt a JSR is an initiative that intends to bring the Java community closer together while evolving Java. By community, we mean Java User Groups (JUGs)—that is, individuals and any kind of organization.

To understand this term, maybe we should hold on for a second and try to understand the Java evolution process.

Java technology has a set of standards called Java Specification Requests (JSRs). Every Application Programming Interface (API), and any other aspects of the language, have to be written in some form of JSR

Every JSR has a spec leader, which is the individual in charge of leading the process of building that specification. Each spec leader works with an Expert Group (EG) that does all the heavy lifting of creating and/or evolving a JSR.

In each JSR, there are also contributors—people from the community who volunteer to collaborate with a JSR. They don't have the same role as the spec leader or the EG, but can also do a lot for this process.

For each JSR, there's a Reference Implementation (RI). The RI is the code that JSR is working on as real Java code. It exists to bring all those conceptual lines of a specification to the real world. It's vital for proving that what was once specified works.

Some examples of RIs in the former Java Enterprise Edition (EE) world are Mojarra for JavaServer Faces (JSF), Soteria for security, and GlassFish for Java EE.

When we say that the RI is proof that some JSRs work, this is not just on a conceptual level—it is really tested. That's why we have Technology Compatibility Kits (TCKs).

TCKs are a set of tests designed to test the implementations specified in the JSR. So, when an RI is written, it should pass in the TCKs to prove that it works (at least, in theory).

Those three parts—the JSR, the RI, and the TCK—are the pieces ratified by the Java Community Process (JCP).

So, in the JCP, you have all the working JSRs and their own processes monitored by the Executive Committee (EC), a group formed of companies, individuals, and JUGs that ensures that all the JSRs work under the best practices defined by the JCP and move toward the best results for the Java ecosystem and the community that relies on it.

So, the next time you think "how can I contribute to Java? How can I make my contribution?"or, more specific to this section, "how can I adopt a JSR?"know that you can do so by doing the following things:

You can do all of these things by yourself, but it is much more productive (and fun!) if you do them with a community. You can do so by joining a JUG or starting a small group in your company (or wherever you can find some people to work together). It's a lot of work, so it's better to have some company!

For more information about adopting a JSR program, you can check out the following links:

To get to work, visit https://jcp.org or https://github.com/jakartaee.