Oracle releases JDK for Linux ARM, JRE for Mac OS X

Earlier today, we announced (among other things) the availability of JDK 7 Update 6. This release contains an update to the Mac OS X port, as well as the addition of a new JDK port to Linux ARM.

The Java 7 port to Mac OS X has been long in the making. We have been working on it in OpenJDK with Apple since November 2010, and it has been quite a lot of work both in the JDK/JRE and in OS X to get to this point. A lot of work has been done behind the scenes on seemingly trivial but time-consuming tasks such as extending the build & test infrastructure and figuring out how to decouple the Java and OS release cycles. Anyway; with the 7u6 release we are finally completing the feature set by adding a desktop JRE and making it available for download on java.oracle.com and (in a week or so) on java.com.

With JDK 7u6 we are also adding a general-purpose port of the JDK (but not a desktop JRE) to Linux ARM, and making it available under the same licensing terms as Oracle Java for other platforms. This JDK release is aimed at the emerging ARM server market, and for the community working on development boards such as the BeagleBoard, PandaBoard and the Raspberry Pi. This port provides 32-bit binary for ARMv6 and v7, with full support for Swing/AWT, both client (C1) and server (C2) compilers and runs on most Linux distributions. One caveat is that the current binary is softfloat ABI only, so it won't work with (for example) the Raspbian distribution which uses the hardfloat ABI. We are planning to add hardfloat support in an upcoming JDK release, as well as support for JavaFX on ARM.

I anticipate quite a few questions about the ARM port, so here are a few FAQs to start with:

  • What is the relation between Java SE Embedded and the JDK for ARM? Java SE Embedded is a Java SE compliant runtime optimized for small footprint devices, available for multiple architectures including ARM v5/6/7, x86 and PPC. It is a product that Oracle licenses commercially for embedded use. The JDK is a generic Java runtime and development kit, intended for developers and server-side applications and is available on architectures such as x86, SPARC and - now - ARM. It is free for general purpose use, with commercial support available under the Java SE Support program.
  • Is the ARM JDK free (gratis) or does it require a commercial license? Like all general-purpose JDK and JRE binaries, the ARM JDK is free for development and production use on general-purpose hardware, and can be redistributed for free with applications targeting a general-purpose computer. See the end-user license for the exact license grants & restrictions. To take a couple of examples, an ARM server deployed in your datacenter running Tomcat or Glassfish is general-purpose, as is a Raspberry Pi board when you use it like a PC. An industrial controller or a kiosk appliance is not general purpose, and both would require a commercial license.
  • Is the Oracle JDK port to ARM available in OpenJDK? No, and we are not planning on open sourcing it at this point.
  • I own a Raspberry Pi/BeagleBoard/PandaBoard. How do I get Java running on it? Make sure that you use a Linux distribution that uses the softfloat ABI, or a hardfloat ABI that has multi-arch support but not a distribution that only supports hardfloat (such as Raspbian), and then download and install the Oracle JDK on it.
  • Why is Oracle investing in an ARM port and then giving it away for free? We have a super-secret agenda. The idea is to enable Java developers so that Java can continue to thrive, and maybe sell some middleware on ARM servers down the line.
  • Is graphics fully supported? What about sound? Yes, the JDK binary is headful which means that Swing/AWT and sounds are both supported. Note that sound is not available in our headless Java SE Embedded binaries, which is the most likely reason for a small set of reports on sound issues found across the web. Swing/AWT requires X11R6 to work, framebuffer is not supported. JavaFX is not yet available on Linux ARM, but is in our roadmap.
  • Does the Linux ARM JDK have full feature parity with the JDK on other platforms? Most of the JDK features are supported, but there are some that are not available. Some examples of missing features include the G1 GC, tiered compilation and plugin/webstart. See the release notes for more detail. Some of these features will be added in future releases.
  • What is this softfloat vs hardfloat thing? When will the Oracle JDK support hardfloat? Some ARM chips have hardware support for floating point (hardfloat), and some do floating point through software (softfloat). An operating system running on an ARM chip that supports hardware floating point can use the floating point registers for parameter passing during function calls, which improves performance. This parameter passing is a contract between the OS, libraries and applications (such as the JVM) called the ABI or Application Binary Interface. In the simple case, an OS exposing the softfloat ABI requires all libraries and applications to be compiled against softfloat, and an OS exposing hardfloat requires libraries and applications to be compiled against hardfloat. There is a special case where a hardfloat OS can provide a compatibility layer and therefore enable softfloat applications to work. Until recently, almost all Linux distributions were softfloat. Lately, Linux distributions have aggressively moved to hardfloat. Some - I believe Ubuntu 12.04 is a good example - also provides softfloat compatibility. Raspbian on the other hand is hardfloat only. The initial release of the Oracle JDK for ARM uses the softfloat ABI and so works on softfloat distributions, or hardfloat with softfloat compatibility, but not on hardfloat. This is just a matter of timing - we will provide a hardfloat JDK at some point in the future. It will likely be done iteratively, so we may for instance deliver ARMv7 first and ARMv6 later, and the initial release may be headless so no Swing/AWT. We will produce public early access builds as soon as we are able and make them available on java.net. We don't have any dates to share yet, but will hopefully be able to provide a roadmap at JavaOne 2012.
  • Now that you have a public ARM port, will you support other OSes like iOS? Linux is a simple port, iOS is not. We have done some prototyping, but at this time it's not something we have on our roadmap. One of many open questions is what UI to use. JavaFX is an option, or a hybrid Java+Web combination like the one used for ADF mobile. It's really a matter of whether a solution would get sufficiently broad adoption to be worth the investment. If you want something NOW, head over to OpenJDK and start hacking! :-)
  • If I'm not an Oracle customer, how do I report an issue on the ARM JDK? Use the Java developer forums on OTN for general questions, and bugs.sun.com for bug reports.
  • Is Jazelle hardware byte-code execution supported? No. Jazelle is not needed when a good JIT is present, and you can afford the memory and power budget for it.

