Fig 1 - Java - write once run anywhere
Oracle wasn’t able to provide someone to talk to us, but did provide plentiful references from its website. Oracle separates security patches from the closed OpenJDK vulnerability group (set up initially by Oracle) from more general patches and updates. What it calls critical patch updates, are usually 2-8, (at most around 30) security patches; whereas its patch set update, which includes everything else, as well as the security patches, could be hundreds of changes, quite often with stability issues. Obviously, just rolling out security patches is less of a management overhead, as it is easier to test a smaller set of changes, and the rest can be rolled out with more time for thorough regression testing etc.
Implementation of the ordinary OpenJDK is is not much of a differentiator but Oracle also has a Performance Java, GraalVM. GraalVM Enterprise is included with the Java SE Universal Subscription at no additional cost. It pre-compiles applications into native code before you start (unlike other approaches, which profile the resources being used by a running program for a quick “just-in-time” (JIT) start next time). This gives you extremely quick startup but is less responsive to changes in optimisation needed by a running program, which JIT deals with easily. GraalVM Enterprise does have profile-guided optimisation, which feeds back into the pre-compilation, but this can’t dynamically respond to a running application’s needs, as JIT compilation can. We think that there will be some applications where GraalVM Enterprise will perform better. For example, with very short-running (“ephemeral”) services, as associated with the rather badly-named “serverless” computing, start-up time is all that matters and GraalVM will work well; but for longer-running services alternative approaches could well deliver more performance over time.
Oracle is a large and respected company, and should provide first-class levels of global support, although it may not be as responsive to the needs of its smaller customers as a smaller company might be.
Oracle bases its universal subscription pricing (for new subscribers) on the number of employees in your company, regardless of whether they use Java or not. The example Oracle gives in its price list is:
Your company has a total employee count of 28,000 as detailed in the Employee for Java SE Universal Subscription definition below.
This includes 23,000 full-time, part-time and temporary employees plus 5,000 agents, contractors and consultants.
Therefore, the price would be 28,000 X $USD 6.75/month X 12 months= $USD 2,268,000/year.