Interview: Java Version AlmanacAugust 25, 2020
From this week, we're happy to announce that we're hosting Marc Hoffmann's Java Version Almanac right here on foojay, providing details per release on OpenJDK distributions, new features, and differences between APIs across releases.
It also shows differences between the APIs of the currently selected Java release and all previous releases, handy when you're upgrading!
Go here to take a look, yourself: http://foojay.io/almanac/jdk-8
And, let's meet Marc, here's a quick interview with him about the Java Version Almanac!
Hi Marc, can you briefly introduce yourself and how you’ve been active in the Java ecosystem over the years?
I somehow accidentally stepped into Java at the very beginning, back in 1996, and I did a couple of projects already on the very first Java version 1.0.2 and then 1.1.
Over the years, I continued to work with Java in very different contexts — also in various open source projects. Probably the best known is the JaCoCo code coverage tool which I started in 2009.
As I’m always eager to learn new things, I visited many conferences and happened to become a conference speaker myself. This helped me to make many friends in the Java community. And since 10 years I co-unorganize the JCrete unconference on the beautiful island of Crete.
All this is mostly spare time activity — in my day job I design and implement software for railroad networks together with my wonderful mtrail team, in Switzerland.
At some point, you created javaalmanac.io, how did that come about?
As always, things started small — I used a collection of markdown documents in a Github repo to keep track of recent Java features and prepare talks.
One day, I realized that this repo has more than 500 stars on GitHub. So, it appears to me that this collection of information seems to be somewhat useful.
That was the beginning of javaalmanac.io.
How do you get all that content, what exactly does it consist of?
Most of the content is actually collected by hand. While I already had lots of content from my presentations about the latest Java versions, I started digging in the past and also tried to collect information about historic Java versions. For example, did you know that Java 1.0.2 only had 8 packages and its API documentation (not yet Javadoc) comes with the best web design of the nineties with funny gifs as headers? Have a look!
As the repository became more and more popular, people started to contribute with pull request. Also, Cay Horstmann contributed technical articles about the latest Java features. And I created two tools that help me to keep track about recent development:
- For the website, I create API diffs between all Java versions. So I can keep an eye on new APIs that come in with every Java version. In the meantime, the process is mostly automated and also API diffs for early access version are available.
- The other nice tool is an online compiler and executor for Java snippets. Want to try the latest Java 16 build without installing it? Just go here.
Maybe the data can be exposed as a REST endpoint?
Nice idea! While I started out with markdown files, over time I converted most of the content into JSON files. This makes the content machine readable and can be used in other contexts — like on foojay. I really like the idea of sharing knowledge and data!
Currently, the JSON files can be simply obtained from the GitHub repository. The next step would to provide a proper API from that data.
I have to admit I do not have much experience with open data standards. Maybe you have a an idea or one of our readers?
Which areas of the data would you most like collaboration on, i.e., what is most incomplete?
I try to maintain a list of OpenJDK distributions from all vendors known to me. There are many versions and even more supported platforms. I think it is important to users to find distributions that fulfil their needs.
But I don’t think I will be able to keep this matrix up-to-date in the long run. Would be really nice if vendors could provide artefact lists in machine readable formats or even update their product list on javaalmanac.io, like Azul already did, recently.
What are you happiest about, in relation to javaalmanac.io?
Simply the fact several collaborations were triggered with this little site. For example, writing articles with Cay Horstmann and now working together with foojay.
Yes, and now it’s hosted on foojay, too, what do you think about this direction?
For me this is wonderful proof of the concept that data and knowledge can be shared when information is provided in a well structured way and — most importantly — with an open license that allows the re-use of information.
And maybe foojay is the place where we, the Java community, will be collecting and maintaining all knowledge about OpenJDK!