You're probably asking yourself, "Pricing? Really? In a techie blog?", and I would normally agree wholeheartedly with your assessment. But in this one instance the topic might be worthy of a few words. There is, as the expression goes, no such thing as a free lunch. Whether you pay for software outright, or roll your own with open source projects, a cost must be paid.
Like clockwork, we regularly receive inquiries for Java embedded information that go something like this:
Dear Oracle, We've downloaded and evaluated Java SE-Embedded and have found it to be a very appealing platform to run our embedded application. We understand this is commercial software; before we decide to deploy our solution with your runtime, can you give us a feel for the royalties associated with shipping x number of units?
Seems pretty straightforward, right? Well, yes, except that in the past Oracle required the potential customer to sign a non-disclosure agreement prior to receiving any embedded pricing information. It didn't matter if the customer was interested in deploying ten units or ten thousand, they all had to go through this process. Now certain aspects of pricing may still require confidential agreements, but why not make quantity 1 list prices available? With the release of this document, that pricing information is now public.
The evidence is out there, both anecdotal and real, demonstrating that
Oracle's Java SE-Embedded platform is unquestionably superior in quality
and performance to the OpenJDK variants. For the latest example, take a look at this blog entry.
So the question becomes, is it actually more affordable to pay for a
commercial platform that is fully supported, faster and more reliable or
to opt for a "free" platform and support it yourself.
So What Does Java SE-Embedded Cost?
The universal answer to such a question is: it depends. That is to say it depends upon the capability of the embedded processor. Before we lose you, let's show the list price for Java embedded licensing associated with three platforms and then explain how we arrived at the numbers. As of the posting of this entry, 06 December, 2013, here they are:
How Does It Work?
These bullet points help describe the process, then we'll show how we arrived at our three sample platform prices.
The core factor table that follows, found in the Oracle Java Embedded Global Price List, dated September 20, 2013, groups processors of similar capabilities into buckets called chip classes. Each chip class is assigned a core factor.
To compute the per-unit cost, use this formula:
Oracle Java Embedded per-core license fee * core factor * number of cores * support uplift
The standard per-core license fee is always $300. The Raspberry Pi is a Class I device and therefore has a core factor of .002. There is only one core in the Raspberry Pi, and the Software Update License & Support fee is always 19%. So plugging in the numbers, we get:
$300 * .002 * 1 * 1.19 = $0.714
The processor in this example, the Intel Atom Z510P, is a Class II device and has a core factor of .0075. Using the same formula from Example 1, here's what we get:
$300 * .0075 * 1 * 1.19 = $2.6775
The processor for the Trim-Slice is based on the ARM Cortex-A9, a Class II device. Furthermore it is a dual-core system. Using the same formula as the previous examples, we arrive at the following per-unit pricing:
$300 * .0075 * 2 * 1.19 = $5.355
With your hardware specs handy, you should now have enough information to make a reasonable estimate of Oracle Java embedded licensing costs. At minimum, it could be a help in your "buy vs. roll your own" decision making process. And of course, if you have any questions, don't be afraid to ask.