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 10, 2013

Oracle JDK 7u40 released - security features, hardfloat ARM, Java Mission Control and more

Oracle JDK 7 Update 40 is now available. This release introduces the following new features:

  • Java Mission Control. This is an advanced monitoring/diagnostics tool inherited from JRockit, now fully supported on the JDK 7. Also adds new features such as a DTrace plugin.
  • Java Flight Recorder, again a feature ported over from JRockit. This is a really cool feature that enables you to record events and metrics during runtime, and then extract them at will. You can even dump all or part of the data on a user-defined alert. Eg, "Why did that transaction take more than 1 second? Give me the last 10 seconds of data in your buffer so that I can figure out what went wrong."
  • Support for the Apple Retina display with Swing/AWT and JavaFX.
  • A new JDK binary for hardfloat Linux/ARM, for ARM-based micro servers and development boards. Yes, this means that we now have official JDK 7 support for the default Raspbian Linux distribution for the Raspberry Pi.
  • A new Deployment Rule Set feature to enable fine granular controls for execution of Applet and WebStart applications.
  • Security feature enhancements for applets, JAXP and x.509 certificates.

The new update of the JRE and the JDK are available from OTN. For more information, see the release notes.

For Mission Control, a great source of information is Marcus Hirt's blog (thanks, Marcus!).

Monday Jun 10, 2013

TZUpdater for JDK 7 available (again)

The Timezone Updater Tool (aka TZUpdater) is available for public download from OTN [1] again.

On March 8, 2013, as part of maintenance tied to the end of public updates for Oracle JDK 6, the "Timezone Updater Tool" [2] was removed from OTN, with just a short note that this tool was now only available for Oracle Java SE Support customers. An unintentional side effect of this change was that it became impossible to keep Oracle JDK 7 up to date without a support contract, which is not in line with our policy: The most recent version of the Oracle JDK will always be available royalty free (including any tools required to keep it up to date).

The function of the TZUpdater tool is to enable an Oracle JDK or JRE user to patch their installation with the most recent timezone data. Our goal is to make sure that the most recent version of the JDK and JRE always contain the most recent timezone data, so that there is rarely need for a separate TZUpdater tool - you just upgrade to the most recent JDK/JRE. However, this is not always possible given the timing of the timezone updates and has specifically not been true over the past several months. We are reviewing our development process to determine what guarantees we can put in place for the gap between a timezone update and it being available in a public JDK/JRE release, and will also continue to make TZUpdater available for the most recent JDK version whenever it is needed to keep the most current JDK/JRE up to date.

For users who require updates and supportability tools for older versions of the Oracle JDK, we continue to recommended Java SE Support [3] which provides long term support.

To all of those in the Java community who were affected by this, we apologize for any confusion or inconvenience we caused, and we are grateful to those of you who reached out to us directly to bring this to our attention. As always, several Java User Group leaders and Java Champions were diligent and helpful - Stephen Colebourne, in particular, provided detailed, helpful technical analysis from a community perspective.

[1] - http://www.oracle.com/technetwork/java/javase/downloads/tzupdater-download-513681.html
[2] - http://www.oracle.com/technetwork/java/javase/tzupdater-readme-136440.html
[3] - http://www.oracle.com/us/technologies/java/standard-edition/support/overview/index.html

Thursday Apr 18, 2013

Updated release schedule for Java 8 proposed

Mark Reinhold has posted a blog with a proposal to delay the release of Java 8 to the first quarter in 2014. For full detail on the background and details on this, see his blog. For details on the proposed schedule, see his post to the OpenJDK mailing list.

Oracle JDK 7u21 released with new security features

Oracle has released a Critical Patch Update for Java, which includes updates to JDK 6 and 7. More information on the CPU content can be found on blogs.oracle.com/security and in the release notes (7u21, 6u45). The JDK 7 Update also introduces a number of feature enhancements intended to improve security. For more information on these features, see the release notes.

The releases are available from the following download sites:

Q: Is there a JDK 6 Update available as well?
A: Yes, we continue to make JDK 6 Updates available to Oracle support customers through My Oracle Support for the full commercial lifetime of the product (currently December 2016). Also, although we have passed the End of Public Updates milestone, we decided to push out one additional public update of JDK 6 in order to make the security fixes in this CPU more broadly available.

Q: Will there be any more public updates of JDK 6?
A: No, we are not planning any more public JDK 6 updates. As of the next release which is scheduled for June we plan to move JDK 6u45 to the Oracle Java Archive.

Q: I want to continue to have free access to the Oracle JDK. Do you have any suggestions on how to migrate to JDK 7?
A: Yes, see my previous blog on this topic.

