Videos
I was researching how to learn Java in 2024. However, I didn't find an official source, just paid courses and training.
Does Java have any official documentation that teaches everything from basics to advanced, as well as NodeJS, Dotnet, Ruby and others?
If not, why doesn't the community come together to create one?
Links to JDK documentation
| Java SE | Download | Web | Other |
|---|---|---|---|
| 27 (future, due 2026-09) | « not yet available » | Javadoc | Project page |
| 26 (future, due 2026-03) | « not yet available » | Javadoc | Project page |
| 25 (LTS) (2025-09, current) | Downloads page | Javadoc | Doc home |
| 24 | Downloads page | Javadoc | Doc home |
| 23 | Downloads page | Javadoc | Doc home |
| 22 | Downloads page | Javadoc | Doc home |
| 21 (LTS) (2023-09) | Downloads page | Javadoc | Doc home |
| 20 | Downloads page | Javadoc | Doc home |
| 19 | Downloads page | Javadoc | Doc home |
| 18 | Downloads page | Javadoc | Doc home |
| 17 (LTS) (2021-09) | Downloads page | Javadoc | Doc home |
| 16 | no longer available | Javadoc | Doc home |
| 15 | no longer available | Javadoc | Doc home |
| 14 | no longer available | Javadoc | Doc home |
| 13 | no longer available | Javadoc | Doc home |
| 12 | no longer available | Javadoc | Doc home |
| 11 (LTS) (2018-09) | Downloads page | Javadoc | Doc home |
| 10 | no longer available | Javadoc | Doc home |
| 9 | no longer available | Javadoc | Doc home |
| 8 (LTS) | Downloads page | Javadoc | Platform home Doc home |
| 7 | no longer available | Javadoc | Doc home |
| 6 | no longer available | Javadoc | Doc home |
Also of interest:
- Release Notes
- History of Java SE versions
- What does Long-Term Support mean? (2021), and related video (2023), by Nicolai Parlog
First, make sure they don't already offer an download in zip form or similar.
Then, make sure you are actually allowed to do this (this may depend on where you live, and on any conditions mentioned on the web site from where you want to pull this).
Then, have a look at the Wget tool. It is part of the GNU system, thus included in many Linux distributions, but also available for Windows and Mac, I suppose.
Something like this works for me:
wget --no-parent --recursive --level inf --page-requisites --wait=1 \
https://epaul.github.io/jsch-documentation/simple.javadoc/
(without the line break; it should be escaped by the \ backslash here).
Look up what each option does in the manual before trying this.
If you want to do this repeatedly, look into the --mirror option.
For downloading other websites, --convert-links might also be useful, but I found that is not needed for Javadocs, which usually have the correct absolute and relative links.
This downloads lots of the same copy of the index.html file with appended ?... names (for the FRAMES links on each page). You can remove these files after downloading by adding the --reject 'index.html\?*' option, but they still will be downloaded first (and checked for recursive links). I did not yet find out how to avoid downloading them at all. (See this related question on Server Fault.)
Maybe adding the right recursion level would help here (I didn't try).
After downloading, you might want to zip the resulting directory to take less disk space. Use the zip tool of your choice for this.
Edit: don't waste your time reading this, see comments below.
You're probably all familiar with the official Java SE tutorial. It's a great introduction to Java, but as the banner at the top of the page points out, hasn't been updated past Java 8. This means readers aren't introduced to new features like local variable type inference or switch expressions, although they could greatly benefit from both.
There's Java Language Changes; while the articles are well written, you have to do the diff since Java 8 yourself, e.g. read about swich expressions (and make sure to pick the non-preview version), then continue with pattern matching for switch once it's out of preview. Don't get me wrong, these docs are great when you're already a Java developer, but from the perspective of a beginner, the material is all over the place. In case of switch (pun intended), I'd argue they should be taught expressions first, since they don't have confusing fall through semantics.
Finally, there's the module system. Lack of documentation is probably one of the many reasons why JPMS sees little adoption. The JDK 17 documentation landing page links to the OpenJDK page Project Jigsaw, showing a lot of different video tutorials and a short quick start guide. "What's Jigsaw? What's a JEP?" the confused learner may ask. "Which documentation should I read?" Probably the most comprehensive resource on that page is The State of the Module System. However, there's the caveat again: "This document is slightly out of date", and "An update is in preparation and will be posted here when ready". The article has been published in 2016.
I know there's a lot of third party resources to learn Java – websites, books, videos – but they're not written by the people who design the language (at least most of the time). Plus it's difficult to spot outdated material. The JDK javadocs are of exceptionally high quality and constantly being updated. I think the docs explaining the syntax and semantics of the language and runtime should be held to the same standard. The situation will only get worse with big features like Valhalla and Loom.
So, tl;dr: Are there any plans by Oracle or the OpenJDK maintainers to update the tutorial? Ideally it would be version controlled so you could pick the Java version you're working with, and it shows you the state of the language at that point in time. I understand it's low priority. Maybe the community could help creating it?