-
Notifications
You must be signed in to change notification settings - Fork 154
Java Versions
BiglyBT's minimum and recommended Java version is 8 (or 1.8 as it is also known)
While newer versions of Java have exciting bling they also often deprecate features that are used by BiglyBT. Of interest:
-
Version 15: The Nashorn JavaScript engine was removed. This prevents the JavaScript automation features of BiglyBT from working. As this feature is pretty much unused (as far as the developers know) it may not be significant. Apparently GraalJS can be used as a replacement but this has not been researched.
-
Version 16: Finally enforces module encapsulation, up until this version warnings were logged but the functionality still worked. BiglyBT uses its own 'DNS Service Provider' proxy to prevent the attempted resolution of I2P and Tor addresses via DNS (as this leaks information about the addresses). Back in Java version 8 there was an offical way of doing this. This was removed in a later version at which time a 'hack' was used via reflection to continue supporting the behaviour. Unfortunately this hack involved injecting BiglyBT code into the Java runtime. Version 16 finally causes this to fail as the Java Module system now prevents such cross-module reflection. There is still a work around but it requires changes to the Java command line. Specifically you need to add
--add-opens java.base/java.net=ALL-UNNAMED
In the future the BiglyBT launcher may be updated to do this.
- Version 18: The ability to officially add a DNS service provider has been re-introduced. From this version onwards the hack above is in theory no longer required. However the current implementation does still rely on this as the "correct" solution isn't backwardly compatible.
If you want to switch to a version more recent than that shipped with BiglyBT (currently 8) then you will need to download and install it yourself. For example, Oracle builds are available here: https://www.oracle.com/java/technologies/downloads/ (see below for alternative vendors)
Simply installing a newer version won't in general cause BiglyBT to use it. If you select the "About" menu item then a window is opened that shows the current Java version and install location in the "System" area. You may need to rename or delete the existing Java version to cause BiglyBT to use your installed version (obviously when BiglyBT isn't running!). For example, on Windows BiglyBT will usually install a Java 8 runtime in "C:\Program Files\BiglyBT\jre". BiglyBT will continue to use this runtime unless you rename/delete it.
https://adoptopenjdk.net/index.html
https://www.openlogic.com/openjdk-downloads
https://www.azul.com/downloads/zulu-community/?package=jdk
Oracle has stopped shipping a 32-bit version of Java, the last one was 1.8.
Other vendors still offer 32-bit versions, for example AdoptOpenJDK.
BiglyBT uses the SWT graphics library from Eclipse.
The last 32-bit release of SWT was in 2018, version 4.9 (4919). Therefore, if you decide to run a 32-bit version of BiglyBT, you will be limited to a rather out-of-date graphics library that will, over time, have more and more issues. It is also an issue for the BiglyBT developers to continually have to ensure compatability so, sometime not so far far away, BiglyBT support for 32-bit will end.
Eclipse switched to a minimum Java version of 11 with release 4.21 and later. While BiglyBT supports a minimum Java 8 this will require old SWT libraries to be used which, again, over time will lead to more issues and unfixed bugs. As of 2022/10/25 beta Windows users running Java 11 or higher will receive more recent SWT builds.
You can install your own SWT versions by going to https://download.eclipse.org/eclipse/downloads/index.html and selecting the desired version. Then scroll down to "SWT binary and Source" and select the desired platform download. This will give you a .zip file - inside this you will find an "swt.jar". Replace the "swt.jar" in the BiglyBT install folder (perhaps backup the previous one in case things don't go as planned!)
See Performance Tweaks for details.
bigly help