Q: I am an enterprise and need continued access to JDK 6. How do I go about getting continued support for Oracle JDK 6?
A: If you are an Oracle middleware or applications customer, support for the JDK used for your application is included in your support contract. You can also sign up for Java SE Support which extends support to our JDK when used with any custom or 3rd party application.

Q: Is Java SE Support price list publicly available?
A: Yes, see shop.oracle.com. Current pricing (April 17, 2013) is $5 per desktop and $250 per processor on servers, per year. For large volumes, contact Oracle Sales.

Sunday Feb 24, 2013

Java in Steam Store

If you are even remotely into PC gaming, you must be familiar with Steam. And if you are familiar with Steam, you are most likely aware that they recently announced the GA version of Steam for Linux. I for one hope that this might finally signal an advent in Linux as an accepted and broadly used platform for PC gaming. One nice side-effect is that Java might get more adoption in this space, such as for casual games (Angry Birds is a good example) and for any game which doesn't require absolute 100% control over the hardware to be performant (Minecraft falls in this group). The benefit of Java is clear; porting cost between different platforms goes down. It may not be write-once-run-anywhere depending on how you use native libraries but certainly easier than porting a native game.

With this in mind, I was very happy to see this blog about Java on Steam from Puppy Games. They have built a wrapper library around the Steam APIs and use LWJGL as a graphics library. Other options would of course be JOGL or - as it matures - JavaFX, which will very soon be fully open sourced through the OpenJFX project. A great simple example of a JavaFX game is this version of Pong which is written in less than 100 lines of code.

Kudos to Puppy Games for their initiative, and to Steam for going Linux!

Tuesday Feb 19, 2013

Migrating from Java SE 6 to Java SE 7

Why should I migrate from SE 6 to SE 7?

The most obvious reason is that you will get access to all the new features and improvements that we have made to Java with the introduction of Java 7.

A few of these changes might require some updates to your code, but they are changes that are well worth it from a performance, quality and readability perspective. You can find more information here: http://docs.oracle.com/javase/7/docs/webnotes/adoptionGuide/index.html

Another important reason is the End of Public updates milestone for Oracle JDK 6. After February 2013, future JDK 6 updates will no longer be publicly available and old JDK 6 releases will me moved to the Java Archive. Running on an old version of Java is a bad idea, so now is the time to move to 7. For more information on the End of Public Updates milestone, see Java SE End of Life Policy

If you are unable to migrate some of your applications and need continued access to Oracle JDK 6 updates, Oracle offers long-term support through the Java SE Support program.

What do I need to do?

Option 1 – “Just run”

Java has binary backward compatibility. This means that if you have a program that has been compiled for and is running with Java SE 6, it will also run on a Java SE 7 JVM. Java SE 7 is strongly compatible with previous versions of the Java platform. Almost all existing programs should run on Java SE 7 without modification. However, there are some minor potential incompatibilities in the JRE and JDK that involve rare circumstances and "corner cases" that are documented here for completeness: http://www.oracle.com/technetwork/java/javase/compatibility-417013.html#incompatibilities.

Option 2 – Re-compiling and modifying source code.

Most of the new features introduced with Java SE 7 are improvements on a Java code level. To benefit from these you will have to update your old source code, or use the new features in any new code you write, and recompile your code for Java SE 7.

The Netbeans IDE can help you find locations in the code where you can use some of the new features, see this link for details. Other major IDEs have similar features.

Some APIs have been marked as deprecated, which means we encourage you to use the replacement APIs instead. The deprecated APIs can be found here.

Also, some of the APIs in the sun.* packages have changed. These APIs are, and have always been, intended for internal use only and any use is “at your own risk”. It is strongly recommended to find alternatives to using these packages as soon as possible.

Oracle JDK 7u15 and 6u41 released

Oracle has released a Critical Patch Update which including updates to JDK 6 and 7. More information about this CPU is available on https://blogs.oracle.com/security and in the releases notes (7u15, 6u41).

The JDK releases are available from the following download sites:

Note that this JDK 6 release is the final public update of JDK 6. For more information on the End of Public Updates milestone, see my previous blog on the topic.

Sunday Jan 13, 2013

Oracle JDK 7u11 released

Oracle has released Security Alert CVE-2013-0422 to address the flaw in Java software integrated with web browsers. More information about this Security Alert is available on https://blogs.oracle.com/security. This is a blog that discusses when the bug was reported and actions that Java users need to take to secure their systems.

Java SE 7 Update 11 is available from the following download sites:

Friday Dec 14, 2012

Oracle JDK 7u10 released with new security features

