Context:
I’m trying to understand the concept of vendors in the Java ecosystem.
When I started learning Java, I thought it was a single entity with versions like Java 8, Java 11, etc. Later, I discovered that multiple vendors release their own distributions of Java, and now I’m confused about how this works.
Here are my main questions:
Are different vendors’ Java distributions truly different?
- Do they use/write different source code? For example, does something fundamental like the serialization mechanism or
Object#toString
implementation vary between vendors? - How do they ensure compatibility with the same set of features? For example classes have the same packages, methods have the same return types, …
Who controls the overall direction of Java?
- Who decides/prioritizes what features to introduce in a new Java version?
- How are deadlines and release schedules determined?
- What if one of the vendors is slow implementing feature, another’s performant
- What if one of the vendors realizes that it lacks competence to implement a feature.
- Can anyone become a Java vendor?
Who are these vendors:
- Hypothetically, what would it take Homer Simpson to run his own Java distribution?
- What motivates companies to maintain their own Java distributions? (e.g. JetBrains has its own Java distribution)
- How do these vendors generate revenue from something that’s open
source and freely available?
12