My thoughts on Slackware, life and everything

Update 5 for OpenJDK 7 available

OpenJDK 7u5

Quite by accident I noticed that a newer version of Oracle’s Java 7 SE was available on my son’s Windows computer. I checked my Linux sources and indeed I was running behind.

Soon after icedtea 2.2 there has been a new release: 2.2.1. This version of the “icedtea build framework” creates binaries for update 5 to the Java 7 platform. The resulting OpenJDK binaries will have additional patches compared to the original OpenJDK sources. Using icedtea is also the only way to get a Java web browser plugin: icedtea-web (Oracle did not release the source code of their browser Java plugin under an open license). Icedtea-web requires an “icedtea build” of OpenJDK (or OpenJRE if you only require a Java Runtime).

The new package for OpenJDK identifies itself as “7u5_b21-icedtea” which is at the same level as Oracle’s official binaries..

Note: you will have noticed that Slackware has not seen an update to the Oracle Java packages for a long time. This is the result of a new license policy by Oracle (who currently “owns” Java), whereby it is no longer allowed to re-distribute the official Oracle binaries of the JDK and JRE. These new license terms were added after large parts of Oracle’s Java code had been open-sourced as “OpenJDK”. You can update your Java using my native (i.e. compiled on Slackware) packages, or download Oracle’s official binaries yourself (which is allowed by their license). In that case, you can adapt Slackware’s “jdk.SlackBuild” build script to wrap those binaries into a Slackware package. The choice is yours!

Note: you will see two packages on my download server: a JRE (java runtime engine) and a JDK (java development kit) package. You should only install one of those! The JRE is sufficient if you just want to run Java based applications. You need the JDK if you want to be able to compile Java code. Also, do not use “upgradepkg” when upgrading from Oracle’s binaries to my own OpenJDK package or vice versa. Nor should you use “upgradepkg” when switching from a JRE to a JDK or vice versa. This will mess with the symbolic links used by the packages. Instead, use “removepkg” to get rid of the installed version and “installpkg” to get the new package.

You can test the installed packages here for instance:

Upgrade to my OpenJDK package now! In that case, you’ll need rhino too (the JavaScript engine for OpenJDK). If you want the mozilla compatible browser plugin, get icedtea-web.

Please consider using one of the mirrors. When we got the slackware.com web server up and running again, we applied a download cap to the core team’s pages which will slow down your retrievals. For instance, you could use my mirror taper.alienbase.nl or else one of the other mirrors likeย slackware.org.uk or alien.slackbook.org.

Have fun! Eric

 