A few days ago, we released JRE and JDK 7 update 10. This release adds support for the following new platforms:

  • Windows 8 on x86-64. Note that Modern UI (aka Metro) mode is not supported.
  • Internet Explorer 10 on Windows 8.
  • Mac OS X 10.8 (Mountain Lion)

This release also introduces new features that provide enhanced security for Java applet and webstart applications, specifically:

  • The Java runtime tracks if it is updated to the latest security baseline. If you try to execute an unsigned applet with an outdated version of Java, a warning dialog will prompt you to update before running the applet.
  • The Java runtime includes a hardcoded best before date. It is assumed that a new version will be released before this date. If the client has not been able to check for an update prior to this date, the Java runtime will assume that it is insecure and start warning the user prior to executing any applets.
  • The Java control panel now includes an option to set the desired security level on a low-medium-high-very high scale, as well as an option to disable Java applets and webstart entirely. This level controls things such as if the Java runtime is allowed to execute unsigned code, and if so what type of warning will be displayed to the user.

More details on the security settings can be found in the documentation. See below for a sample screenshot.

Security Dialog Image

The new update of the JRE and the JDK are available via OTN. To learn more about the release please visit the release notes.

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.

Thursday Sep 13, 2012

Java 7 Adoption at 79%

According to a recent blog post from the cloud hosting company Jelastic, Java 7 adoption on their platform is now at 79%. While this is a single data point and should not be read too broadly, it does match other indicators we have that Java 7 is picking up, such as uptake among Oracle middleware customers, download statistics and online activity. The spike in adoption in April coincided with the release of JDK 7 Update 4. This is in line with our expectations since that release added Mac OS X support as well as java.com moving to Java 7 as the default download for end-users; two events that marked the maturity of Java 7 to the community.

Since the original release of Java 7, Oracle has shipped 7 update releases, added ports to Mac OSX and Linux/ARM and expanded JavaFX to all common desktop platforms.

Thursday Aug 30, 2012

Oracle releases Java SE 7 Update 7, and Java SE 6 Update 35

This morning, Oracle released updates to JDK 6 and 7. For more information on these releases see:

Oracle recommends that users apply these updates as soon as possible. Users of Oracle JRE 6 and 7 for Windows (32-bit) and the recently released JRE 7 for Mac OSX (64-bit) will be updated automatically. For more information see, this blog entry.

Monday Aug 20, 2012

Introducing Java Embedded @ JavaOne

Analysts predict that the next revolution in the industry will be the Internet of Things. Speaking in hyperbole, the message is that we first had the Internet of Computers (90s), then the Internet of People (2000s) and that the next Big Thing (tm) is when all the gazillion devices we have around us start becoming connected. This is labeled the Internet of Things. Catchy phrase, isn't it?

So what are all these "things"? Well, if you look around, you will probably see a dozen of them from where you read this. Your car, an elevator, your washing machine, a pretty screen on your home AC control unit that shows scary statistics on how much power you're consuming in the heat of summer. And so on. A common description of this entire segment is "embedded", and it is an entire industry in and of itself. This industry is in a state similar to the PC market in the early 90s. There is a plethora of operating systems, toolchains, frameworks and standards, and a very fragmented hardware market. Programming these devices require specialized skills and is arguably quite a bit more complicated than writing a web or phone app.

In my completely unbiased opinion (ok, flame bait) it is clear that Java could be highly beneficial for this market. It has a large pool of skilled developers, a very mature runtime and development tools, and a well established ecosystem of commercial vendors and open source communities. Java is fast to work with, greatly simplifies portability of code across devices and - very important - adapts well to a rapidly evolving underlying platform. So you are moving from 16 (not a joke) to 32-bit? Just get a 32-bit JVM and you're set. Your embedded chips are becoming multi-core? Java and the JVM have supported multi-core for an eternity. You want to share that nifty communication protocol code you wrote between your backend and your little edge device? No problem. See?

For those interested in learning how to program embedded devices in Java, JavaOne has long had dedicated tracks and sessions for embedded and that remains true this year. However, this year we also wanted to reach out to executives and decision makers and show how Java can enable your business to benefit from the Internet of Things revolution. For this purpose we hold a new sub-conference called Java Embedded @ JavaOne.

If you are a business leader, register now. Then come and find out from us and our partners how Java enables tying embedded systems to your enterprise backend, and how Java can help your business grow with the Internet of Things while reusing existing investments and retaining good TCO on new investments.

If you are a developer, tell your manager that they should come and need a technical advisor (you) who can attend the main JavaOne event. And while you're there, go to a few embedded sessions to learn something new, such as how to make LEDs blink, how to properly secure an embedded device to avoid privacy issues or how to make it talk to your Java EE service in the cloud. Then go home and program your Java-enabled coffee machine to make you a perfect cup of Java :-)

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