Thursday Oct 31, 2013

ARM TechCon 2013: Oracle, ARM expand collaboration on servers, Internet of Things

If you have been following Java news, you are already aware of the fact that there has been a lot of investment in Java for ARM-based devices and servers over the last couple of years (news, more news, even more, and lots more). We have released Java ME Embedded binaries for ARM Cortex-M micro controllers, Java SE Embedded for ARM application processors, and a port of the Oracle JDK for ARM-based servers. We have been making Java available to the Beagleboard, Raspberry Pi and Lego Mindstorms/LeJOS communities and worked with them and the Java User Groups to evangelize Java as a great development environment for IoT devices. We have announced commercial relationships with Freescale, Qualcomm, Gemalto M2M, SIMCom to name a few. ARM and Freescale on their side have joined the JCP, recently been voted in as members of the Executive Committee, and have worked with Oracle to evangelize Java in their ecosystem.

It is with this background, Nandini Ramani, Vice President, Java Platform at Oracle, announced a expanded collaboration with ARM in a TechCon 2013 keynote titled "Enabling Compelling Services for IoT". To summarize the announcement:

  • ARM and Oracle will work together on interoperability between the ARM Sensinode communications stack (based on CoAP, DTLS and 6LoWPAN) and Oracle's Java ME, Java SE and middleware products.
  • ARM will donate the Sensinode CoAP protocol engine to OpenJDK to stimulate broad adoption of the CoAP protocol, and work with Oracle to extend the relevant Java specifications with CoAP support. CoAP (Constrained Application Protocol) is an IETF specification that provides a low-bandwidth request/response protocol suitable for IoT applications.
  • ARM will work with Oracle and Freescale to enable the mbed Hardware Abstraction Layer (HAL) to act as a portability layer for Java ME Embedded. Oracle will enable mbed as a tier one platform for Java ME Embedded. Over time, this effort will allow any mbed-enabled platforms (mostly based on Cortex-M microcontrollers) to work with off the shelf Java ME Embedded binaries, extending the reach of Java ME into IoT edge nodes.
  • In Nandini's keynote, Oracle showed a roadmap to port the Oracle JDK for Linux on 64-bit ARMv8 servers in the 2015 time frame, preceded by an extended early access program. We expect this binary to have full feature parity with Oracle JDK on other platforms, and be available under the same royalty-free license. This effort has been going on for some time, but is now accelerated due to availability of hardware from Applied Micro. Oracle will be working with Applied Micro on the ARMv8 port, and on optimizing Java for their X-Gene products.
  • Oracle and ARM will work closely on IoT architecture, and on evangelizing Java on ARM for both servers and IoT devices.

These announcements reinforce Java's position as a first-class citizen in the ARM ecosystem, and signal a commitment from us to collaborate on driving standards and open ecosystem for the Internet of Things. If you are active in this area and not already in touch with us, or interested in learning more - please reach out to us!

Tuesday Sep 25, 2012

Oracle releases new Java Embedded products

With less than one week to go to JavaOne 2012, we've spiced things up a little by releasing not one but two net new embedded Java products. This is an important step towards realizing the vision of Java as the standard platform for the Internet of Things that I outlined in a recent blog post. The two new products are:

  • Java ME Embedded 3.2. Based on same code as the widely deployed Oracle Java Wireless Client for feature phones, this new product provides a Java ME implementation optimized for very small microcontroller-based devices and adds - among other things - a new Device Access API that enables interaction with peripherals common in edge devices such as various types of sensors. In addition to the new Java ME Embedded platform, we have also released an update of the Java ME SDK which adds support for the development of small embedded devices.
  • Java Embedded Suite 7.0. This is an integrated middleware stack for embedded devices, incorporating Java SE Embedded and versions of JavaDB, GlassFish and a Web Services stack optimized for remote operation and small footprint.

A typical Internet of Things (or M2M) infrastructure contains three types of compute nodes: The edge device which is typically a sensor or control point of some kind. These devices can be connected directly to a backend through a mobile network if they are installed in - for example - a remote vending machine; or, they can be part of a local short-range network and be connected to the backend through a more powerful gateway device. A gateway is the second type of compute node and acts as an aggregator and control point for a local network. A good example of this could be a generalized home Internet access point, or home gateway. Gateways are mostly using normal wall power and are used for multiple applications, deployed by multiple service providers. Finally, the last type of compute node is the normal enterprise or cloud backend. Java ME Embedded and Java Embedded Suite are perfect base software stacks for the edge devices and the gateway respectively, providing the Java promise of a platform independent runtime and a complete set of libraries as well as allowing a programmer to focus on the business logic rather than plumbing.

We are very thrilled with these new releases that open up exciting opportunities for Java developers to extend services and enterprise applications in ways that will make organizations more efficient and touch our daily lives. To find out more, come to the JavaOne conference (for technical content) and to the Java Embedded @ JavaOne subconference (for business content). There will be plenty of cool demos showing complete end-to-end applications, provided by Oracle and our partners, as well as keynotes and numerous sessions where you can learn more about the technology and business opportunities.

Tuesday Aug 14, 2012

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.

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