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:
- How do I test whether Java is working on my computer? (shows what version of Java you have)
- An interactive Java plugin for 3D molecular models (tests the installed icedtea-web plugin)
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
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. ๐
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 ๐
I do not use Chrome ๐
haha I use Firefox as default and Chrome as second browser for other things ๐
Thanks Eric!
Working great here. Thanks Eric!
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?
@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
Thanks!
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!
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
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
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?
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.
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/
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
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.
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/
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
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.
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!!
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
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
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