When I wrote the previous article, I saw a lot of opinions about the fact that the Oracle JDK was paid. The Java neighborhood is shaken by a tremor, it can not be used for free anymore, Oracle's possession of Java itself is a risk, and in such a situation, what do you care about, such as "good feeling"? Are you saying, etc ...
I'm not familiar with anything other than pure programming knowledge about Java, so I thought I shouldn't touch it too much. However, I thought that it would be better to think about it before writing "good feeling", so I decided to do a little research and write this article (I would appreciate it if you could point out the wrong part).
Then, what is the subject? ** I got the impression that there are many criticisms of the charge for Oracle JDK and opinions on trends in the Java area that have a slightly different direction **. .. At the very least, I think the language specification and the charge for the Oracle JDK can be considered separately to some extent. In order not to confuse this area, I would like to summarize the current situation and then describe future trends.
For now, I would like to emphasize that ** Java is not for Oracle, but for the community **.
Not long ago, there was an article on the Oracle website claiming that, and I think it will remain the same (the reason is included in the explanation below). ["Does Java belong to Oracle?", "No, it still belongs to the Java community!"](Https://www.oracle.com/technetwork/jp/database/articles/pickup/index-1838236-ja. html)
The Java specifications are not determined by Oracle, but by the JCP (Java Community Process). "JCP" is quoted from IT Glossary as it is.
JCP is the name of an international organization that publishes the process of developing Java-related technologies and standardizing specifications. Founded in 1998 by Sun Microsystems.
The JCP is made up of corporate and individual members. Individual members are given the right to evaluate Java-related technologies before they are released and request revisions to their specifications. The target technologies are language specifications, platforms, application programming interfaces, and so on.
JCP members have individual licenses and can implement independent specifications based on the TCK (Technology Compatibility Kit) as long as compatibility in Java is guaranteed. General corporate members can become members for a fee, but individuals, educational organizations, non-profit organizations, etc. can access JSR's TCK for free.
The JCP seems to have been jeopardized when Oracle acquired Sun, but that's a shame. I think it will continue in the future.
The final decision on the Java specification is made by voting by JCP members who have voting rights, whereas Oracle does not have any special voting rights (certainly).
For more information about JCP, please refer to the following.
The Oracle website mentioned above has the following explanation.
So what is Oracle's position on Java? Oracle is the PMO (Program Management Office) of the JCP, so to speak, the administrator of Java and JCP. For example, when deciding something in the JCP, the process will not go smoothly unless someone moderates the process. As a Java administrator, Oracle helps keep those processes running smoothly.
Personally, I don't think it's possible for Oracle to upset its current position and monopolize all of Java's specification decisions. If we monopolize what has developed so far with the power of the community, we will inevitably lose the image of both companies and Java.
Products that have passed the TCK (Technology Compatiblility Kit) are certified as "Java" products. The Oracle JDK, which is a hot topic these days, is one of the "Java products" and only one of them. Any "Java product" that has passed TCK should behave the same on the surface, no matter which distribution you use. So, even if you decide to use something else from the Oracle JDK in the future, you basically don't have to worry about which distribution to use for programming unless you use the product's unique features.
OpenJDK is an open source product that has undergone various transitions since the days of Sun, and it seems that the Java products currently on the market are more or less based on OpenJDK. Oracle has made a significant contribution to OpenJDK development and has stated that it will continue to do so.
In response to criticism that the release interval is long and the language itself is slow to progress, the release model after Java 9 has been reviewed, and major version upgrades have been made once every six months. However, the main change is that the release cycle has been accelerated, and it seems that the number of specification changes and additions has not increased dramatically. Therefore, I think that you don't have to worry about the backward compatibility being significantly reduced for now. In fact, I've heard that Java 9 and later updates seem to work pretty well (I'll talk about Java 9 issues later).
Regardless of likes and dislikes, it is doubtful that Oracle has made significant contributions to Java, including community development that inherited Sun's will, long-term free provision of Java products including binaries, and OpenJDK development. Isn't it a fact that can't be helped? Therefore, I think it's a little different to blame Oracle for paying only for the Oracle JDK.
Also, considering that the funds obtained from the fee will be invested in interesting attempts such as GraalVM, it is a disadvantage as a general developer. I think it's just a story.
However, Oracle has avoided making explicit statements about LTS (Long-term Support) for OpenJDK, and it seems that it will not be realized at least for Java 11. If LTS was guaranteed early, I think it wouldn't have been a big deal in the first place, but this is a difficult place. We will discuss this later.
It's hard to read what LTS avoids while clearly stating OpenJDK support, but I'll consider it for myself.
There are definitely people out there who prefer paid, well-known companies-supported products to free open source products. I suspect that Oracle is trying to pay for these people and companies in the name of its own brand and the track record of the Oracle JDK.
Although the Oracle JDK will be charged, it seems that support for OpenJDK should not be stopped because a large number of Java users and the open community they support need to be retained. However, if I declare LTS for OpenJDK, I think that I am avoiding it because I may not be able to differentiate from OrcleJDK and it may be buried. I think this is the cause of confusion in places where it is difficult to adjust.
In fact, while I was writing this article, quite shocking news came in. [Breaking news] Amazon Corretto, an OpenJDK that can be used on multiple platforms, has been announced!
However, I feel that Oracle has been waiting for this trend. I think that it does not overlap with the target layer of Oracle explained above, and that it will not develop into a pie competition with the Oracle JDK and others.
In addition, it can be expected that this will prevent Java users from leaving and will lead to the maintenance of the community. Furthermore, if the number of non-Oracle supporters for OpenJDK increases, I think it will be a good flow with few disadvantages for Oracle.
The division of the Java community that has developed so far has too many disadvantages, so it seems that it will move in the direction of avoiding it. So, for example, I don't think Java itself will fork and create another project to compete for users (isn't it feasible in the first place?).
Is it a balance between how long Oracle's contribution to OpenJDK will continue and whether OpenJDK will take the share of Oracle JDK?
Personally, as I explained above, I don't expect OpenJDK to take the share of the paid Oracle JDK, but I'm wondering how Oracle will work if this isn't the case.
If you want to continue using Java for free, it's about which distribution to use. For now, Amazon Corretto seems to be the most powerful, but I think it is necessary to keep an eye on it until the situation settles down (or whether it settles down in the first place).
With that in mind, here are some thoughts on what Java users should do in the future.
Basically, Java has high backward compatibility even if it is a major version upgrade, but you need to be careful only when upgrading from Java 8 to Java 9 or later. With the introduction of the modular system, it looks like it doesn't change much on the surface, but it has drastic changes internally. Even if the compilation passes, there is a good chance that the app will not start or will not work during operation. Therefore, it is better to overcome the Java 9 barrier as soon as possible (although it feels more like this now).
Reference: Beyond Java 9-JavaOne Conference 2017 Report
I think that a test automation mechanism should be adopted even when LTS for OpenJDK is no longer available and it becomes necessary to update frequently. Also, even during LTS, if a serious security vulnerability is found, version upgrade work will occur, so I wonder which way should be introduced.
Previous article As mentioned in the article, some test frameworks are substantial, and if you can use it well, version upgrade work You can keep costs down.
A little bit of concern at the end.
When I wrote the previous article, there were some opinions that were concerned about the cost of upgrading to Java. Of course, version issues may exist in other languages as well.
Java itself is highly backward compatible, and because it is a compilation language, I think that version upgrade work is in a fairly easy category. Depending on the language, compatibility may not be maintained even with minor version upgrades, but how do you handle that?
In addition, in the case of switching from Java to another language or framework due to concerns about version upgrade work costs, when selecting that language or framework, security aspects, upgrade work ease, and enhancement of test framework I'm very worried about whether the degree is taken into consideration.
To be honest, there is nothing to say if it is a criticism of the current state of Java mentioned in this article and a departure from Java. If you've learned a lot for the first time, why not take this opportunity to research and rethink Java?
Even if the views in this article are off the mark, I hope it will give you an opportunity to reaffirm the current situation and consider future trends.
Thank you for staying with us until the end.