Java再入門 第1回 Java7以降の歴史 機能追加とサポート期間

Java6で時間が止まった人（私のこと）のためのこれまでのあらすじ。

# Java5以降の主な機能追加

「これは重要な変更だっただろ！」というものがあれば理解できていないだけなので教えてください。

| リリース日 | Version | 主な変更点                                                   |
| ---------- | ------- | ------------------------------------------------------------ |
| 2004年9月  | 5       | ジェネリクス、アノテーション、拡張for文、列挙型、可変長引数、ExecutorService/Future |
| 2006年12月 | 6       | スクリプト言語サポート。ここで時間が止まる                         |
| 2011年7月  | 7       | switchで文字列、ダイアモンド演算子、リソース付きtry文、Fork/Join |
| 2014年3月  | 8 LTS   | ラムダ式、メソッド参照、Stream、Optinal、日時時刻APIの変更   |
| 2017年9月  | 9       | モジュールシステム。G1GCがデフォルトに。プリミティブのラッパークラスのコンストラクタが非推奨 |
| 2018年3月  | 10      | ローカル変数型推論                                           |
| 2018年9月  | 11 LTS  | **JavaEE由来のAPIが削除**                                                             |
| 2019年3月  | 12      | プレビュー段階のもの以外は特に目立つ変更はない                                                            |
| 2019年9月  | 13      | プレビュー段階のもの以外は特に目立つ変更はない                                                             |
| 2020年3月  | 14      | switch式。jpackage                                                     |
| 2020年9月  | 15      | テキストブロック、ZGC、Shenandoah GC          |
| 2021年3月  | 16      | record、パターンマッチングinstanceof                         |

# Javaのライフサイクルと商用サポート期間

6ヶ月に1回、3月と9月に新バージョンがリリースされ、3年毎にLTSの長期サポートのバージョンがリリースされています。
サポートが終了するタイミングはJDKのベンダーごとに差があり、たまに変更（基本的に延長）されているので、定期的に公式を確認する必要があります。

|                 | 8  2014年3月          | 11  2018年9月        | 17  2021年9月予定    |
| --------------- | --------------------- | -------------------- | -------------------- |
| Oracle          | 2022年3月, 2030年12月 | 2023年9月, 2026年9月 | 2026年9月, 2029年9月 |
| Red Hat         | 2026年6月             | 2024年10月           | 未掲載               |
| Azul Zulu       | 2030年12月            | 2026年9月            | 未掲載               |
| MS              | 提供なし              | 2024年10月           | 2027年9月            |
| AdoptOpenJDK    | 2026年3月             | 2024年10月           | 未掲載               |
| Amazon Corretto | 2026年6月             | 2027年9月            | 未掲載               |

各社のライフサイクル掲載ページです

- https://www.oracle.com/jp/java/technologies/java-se-support-roadmap.html
- https://docs.microsoft.com/ja-jp/java/openjdk/support
- https://www.azul.com/products/azul-support-roadmap/
- https://adoptopenjdk.net/support.html
- https://access.redhat.com/articles/1299013
- https://aws.amazon.com/jp/corretto/faqs/


# 以下を主な情報源にしています。

- [【連載】イマドキのJava徹底入門 \| TECH\+](https://news.mynavi.jp/series/imajava/)
- [JJUGナイトセミナー OpenJDK祭り「OpenJ9\+OpenJDK」](https://www.slideshare.net/takakiyo/openj9openjdk)
- [最適なOpenJDKディストリビューションの選び方 \#codetokyo19B3 \#ccc\_l5](https://www.slideshare.net/TakahiroYamada3/how-to-choose-the-best-openjdk-distribution-201905)
- [「Java8からJava11」で何が起きたのか、どう環境構築すればいいのか \- Qiita](https://qiita.com/to-lz1/items/898421e5050cae90ec20)
- [Java新機能メモ\(Hishidama's Java up\-to\-date\)](http://www.ne.jp/asahi/hishidama/home/tech/java/uptodate.html)

# シリーズJava再入門

いまからJava8にしよう！だってJava11よりサポート長いし！という判断もあると思いますが、11に引っ越そうとしている方や、11の次のLTSになることを予定されている17への移行を目指している方向けのJava再入門です。

1. [Java7以降の歴史 機能追加とサポート期間](https://qiita.com/yyukawa/items/e1a027bcbfbb3d39958e)
1. [モジュールシステムとクラスパス、Gradle](https://qiita.com/yyukawa/items/44ef24f51649e6c5e299)
1. [Java再入門 JVMオプション](https://qiita.com/yyukawa/items/96f667c7f0c06f97ed3e)
1. [Java再入門 ～Java11 ジェネリクス、ダイアモンド演算子](https://qiita.com/yyukawa/items/d5a5ab8d4846c0b70479)
1. [Java再入門 ～Java11 日付時刻API](https://qiita.com/yyukawa/items/d4159506da46bbd6b651)
1. ～Java11 リソース付きtry文
1. ～Java11 ラムダ式、メソッド参照、Stream、Optional、ローカル変数型推論
1. ～Java11 ExecutorService/Future、Fork/Join
1. 今後：テキストブロック
1. 今後：switch式、パターンマッチングinstanceof
1. 今後：record