Webサイト制作コースのお申し込みはこちら Webサイト制作コースのお申し込みはこちら

1995年にUNIXベンダーとして有名でだったサン・マイクロシステムズによって公開されたプログラミグ言語の Java は、これまで多くのバージョンアップを繰り返し、新しい機能の追加や削除がされてきました。

前回の記事では、JDK、JRE、JVMの違いや、Java 1.5 から 1.9 までの新機能を紹介してきました。この記事では、Java 10 から Java 17 までの新機能を紹介します。

【関連記事】
Javaのバージョンの違いとは?JDK、JRE、JVMって何?の疑問を解決

Java 10

Java 10の新機能として varを用いた型推論が追加されました。

var を使用することで初期値を指定して変数の宣言する際、データ型の記述を省略できるようになりました。これにより、冗長になりがちだった変数の宣言をスッキリしたコードで書けるようになりました。

varを用いることで、これまで次のように宣言されていた変数は…

String str = "12345";
FileOutputStream file = new FileOutputStream("path/to/file”);

以下のように var 用いて変数の型の宣言を省略できます。

var str = "12345";  
var file = new FileOutputStream("path/to/file”); 

var についての詳しい内容は、次の記事で解説していますので、こちらもご覧ください。

【関連記事】
Javaで便利な「var」を使って変数の型指定を省略(推論)する方法

Oracle JDK のライセンスに大きな変更がった

この時、新しい機能以外にサポート面でも大きな変化がありました。

Oracle は、Oracle JDK を本番環境で使用する場合は、有償のサポート契約を結ぶ必要があるとライセンスを変更し、大きな話題となりました。

当時の内容については、次の記事で詳しく解説しています。

【関連記事】
Javaのサポートについて解説!Oracle JDKの有償化と無料でJavaを使う方法

ポテパンダの一言メモ

後の 2021に Oracleは、再度 JDK のライセンスを変更し、現在では本番環境でも無料で使えるようになっています。

Java 11

Java 11では、特別大きな機能の追加は行われませんでしたが、いくつか細かい点で改善が行われました。

主な変更点は以下の通りです。

1つ目の単一ファイルソースコードの実行は、これまで単一ファイルであっても javac コマンドでコンパイルを行ってから java コマンドで実行する必要がありましたが、直接 java コマンドで実行できるようになりました。

public class Main {
    public static void main(String[] args) {
        System.out.println("Hello Java");
    }
}

以下のように、直接 Java のソースファイル名を指定して java コマンドを実行できます。

$ java Main.java
Hello Java

2つ目の新元号対応ですが、新しい元号に対応すべく仮置きで新元号の設定が追加されました。そちて後に新元号の「令和」が正式に設定されました。

いくつかの機能が削除された

Java 11では、あまり使わなくなったレガシーな機能や、機能の統廃合により、次のモジュールがリリースから削除されました。

Java 12

Java 12では、いくつかの細かい改善が行われました。

一般的なプログラマーに関係する変更点には、次のものがあります。

CompactNumberFormat

NumberFormat.getCompactNumberInstance() で取得したフォーマッタを使用することで、数値を、○万、○億、○兆のように表記します。

import java.text.NumberFormat;

public class Main {
    public static void main(String[] args) {
    NumberFormat cnf = NumberFormat.getCompactNumberInstance();
        System.out.println(cnf.format(10000));
    System.out.println(cnf.format(100000000L));
    System.out.println(cnf.format(1000000000000L));
    }
}

String.indent(int)

String クラスに indent メソッドが追加されました。このメソッドは、その名の通り文字列に対してインデントを付与します。

次のサンプルコードのように、改行を含む文字列を引数に String.indent を呼び出すと、各行の先頭に指定したインデント数分のスペースが追加され文字列が取得できます。

public class Main {
    public static void main(String[] args) {
    String target = "Java\nPython\nPHP\nC#";    

    System.out.println("<元の文字列>");
    System.out.println(target);

    System.out.println("<インデント後の文字列>");
    System.out.println(target.indent(2));
    }
}

実行結果

<元の文字列>
Java
Python
PHP
C#
<インデント後の文字列>
  Java
  Python
  PHP
  C#

Java 13

Java 13でも、いくつかの細かい改善が行われました。

ポテパンダの一言メモ

この時期の Java は、半年ごとにバージョンアップを繰り返すロードマップでリリースがされていたたため、昔のように、大きな機能の追加でバージョンアップを行うのではなく、小規模な改善を断続的に繰り返していました。

Java 13の新機能で、一般的なプログラマーに関係する変更点には、次のものがあります。

String.formatted

これまでは、static メソッドとして利用可能であった String.format メソッドと同じ機能が、インスタンスメソッドの formatted で利用可能になりました。

public class Main {
    public static void main(String[] args) {
    String target = "私は今日%d時に起きました";
    System.out.println(target.formatted(1));  //私は今日1時に起きました
    }
}

他にも、TCPソケットのAPI実装の見直しや、ガベージコレクションの改善などが行われています。

まとめ

Java10 から 13 までの新機能を解説してきました。

バージョン 11からは、Java は半年ごとにリリースを行うサイクルになっているため、バージョンアップのたびに大きな機能が追加されるのではなく、小規模な改善が繰り返し行われています。

【関連記事】
2019年9月】最新Java13のリリースを発表!Java12からの追加機能は?

エンジニアになりたい人に選ばれるプログラミングスクール「ポテパンキャンプ 」

ポテパンキャンプは卒業生の多くがWebエンジニアとして活躍している実践型プログラミングスクールです。 1000名以上が受講しており、その多くが上場企業、ベンチャー企業のWebエンジニアとして活躍しています。

基礎的な学習だけで満足せず、実際にプログラミングを覚えて実践で使えるレベルまで学習したいという方に人気です。 プログラミングを学習し実践で使うには様々な要素が必要です。

それがマルっと詰まっているポテパンキャンプでプログラミングを学習してみませんか?

卒業生の多くがWebエンジニアとして活躍

卒業生の多くがWeb企業で活躍しております。
実践的なカリキュラムをこなしているからこそ現場でも戦力となっております。
活躍する卒業生のインタビューもございますので是非御覧ください。

経験豊富なエンジニア陣が直接指導

実践的なカリキュラムと経験豊富なエンジニアが直接指導にあたります。
有名企業のエンジニアも多数在籍し品質高いWebアプリケーションを作れるようサポートします。

満足度高くコスパの高いプログラミングスクール「ポテパンキャンプ」

運営する株式会社ポテパンは10,000人以上のエンジニアのキャリアサポートを行ってきております。
そのノウハウを活かして実践的なカリキュラムを随時アップデートしております。

代表の宮崎もプログラミングを覚えサイトを作りポテパンを創業しました。
本気でプログラミングを身につけたいという方にコスパ良く受講していただきたいと思っておりますので、気になる方はぜひスクール詳細をのぞいてくださいませ。