Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【ITニュース解説】Evolução da linguagem Java (parte 3)

2025年09月27日に「Dev.to」が公開したITニュース「Evolução da linguagem Java (parte 3)」について初心者にもわかりやすく解説しています。

作成日: 更新日:

ITニュース概要

Java 11では、文字列処理を簡潔にするisBlankやrepeatなどの新メソッドが追加され、コードがよりきれいに書ける。HTTP/2対応のHttpClientも導入され、シンプルなネットワーク通信が可能になり、開発効率が向上した。

出典: Evolução da linguagem Java (parte 3) | Dev.to公開日:

ITニュース解説

Javaは、プログラムのコードをよりきれいに、そして開発者にとってよりシンプルにするために、定期的に新しい機能や改善を導入している。この進化の過程は、開発者が日々の業務で直面する課題を解決し、より効率的にソフトウェアを開発できるよう支援することを目的としている。この記事では、Java 11から14までの主な進化と、それが開発にどのような影響を与えるかを解説する。

Java 11では、いくつかの具体的な改善がもたらされた。特に注目すべきは、文字列を扱うための新しいメソッド群、ラムダ式のパラメータでvarキーワードを使えるようになったこと、そして新しくモダンなHTTPクライアントが導入されたことである。

文字列操作はプログラミングにおいて非常に頻繁に行われるため、Java 11で追加されたStringクラスの新しいメソッド群は、コードの簡潔化に大きく貢献する。 まずisBlank()メソッドは、文字列が完全に空であるか、または空白文字(スペース、タブ、改行など)のみで構成されているかを判別する。これまでの方法では、文字列が空であるか、空白文字だけで構成されているかをチェックするために、複数の条件を組み合わせたり、trim()メソッドとisEmpty()メソッドを併用したりする必要があったが、isBlank()を使うことで一つのシンプルな記述でこの判定が可能になった。例えば、見た目は空白だが文字として扱われる「  」のような文字列も、isBlank()は真(true)と判断する。

次にlines()メソッドは、複数行にわたる文字列を、個々の行に分割して処理したい場合に非常に便利である。これまでは、改行コードを表す正規表現(例えば"\\R")を使ってsplit()メソッドで文字列を分割し、その結果をループで処理する必要があった。しかし、lines()メソッドを使うと、文字列をストリームとして扱い、各行に対して直接処理を実行できるようになる。これにより、コードがより直感的で読みやすくなる。

strip()stripLeading()stripTrailing()の三つのメソッドは、文字列の先頭や末尾にある空白文字を取り除くために導入された。これまでのtrim()メソッドも同様の機能を持っていたが、trim()が取り除くことのできる空白文字の種類は限られていた。特に、Unicodeで定義されている様々な種類の空白文字(例えば「EN SPACE」を意味する\u2002のような文字)に対応できていなかったため、意図しない空白が残ってしまうケースがあった。新しいstrip()メソッドは、Unicodeで定義されたすべての空白文字を認識し、適切に除去できるようになった。具体的には、strip()は文字列の両端の空白を、stripLeading()は文字列の先頭の空白のみを、stripTrailing()は文字列の末尾の空白のみを除去する。この機能により、データ処理の正確性が向上し、予期せぬ空白によるエラーを防ぐことができる。

そしてrepeat(int count)メソッドは、ある文字列を複数回繰り返して新しい文字列を作成したい場合に役立つ。以前は、StringBuilderクラスを使ってループ処理で文字を追加したり、Collections.nCopies()メソッドとString.join()メソッドを組み合わせて実現したりする必要があり、コードが長くなりがちだった。repeat()メソッドを使えば、例えば"="。repeat(5)のように記述するだけで、「=====」という文字列を簡単に生成できる。これにより、冗長なコードを減らし、意図が明確な記述が可能になった。

Java 11では、ラムダ式のパラメータにvarキーワードを使用できるようになった。varは型推論の機能であり、コンパイラが自動的に変数の型を判断してくれるため、冗長な型宣言を省略できる。これにより、コードの記述量を減らし、簡潔に保つことができる場合がある。ただし、記事の筆者は、ラムダ式においては型の宣言が必須となるケースが限られているため、このvarの使用はかえってコードを冗長にする可能性があり、実質的なメリットは小さいと指摘している。

Webアプリケーション開発において、他のサーバーと通信することは非常に一般的である。Java 11で導入された新しいHTTPクライアントは、そのための標準的なツールとして設計された。このクライアントの大きな特徴は、HTTP/2プロトコルにネイティブで対応していることだ。以前は、HTTP/2を利用するためにサードパーティ製のライブラリ(外部のプログラム部品)を導入する必要があったが、Java 11からは標準機能として提供されるため、シンプルなケースであれば追加のライブラリが不要になる。また、この新しいクライアントは、以前の古いAPIと比較して記述がより簡潔になり、コードの可読性が向上した。これにより、ネットワーク通信を扱うコードがよりすっきりと書けるようになった。しかし、記事の筆者は、このHTTPクライアントの登場はやや遅く、既にHTTP/2をサポートする成熟したサードパーティライブラリが広く使われている現状では、大規模プロジェクトでの採用には慎重な姿勢を示している。

Javaは毎年新しいバージョンがリリースされるようになったが、Java 12、13、14では、まだ最終的な機能として確定していない「プレビュー機能」が多く導入された。これらには、switch文をより柔軟に記述できるSwitch Expressions、複数行の文字列を簡単に扱えるText Blocks、データ保持に特化したクラスを簡潔に定義できるRecords、そしてオブジェクトの型判定と同時に変数への代入を行えるPattern Matching for instanceofなどがある。これらの機能は、開発者が新しい機能を試せるように先行して提供され、コミュニティからのフィードバックを受けて改善された後、次の安定版のバージョンで最終的な形として正式に採用される見込みだ。

このように、Javaは継続的に進化を続けており、開発者がよりクリーンでシンプルなコードを書けるように、新しい機能や改善を提供している。Java 11での文字列操作メソッドや新しいHTTPクライアントの導入は、その良い例である。開発者それぞれのプロジェクトの特性や要件に応じて、これらの新しい機能を活用することで、より効率的で保守しやすいソフトウェア開発が可能になるだろう。

関連コンテンツ

関連IT用語