Development discussions
Thu, 30 Apr 2020, 08:08pm #1
I2P Legend

As some of you know, I am very critical about Java implementations, even when recommended for I2P, and their tuning.

So after testing for more than four weeks, I can recommend using Java 14. (I run the distribution from AdoptOpenJDK).

Major Improvement: Outright crashes (SIGILL, SIGSEV, SIGBUS) present in all previous releases seem to be gone in production. They still occur in the test suite ("make test-tier1")

Minor: the 100% CPU bug that made 13 unusable is fixed, no surprise.

New bug: They completely f*cked up the memory display on the jconsole summary page. But you will know what you configured.

Not changed, unfixed: Test suite ("make test-tier1") throws lots of errors. Building will fail in several configurations, if you do not stick to gcc and some basic options.

Not changed, unfixed: High CPU usage in the Sun security provider (after processing several terabytes of data on my machines). Many reports about this around 2013, but dates back to mid 2000s. They simply do not care. Most probably the compiled methods get lost and that code runs interpreted.

Thu, 30 Apr 2020, 09:33pm #2
I2P Legend

I can't even build MuWire with AdoptOpenJDK 14 on Windows. The Gradle build step fails on something to do with the Groovy methods; Java 11 works fine. Maybe it's time to upgrade Gradle, but for now I will continue to build it with Java 11 on Windows at least.

When it comes to running, MuWire works fine on Java14, in fact I've made it the default bundled JRE (using JLink and the new JPackage tool).

The JPackage tool is very interesting. It aims to provide a single "right way" of packaging java applications, but luckily the process can be broken down into several steps and customized heavily. I'm still using NSIS for the final installer and my custom JLink scripts as the first step, but in the middle I use JPackage to generate an executable for Windows which identifies itself as "MuWire" to the windows firewall. (If anyone is interested the code is at https://github.com/zlatinb/muwire-pkg)

JPackage also offers .deb & .rpm on Linux and .dmg on Mac; I haven't tested those as I'm happy with the AppImage for Linux and while I would love to switch to a .dmg for Mac, I don't know how to copy the certificates and geoip database to the appropriate locations.

Despite those issues I'm very excited about JPackage and think I2P should seriously consider migrating to JPackage-built installers on Windows and Mac. I don't know when Java 8 will be EOL or gone from the Oracle website but I've heard it will happen this year. As far as AdoptOpenJDK goes there appear to be intermittent problems as tickets on trac suggest.

email: zab@mail.i2p Irc2P/keybase: zlatinb
blog: http://zab.i2p
MuWire: http://muwire.i2p
MuCats: http://mucats.i2p
MuWire nickname: zlatinb@3k2gijdfdcuczkfypfddj4qsnnf744mj

Fri, 01 May 2020, 08:56am #3
I2P Legend

just tested yesterday on Win 10:
installed adoptjdk14 hotspot, and the i2p 0.9.45 installer just hangs while installing (the graph runs through, does not come to an end after 30min at least).
On AdoptJDK11 (with JAVA_HOME set and all reg entries set) I2P 0.9.45 installs fine and runs fine.