Comments:

This is a great news!

Posted by giovanni on August 14, 2012 at 07:28 PM PDT #

Super-secret agenda? Oracle's strive for world domination is no secret ;-)
I hope the ARM branch will evolve in good support of Java on tables.

Posted by tbee on August 14, 2012 at 11:23 PM PDT #

ARM JVM for iOS??
:)

Posted by dovakin on August 15, 2012 at 01:03 AM PDT #

Very good news, agreed, and I shall be a user of both mainline OS X and ARM builds. Anything to loosen both ends of the Wintel axis is good by me. But now that the secret agenda is leaked when do we get full disclosure about the super secret space ship and underground lair full of photogenic cat-suited Oraclites slaving over Heisenbugs? B^>

Rgds

Damon

Posted by Damon Hart-Davis on August 15, 2012 at 01:33 AM PDT #

Great news indeed! Just a dumb question: Swing will work in X server only, or will it work in a framebuffer as well?

Posted by guest on August 15, 2012 at 04:38 AM PDT #

Great ! any idea when hardfloat support will be coming along ?

Posted by Andy C on August 15, 2012 at 05:49 AM PDT #

great news ! Any idea on how long the hardfloat support will take and will be backported to Java6 ?

Posted by AndyCobley on August 15, 2012 at 05:50 AM PDT #

For end-user developerss, Oracle Java on OSX is really great new!

Posted by Clemens Eisserer on August 15, 2012 at 06:55 AM PDT #

BTW, you say this includes C1 and C2 support... What about tiered compilation which seems to work well for my applications?

Rgds

Damon

Posted by Damon Hart-Davis on August 15, 2012 at 07:57 AM PDT #

Hi all - Have answered all questions to date by updating the FAQ section of the blog entry. Keep them coming!

Posted by Henrik on August 15, 2012 at 01:49 PM PDT #

Is Android a general-purpose computer OS, for you?

Currently I have a Symbian smartphone, but this is really a pocket computer for me, not a communicating device: I never use phone feature, even deactivated 3G access (I had chosen it for offline useful mode, Swype keyboard, WiFi, integrated maps, etc.). I think many other people use smartphone not as a phone but as an mobile computer. Most of time, I use it on keyboard (like note taking, send via Bluetooth to computer, when computer is here).

Posted by guest on August 16, 2012 at 12:34 AM PDT #

Is Jazelle hardware byte-code execution supported?

Posted by guest on August 17, 2012 at 12:49 PM PDT #

Hi,
there will be a MIPS port for JDK or at least for JRE Embedded headless ?

Posted by Fabry on August 23, 2012 at 11:55 AM PDT #

i can not play pogo and the reason is posted " The page Club Pogo attempted to load Java content, butJava is unavailable or not enabled" I have updated,enabled and still no go. I have an imac 10.5 8

Posted by guest on August 27, 2012 at 02:03 PM PDT #

An Android-based PC could be considered general-purpose. Phones and wireless handheld devices (such as tablets) are not. See the Oracle Binary Code License text for details.

Oracle has not made any public announcements about additional JDK ports (such as MIPS) beyond the current set.

If you need Java Applet support, install the JRE from java.com. That should work with Pogo.

Posted by Henrik on August 28, 2012 at 08:56 AM PDT #

Post a Comment:
Comments are closed for this entry.
About

Henrik Stahl is VP of Product Management in the Java Platform Group at Oracle, and is responsible for product strategy for Java ME and SE.

Search

Categories
Archives
« April 2014
SunMonTueWedThuFriSat
  
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
   
       
Today