24 Comments

  1. Mike Langdon (mlangdn)

    Thanks, Eric! I hope you have time for a normal life as well – you seem awful busy.

    This time, I removed openjre and installed openjdk. I’m not a developer, but I do compile some software at times, modifying or using a base template Slackbuild. Didn’t really know if i needed to use openjdk or not, but it sure won’t hurt anything. ๐Ÿ™‚

  2. LoneStar

    You know that a new JRE is out when Chrome begins complaining that you’re running an old java plugin and asks if you really want to start it ๐Ÿ˜€

  3. alienbob

    I do not use Chrome ๐Ÿ™‚

  4. LoneStar

    haha I use Firefox as default and Chrome as second browser for other things ๐Ÿ˜‰

  5. escaflown

    Thanks Eric!

  6. Brad

    Working great here. Thanks Eric!

  7. StreamThreader

    Hello, and thanks you for support slackware users!
    Why don’t install two packages at same time?
    If need compile java software, need change packages, and if run java soft i need again change package?

  8. alienbob

    @StreamThreader,

    It is quite simple: the JDK package also contains the JRE, so that you do not have to install the separate JRE package. In fact, this is exactly the reason that you must only install one of the two – the JRE and JDK packages conflict.

    If you do not need to compile java programs then installing the much smaller JRE package is enough. Some people do not want to install the bigger JDK package if they don’t have to.

    Eric

  9. StreamThreader

    Thanks!

  10. David Spencer

    FYI, the boostrap build of icedtea didn’t work for me on -current. It happens right at the beginning. It’s the dreaded DSO linking problem.

    /usr/lib64/gcc/x86_64-slackware-linux/4.7.1/../../../../x86_64-slackware-linux/bin/ld: /tmp/ccuFS2pi.o: undefined reference to symbol ‘_Jv_MonitorEnter’
    /usr/lib64/gcc/x86_64-slackware-linux/4.7.1/../../../../x86_64-slackware-linux/bin/ld: note: ‘_Jv_MonitorEnter’ is defined in DSO /usr/lib64/libgcj.so.13 so try adding it to the linker command line

    Let us pause for a moment to meditate on the chutzpah of gcj not linking libgcj unless you demand it.

    (… pause …)

    Ok, anyway, I fixed it with an ugly sed on the Makefile before “make VERBOSE=TRUE || exit 1” (I tried various LDFLAGS fixes, but looking at the Makefile, that was never going to be possible!)

    sed -i -e ‘s/-o native-ecj/-lgcj -o native-ecj/’ Makefile

    Hope this is useful to someone. I could cry when I think how many of these problems Eric must have fixed in the last six months to get openjdk working!

  11. alienbob

    I started with OpenJDK6. I then discovered that Slackware was not yet ready for building OpenJDK from scratch.
    It meant that I had to find out how to expand Slackware’s gcc and seamonkey packages to allow me to bootstrap OpenJDK. That alone probably cost me over 100 hours. It’s hard to put an hour value on that… it was a very frustrating time, and it felt like eternity. Out of frustration I tossed the whole idea aside at some point in december.
    I then discovered roughly a month later that IcedTea was required to add a web browser plugin, and I started from scratch on an OpenJDK7 package using the IcedTea framework. Which must have cost me at least another 100 hours of trial and error. Not counting the compilation time, because instead of waiting for the build I could do other things.

    I had two ulterior goals with this.
    First of all: my promise to Pat Volkerding to come up with a re-distributable Java package after Oracle changed its license. And second, to ensure that I would be able to repeat the process on an ARM architecture. Back in december I had decided I would order my first ARM based work horse using the donation money that had accumulated: the TrimSlite. ARMedslack did not have any Java – I think it still does not.

    So yeah, it cost me an arm and a leg, but Slackware improved as a result, even if OpenJDK may not get added in the end.

    Eric

  12. Mol_bolom

    For the Minecraft players out there who happen to experiment with upgrading to Openjdk/jre 7u5. Minecraft works well with lwjgl 2.8.1, but not with the later versions. So you will need to upgrade lwjgl (http://lwjgl.org/) over Minecraft’s installed version. (Note: this is on Slackware 13.37)

    The following is for web search queries to help people find this comment.

    Exception in thread “Minecraft main thread” java.lang.UnsatisfiedLinkError: /home/user/.minecraft/bin/natives/liblwjgl.so: libjawt.so: cannot open shared object file: No such file or directory

    lwjgl 2.8.3 Minecraft gets stuck at the pause screen / menu screen

  13. jenchi

    Hi Eric,
    first of all, thanks for all the hard work you do for us!

    I wanted to try out this OpenJDK as a replacement for Oracle JDK, but I can’t compile it on current64 multilib with your slackbuild.
    Required packages apache-ant, rhino, xalan and xerces are installed.

    First problem was the missing linking of libgcj, fixed with the tip of David Spencer (thanks David!).

    Now it starts compiling, but it exit with this error:

    Linking vm…
    collect2: error: ld returned 1 exit status
    ln: accessing ‘libjvm.so.1’: Too many levels of symbolic links
    [ -f libjvm.debuginfo ] || ln -s libjvm.debuginfo libjvm.debuginfo
    make[7]: stat: libjvm.so: Too many levels of symbolic links
    echo Linking launcher…
    Linking launcher…
    gcc -m64 -Xlinker -O1 -Xlinker -z -Xlinker noexecstack -m64 -Xlinker -export-dynamic -L pwd -o gamma launcher/java_md.o launcher/java.o launcher/jli_util.o launcher/wildcard.o -ljvm -lm -ldl -lpthread
    /usr/lib64/gcc/x86_64-slackware-linux/4.7.1/../../../../x86_64-slackware-linux/bin/ld: cannot find -ljvm
    collect2: error: ld returned 1 exit status

    Really don’t know how to fix it.. Any ideas?

  14. Bob Zowaki

    Thank you for this,it made installing the latest version of Java easy, im going to use the open source one from now on instead of the Oracle version.

    It’s just a shame that Oracle is slowly turning Java closed source.

  15. jenchi

    After 1 hour of compiling and 7GB of disk space, I finally compiled OpenJDK. I still don’t know what exactly was broken, but reinstall gcc-java fixed it.

    So, again, thanks Eric! \o/

  16. alienbob

    It’s remarkable how closely the openjdk.SlackBuild of slacky.eu resembles my own openjdk.SlackBuild on which I spent an *insane* amount of time to get it right… See http://repository.slacky.eu/slackware64-13.37/development/openjdk/7u5_b21/src/openjdk.SlackBuild – the bootstrap code was removed but there are lots of literal copy/paste. However, my name is not mentioned anywhere and a guy called miklos < ardutu at gmail dot com > takes all the credit.
    That’s not what the license header states, folks!
    # Redistribution and use of this script, with or without modification, is
    # permitted provided that the following conditions are met:
    #
    # 1. Redistributions of this script must retain the above copyright
    # notice, this list of conditions and the following disclaimer.

    I really dislike it when I see this happen. This is not the spirit of Open Source.

    Eric

  17. Mike Langdon (mlangdn)

    Right or wrong, I fired off an email to miklos with a corrected version. You are on the bcc. I hope I’m not too far off the wall with this one, but it irritated the sh** out of me.

  18. Athol

    I was reading about a zero day exploit in the Oracle version of Java 7 on all supported platforms. That got me wondering if the exploit is likely to also apply to icedtea?

    http://nakedsecurity.sophos.com/2012/08/28/unpatched-java-exploit-spreads-like-wildfire/

  19. alienbob

    According to this Redhat bug report, OpenJDK is affected too: https://bugzilla.redhat.com/show_bug.cgi?id=852051 however I do not know yet if the icedtea build of OpenJDK is (icedtea adds additional patches).

    Eric

  20. Athol

    Good news. At that bugzilla link, comment 9 from David Jorm specifically says that the IcedTea-Web browser plugin doesn’t have the flaw, which sounds like using java within a web browser is safe.

    I’m not certain but I get the impression that java programs run outside the browser still have the potential for the exploit.

  21. Jean-Francois Blavier

    There was an update to icedtea-web-1.2.1 released on 31-Jul-2012 but not announced on the icedtea blog.

    Many, many, thanks for these java packages!!

  22. alienbob

    Hi Jean-Francois

    I’ll think of you if ever I visit the US and pass the Jet Propulsion Laboratory ๐Ÿ™‚ Do you actually use Slackware over there?

    Glad to be able to offer a secure Java browser plugin package for Slackware in days like this…

    Cheers, Eric

  23. alienbob

    A new icedtea is out which resolves the 0-day in OpenJDK. it will also update the reported Java version to update6:

    $ java -version
    java version “1.7.0_06”
    OpenJDK Runtime Environment (IcedTea7 2.3.1) (Slackware)
    OpenJDK 64-Bit Server VM (build 23.2-b09, mixed mode)

    Once I have the 32-bit JDK/JRE and new icedtea-web built I will upload the lot.

    Eric

  24. Jean-Francois Blavier

    Hi Eric,

    Thanks for the new OpenJDK and icedtea-web packages: installed them this morning without problems!

    And, yes, I use Slackware at work and at home. Do drop me a line, if you visit the area.

    Thanks again!

    Jean-Francois

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

© 2024 Alien Pastures

Theme by Anders NorenUp ↑