prismlauncher.org icon indicating copy to clipboard operation
prismlauncher.org copied to clipboard

Improve Java tutorial, including proper instructions for aarch64 (contains global CSS changes, check before merging)

Open lordofpipes opened this issue 2 years ago • 6 comments

Hello! I am the author of the MinecraftHopper Java installation tutorial, here to help potentially rewrite most of this page for clarity.

Having this article in the first place is, of course, a stopgap measure until https://github.com/PrismLauncher/PrismLauncher/pull/285 is implemented and solves all these problems without the user having to do anything. But we should improve it anyways, as it has become a source of confusion.

This merges #216

CSS changes

Inline <code> blocks

Currently, light mode is a typographic disaster whenever <code> blocks are used. So I changed the background color from black to a light gray, so it displays similar to Github-flavored markdown. Might have just been a case where nobody tested light mode :D

Also, border-radius wasn't working because this is a CSS property that only accepts px, not em. It also had no padding to make it look non-janky.

Before: image

After: image

For dark mode I retained the existing color scheme, just fixed the border-radius.

Tables

Tables haven't been used on the wiki yet, so they had no borders. So I gave them a subtle border color.

Explanation of OpenJDK

I've edited the article to include an explanation for why OpenJDK is preferred over Oracle.

Instructions for checking CPU architecture

CPU architectures are becoming increasingly confusing as MacOS users don't know that M1 means aarch64, and Windows users are increasingly buying ARM tablets. This is especially a problem because on aarch64 platforms that emulate x86-64, downloading the wrong version can cause performance problems without any indication as to what the issue is. So we should provide detailed instruction on how to check.

Download Links

It's almost impossible to choose between the numerous nearly identical Java distributions, but for various reasons we can't just recommend one single JDK, because the compatibility table is... complicated. Nevertheless, here is my rationale. Let me know if I should change any of these links.

Microsoft OpenJDK

  • It is the exact same binary shipped with the vanilla launcher, so in theory it should have slightly less issues than other distributions
  • Microsoft OpenJDK is the only vendor that has explicitly promised permanent URLs for directly downloading the latest LTS. This means we can link directly to installers without the links going out of date.
    • A notable exception is they lack short URLs for macOS .pkg files. This may be coming in the future, though.
  • "Microsoft" is particularly non-scary name for a game made by Microsoft. Some users have misplaced fear of malware when they hear unknown names like Azul or Temurin
  • They have aarch64 builds for Windows and macOS
  • Con: They don't have Java 8 or any builds for x86
  • Con: It is open source, but it lacks the open source build infrastructure that Adoptium has. But it's not like the other distributions have reproducible builds anyways.

Therefore, this is the best link to use for downloading JDK 17 for Windows x64 and aarch64, and macOS x64 and aarch64.

Temurin OpenJDK

  • They have 32 bit builds for all platforms
  • They have a good landing page with architecture detection when you press the JDK 17 download button
  • They have a Debian repository to replace the missing jdk8 in Debian 10+
  • Con: They do not have aarch64 builds of Java 8 for macOS

Therefore, this is the best link for downloading JDK 17 for Windows x86, JDK 8 for Windows, JDK 8 for macOS aarch64, and JDK 8 for Debian.

Azul OpenJDK

  • They provide JDK 8 for macOS aarch64. The only other vendor that has this is Coretto
  • Con: They have an awful landing page that has you scrolling through 2 pages of Azul's products before reaching the downloads section

Therefore, this is the best link for downloading JDK 8 for macOS aarch64.

❌ Amazon Coretto

  • I've heard they have the most complete debug symbols, which could in rare cases help with a native code crash
  • Otherwise a good Java distribution, similar to Temurin, Azul, Microsoft
  • Con: Most confusing download page, you have to scroll a box that doesn't have a scrollbar
  • Con: Nobody likes Amazon (has nothing to do with the quality of the distribution, but maybe someone out there will think Alexa will eat their PC if they use it)

It's not necessary to provide a link to this

❌ OpenJ9

  • Con: Breaks compatibility with mods

It's not necessary to provide a link to this

❌ GraalVM

  • Con: Breaks compatibility with mods

It's not necessary to provide a link to this

❌ Oracle Java

  • Con: Oracle likes to sue their users
  • Con: Certain downloads are gated by account signup. This is so they can collect info on your employer so they can sue you

It's not necessary to provide a link to this, except for Intel graphics workarounds

Linux section

I've changed the commands to download JDK instead of JRE, because some mods require a full JDK to be installed

More distributions are now named in the section titles. Added instructions for Alpine Linux, too.

Re-ordering of sections

For some reason "Using Java" was placed under "Special Cases", so I've moved it up

image

lordofpipes avatar Mar 11 '23 10:03 lordofpipes

Deploy Preview for prismlauncher ready!

Name Link
Latest commit 0c8ce0ce15cf080b823014a1a3e8f7e7f056bfaa
Latest deploy log https://app.netlify.com/sites/prismlauncher/deploys/642108b1e7fa5800085d1bb4
Deploy Preview https://deploy-preview-250--prismlauncher.netlify.app
Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify site settings.

netlify[bot] avatar Mar 11 '23 10:03 netlify[bot]

False, no mods require a full jdk

I'm fairly certain that there are a few mods that do. Can't remember the names of mod(s) but it has definitely popped up in the PrismLauncher discord, the Modded Minecraft discord, and /r/feedthebeastcrashes, usually with error logs that indicate some sort of dependency on a JDK-only components, the issue being fixed by installing the full JDK.

One practical problem that has popped up a ton in beginner mod development communities, is that when beginner modders download slimmed-down JREs instead of JDK, it breaks their IDE that was previously setup correctly, and puts them off learning programming.

Plus, it's usually only twice the size as a slimmed-down JRE, so very little disk space impact if it turns out it isn't needed.

and the vanilla launcher uses a custom jre

You're right, vanilla does contain a partially slimmed down JDK, though it still contains some components that are usually JDK-only. Edited to reflect this.

lordofpipes avatar Mar 11 '23 11:03 lordofpipes

If I'm wrong, here is a revert: 3a38f3ae4c8ad7798ae656fadf2ccc523cfb43a8

lordofpipes avatar Mar 11 '23 12:03 lordofpipes

very late but I am going to be looking into prs over my holidays ill look into this.

ZekeZDev avatar Oct 31 '23 13:10 ZekeZDev

Converted this PR to a draft since this page will likely take an entirely different direction as documenting the java downloader will likely be prioritized. Feel free to open a new PR that uses any of my wording / formatting, and close this one when it's no longer relevant.

lordofpipes avatar Jul 09 '24 04:07 lordofpipes

Would be great to have this merged though :(

Poopooracoocoo avatar Jul 09 '24 04:07 Poopooracoocoo

Converted this PR to a draft since this page will likely take an entirely different direction as documenting the java downloader will likely be prioritized. Feel free to open a new PR that uses any of my wording / formatting, and close this one when it's no longer relevant.

I think I might still merge this but update it once the next pr is merged to make this a subcategory called "legacy java management"

The css fixes and such should also be added.

ZekeZDev avatar Aug 13 '24 03:08 ZekeZDev

this is merged, my git local branches are screwed up so did a separate pr to merge. updated with main.

ZekeZDev avatar Aug 16 '24 12:08 ZekeZDev