3
4

More than 1 year has passed since last update.

Java17までの年表サマリ

Last updated at Posted at 2021-09-24

かなり偏見あり、だいたいWikipediaから引っ張てきた。

JDK 1.0 ~

家庭用組み込み目指してC++を煽ってたら、携帯とかにのってた時代。
Sunそのものは、Unixサーバー屋で、SolarisつうBSD改造したOSのせてうってた。Javaは野心的なプロジェクトだった。

~ J2SE 1.4 (2002年2月6日) / J2EE 1.2

J2EEが出て、Webシステムがガンガン作り始められた時代のJava。

Eは、エンタープライズ。エンタープライズ用Javaと言っても、サーバーサイドJavaの"仕様"と思ってOK。JDBC/JSP/Servlet/EJB とか。Javaはバイナリを配ってるけど、J2EEは仕様だけ、実装はお任せというスタンス。

J2EEは、IBMとかRedhat(JBoss)とかOracleのほうが有名でだいたい有料。SI屋はこっちと契約する。SunのJ2EEアプリケーションサーバーってあったのぐらいに知らない。

J2SE 5.0 (2004年9月30日) / Java SE 6 (2006年12月11日) / Java EE 5

StrutsからSpringのような発展期にいたJava。名前がごちゃごちゃ変わってた時。

5.0でジェネリクス/Enum/アノテーション/for文とか入りました。今じゃ無かったことに驚かれるのでは。
Java EE 5は、EJB3.0になり、Springのような軽量性にシフト。Spring王国の始まり。

200X年の後期までは、このJavaについていけないJavaプログラマがたくさんいた。

Open JDK (2006年)

Sunが自分でオープンソース化したJavaの開発実行環境。

SunのJDKは、バイナリは配布してて商用利用無償だった(よね)。OpenJDKは互換性がたまにだめとかいう評判もあり、インパクトはそこまで。。ソースコードがあるのが大きかったJavaのコードはじめて読んだ。Linuxでセットアップするとだいたいこれに誘導された。

サン・マイクロシステムズがOracleに買収される (2009年4月20日)

Oracleに買収されてた。最初はIBMって言ってたはず。Oracleはサーバー屋としてのSunを買収したみたいな話も。MySQLとかにも手を出してたし、オープンソース的なビジネスに手を出そうとしてた気もする。

Sunと言えばオープンソースの先導者的なイメージだけど、OSSのBSD使ってなり上がり、OSSのLinuxに本業のUnixサーバー食われ、JavaもOSSビジネスとしてはうまくいかず(Oracleも苦しみ)。と、引っ張るのか引っ張られれてたのかという感じ。。

Java EE 6 (2009年12月10日)

EEの話よ、SEじゃないよ!Jerseyとか増えて、Java EEにもJAX-RSが加わりました。Javaは軽量プログラミン言語のサーバーサイドブームを受けてちゃんと成長してたのです。

ちなみに2021年、この辺りのJava知らないJavaプログラマが多い。Javaできます。には注意。

Java SE 7 (2011年7月28日)

実は結構久しぶりに出た、Oracleの最初のJava。

言語仕様は、次のJava8で霞むせいで、インパクトが低い。NIOとか並行処理APIとか、開発者の使い勝手に寄り添い始めたJavaと宣伝された。そういう機能が他にあった気がした。
地味に、G1GCが途中から導入された。実は、これが一番のインパクトでは。

Java EE 7 (2013年5月28日)

HTML5対応して大規模に変化したJava EE。
Servlet 3.1とかJAX-RS 2.0。JavaEEの機能的な最新はこれ。

SI屋ではSpringという言葉で参照され、誰も気づかずにSpring知ってる==Java EE知ってるかきいてる。

Java SE 8 (LTS) (2014年3月18日)

関数型言語に適応した始まりであり、古いリリースサイクル/サポートの最後のJava。
言語仕様は、ラムダ式とStream。関数型言語vsオブジェクト指向とか乱立したのは、だいたいこいつのせい。

2021年現在でも、Java8で動いてるサービスは多く、この「最後」に影響してる。2022年ぐらいまでサポートがあるし。

ちなみに、このサポートは、セキュリティパッチも含まれる。というかそれが一番大事。問い合わせ的なサポートと勘違いしないように(それも含まれてはいるのでややこしや)無償利用だからサポート関係ないって言ってる奴がいたら、そのサービスはだいたい脆弱性の塊。(まれによくある)

なぜ関数型言語なのか。それは、.netが10年近く前にラムダ式サポートしてたのでパクリ(適当うそ)。.netを考えて、.netにラムダ式をぶっこんだおじさんは、今TypeScript作ってる。やばい。(Delphiの人)

Java SE 9 (2017年9月21日) / OpenJDKがマスタ / Java EEのOSS化

ここからリリースサイクルが変わり爆速に。今までは機能が揃ったら不定期リリースしてた。気が付くとjava17になってたのはこれが原因!!長期サポート(LTS)が無くなり、"半年間"サポートになった。(2014年に出たJava8が2022年までサポートされるのに。。)

言語仕様的には、モジュール。さらに、細かい言語仕様の改善をするようになってきた。

OpneJDKのリポジトリをマスタにするようになったらしい。ようするに、Javaの開発そのものがオープンソース化された。Java EEも、Eclipse Foundationでオープンソースで開発されるように。名前もJakarta EEになった、Java EEはもういない。

背景的には、企業主体の鈍足な開発では、モダンな言語の進化に後れをとってしまうため。Java8とかJava EEの迷走が理由。オラクルはJava開発興味なかったんじゃ。とか言われたがJava11を見るに、違うよう。

Java SE 10 (2018年3月20日)

言語仕様的には、"var"です。型推論な!

標準機能相当のJSR(仕様要求)ではなく、拡張機能扱いのJEP(改善提案)になった。試作段階の機能がお試し用として追加されるようになった。

とまあ、オープンソース化のおかげで、実験的な言語仕様が盛り込むことが出来るようになった。

Java SE 11 (LTS)(2018年9月25日)

Java有償化!!

JDKが「Oracle JDK」と「OpenJDK」を提供するようになった。Oracle JDKが今までのJavaで、商用利用は有償長期サポート(LTS)契約が必要になった==有償化。無償利用は、OpenJDKを使えとなった。Open JDKは、LTS無いのでリリース地獄。鈍足SI屋が騒いだ。

言語仕様的には、型推論の強化と、HTTP Clientが整備されたとか、進化してる。それどころじゃなくなったけど。

Amazon Corretto とかの、JDKディストリ乱立 (2019年)

11の有償化で、だったらJava以外使うじゃんとなると思ったら、色んなとこから色んなサポートのJDKが出てきた。

有名なのはAWSで、Java超ヘビーユーザーのAWSが、じゃあうちがLTS対応したOpenなJDK出したる!と発表。Amazon Corretto 8/Amazon Corretto 11がいる。17も増えそう。

サポートはこんな感じで、ながーい。

、Amazon Corretto 8 の長期サポート (LTS) を 2023 年 6 月までから 2026 年 5 月までに、Amazon Corretto 11 の長期サポート (LTS) を 2024 年 8 月までから 2027 年 9 月までに延長しました。

Microsoftも後追いして出してた。.netもOSS化してた。

Java SE 12 (2019年3月19日) / Java SE 13(2019年9月17日) / Java SE 14(2020年3月17日) / Java SE 15(2020年9月15日) / Java SE 16 16(2021年3月16日)

switchを関数型言語のパターンマッチング風にするswich式を何度も試作してリリース。正式は Java 15。
Recordクラスも試作。正式は、Java 16。

と、言語仕様の拡張も、試作リリースと、正式リリースがあるのが特徴。試作から変わっても泣かない。
新しいGCのZGCは、今でもずっと試作繰り返し中。

Java SE 17 (LTS) (2021年9月)

なう。
言語仕様的には、シールクラスの正式サポート。だが、実は12から続いたリリースの集大成版(LTS)という方が正しい。

むしろ無償化の報道にびっくり。11の方針変えたの?どうなることやら。

そのほか

Eclipse MicroProfile

Java EEの仕様策定の遅さから生まれた、実質Java EEの後継。

名前通りマイクロサービスアーキテクチャで必要な機能だが、マイクロサービス以外でも普通に使う。Java EEと同じで知らずに使うことに。
Open API/Rest Client/Open Tracingとか、色々あるよ。

GoogleのJava

Apache HarmonyというOpen JDKとは別のオープンソースのJavaがあり、Sunとは揉めてた。

2010年10月11日、Apache Harmony プロジェクトを推進してきたIBMがオラクルのOpenJDKに参加表明し、事実上HarmonyからOpenJDKへ移行することを決めた

となり、今はOpen JDKになった。(このメンツは買収騒動が透けて見える。。)

ところが、このApache Harmonyを、GoogleはAndoridのJavaで採用してて、Oracleともめた。
Googleが買ったか負けたか知らんが、OpenJDK使うことになり終戦。

GraalVM

Oracleが出した爆速になったコンパイラ(を積んだjvm)。戦うレイヤの低さがOracleっぽい。
シングルバイナリにも出来ちゃうので、Goとかに浮気(本気)した人に期待されてる。

まとめ どのJava使えばいいの

  • 選択するバージョン Java8/Java11/Java17
  • 選択するJDK OracleJDK(verによって有償) / LTSありベンダのJDKディストリ

ぶっちゃけ簡単に選べる。だから、"Java1.7"とかつかうのやめて、バージョンアップしようず。

3
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
4