2022/03/22 に Java 18が公式にリリースされたので今回は新しく追加された機能からいくつかをピックアップして紹介していこうかと思います。
また、本記事ではJava18のインストール方法についても書いていきます。
Javaとは
Javaは1995年にリリースされた歴史の長いプログラミング言語で、現在までで 18 ものバージョンがリリースされています。
新機能のリリースサイクルは半年に1回で3月と9月に発表されます。
毎回のリリースで様々な新機能が発表されています、例えば
- Java17: Sealed Classes
- extends, implements できるクラスの制限
- Java15: Text Blocks
- Javaコード内のでテキストブロックの導入
- Java14: Switch Expressions
- switch構文を改良
などなど色々あります。
適当にピックアップしましたが、他にも色々とリリースしています。
気になる方は公式サイトを見てみてください。(目次のProjectsに各バージョンのリリース情報が載ってます。)
リリースごとに進化を遂げて来たJavaですが、今回のリリースでも色々と面白い機能が追加されています。
この後それらの紹介をしていきますが、まずはローカルでJava18を使えるようにするためのインストール方法について説明したいと思います!
なお、今回は windows10 を用いて環境構築を行います。
Java 18のインストール方法
インストールの流れは以下です。
まずダウンロードページに移動します。
https://www.oracle.com/java/technologies/downloads/
今回はwindowsにJava18をインストールするので、Java18タブ > Windowsタブ > x64 Installerをダウンロードします。
次にインストーラを起動します。
以下のようなインストールウィザードが表示されるので「次へ」を押下します。
Javaのインストール先を聞かれます。
インストール先を変更したい場合は「変更...」でフォルダを指定した後「次へ」を押下します。
以下の画面が出たらインストール完了です。
Javaコマンドを使えるようにするためには環境変数の設定が必要になります。
インストールの初期設定では、Javaコマンドが格納されているbinフォルダへのシンボリックリンクのPathが自動で環境変数に設定されています。
もしシンボリックリンクではなく、jdkのbinフォルダに直接指定したい場合は他記事にて詳しい内容が紹介されていますので、別途お調べになっていただけますと幸いです。
インストール方法についてのご紹介は以上になります。
Java 18の機能紹介
以下が今回追加された機能の一覧です。
- 400: ★ UTF-8 by Default
- 408: ★ Simple Web Server
- 413: Code Snippets in Java API Documentation
- 416: Reimplement Core Reflection with Method Handles
- 417: Vector API (Third Incubator)
- 418: Internet-Address Resolution SPI
- 419: Foreign Function & Memory API (Second Incubator)
- 420: Pattern Matching for switch (Second Preview)
- 421: Deprecate Finalization for Removal
openJDK JDK18: https://openjdk.java.net/projects/jdk/18/
今回はこの中から★の機能をピックアップして紹介していきます。
400: UTF-8 by Default
Summary Specify UTF-8 as the default charset of the standard Java APIs. With this change, APIs that depend upon the default charset will behave consistently across all implementations, operating systems, locales, and configurations.
上記の通り、Javaの標準APIのデフォルトの文字コードがUTF-8に統一されます。
これによってデフォルトの文字コードに依存する標準APIが全て実行環境で一貫した動作をするようになります。(引数として文字コードを指定した場合は従来通りの動きをします。)
「デフォルトの文字コード」というのはアプリケーション実行環境(OSとかユーザー設定とか)に依存していて、これが統一されることでOSが変わると文字化けが発生するみたいな悩みが解消されることになります。
例えば、今までだとOS間で以下のような文字化けが発生していました。
java.io.FileWriter
を用いて文字コードを指定せず書き込みを行った場合
// (macOS)で書き込み FileWriter writer = new java.io.FileWriter("hello.txt"); writer.write("こんにちは"); writer.close(); java.io.FileReader(“hello.txt”) -> “こんにちは” (macOS) // windowsで文字化け発生 java.io.FileReader(“hello.txt”) -> “縺ォ縺。縺ッ” (Windows (ja-JP))
こういった問題が今回の修正によって減ることになります。
ちなみに、以下のコマンドで現在のデフォルトの文字コードを調べることができます。
気になる方はぜひコマンドを叩いてみて下さい。
$ java -XshowSettings:properties -version 2>&1 | grep file.encoding
以下にJava8 と Java18 での表示の違いを載せておきます。
Java 8
windowsだと以下のように表示されます。
file.encoding = MS932
となっている箇所が文字コードです。
MS932なのでUTF-8で書き込まれた文字はしっかり文字化けします。
$ java -XshowSettings:properties -version 2>&1 | grep file.encoding file.encoding = MS932 file.encoding.pkg = sun.io
$ java -XshowSettings:properties -version 2>&1 | grep file.encoding file.encoding = UTF-8
ただJDK 18以前との互換性は気になるところで、アプリケーションに与える影響は大きそうです。
公式サイトにも以下のように記載されています。
一応困ったらすぐに、前のバージョンと同じ状態に戻すことは可能になるそうです。
We recognize that this change could have a widespread compatibility impact on programs that migrate to JDK 18. For this reason, it will always be possible to recover the pre-JDK 18 behavior, where the default charset is environment-dependent.
408: Simple Web Server
Summary Provide a command-line tool to start a minimal web server that serves static files only. No CGI or servlet-like functionality is available. This tool will be useful for prototyping, ad-hoc coding, and testing purposes, particularly in educational contexts.
コマンドを叩くだけで簡易的なwebサーバを立てられるようになりました。
簡易的なサーバなので出来ることとしては、静的ファイル(htmlファイル、画像ファイルとか)をレスポンスとして返すことくらいになります。
HTTPメソッドもGETとHEADのみを受け付ける仕様になっています。
なので、この機能の目的としてはプロトタイプの作成であったり、簡単なテスト、教育用といったものが上げられています。
では使い方を見ていきましょう。
まず、静的ファイルとして簡単なhtmlファイルを用意したいと思います。
index.html
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>Java 18 インストールと新機能紹介【最新版】</title> </head> <body> <h1>Hello Java 18!</h1> </body> </html>
こちら作成後ローカルの /c/java18-test/index.html
にファイルを配置します。
次に、webサーバーを立ち上げていきます。
まず、インストールしたjdkのフォルダに移動します。
インストール時に指定したフォルダの中にbinフォルダがあるのでそこに入ります。
# binに移動 $ cd /c/Program Files/Java/jdk-18/bin
binフォルダの中に jwebserver.exe
という実行ファイルがあるので、起動することでサーバーを立ち上げることができます。
以下のようにコマンドを叩きます。
なお、今回 -d
オプションによってhtmlファイルを配置したディレクトリを指定しています。
# サーバー立ち上げ $ ./jwebserver -d /c/java18-test Binding to loopback by default. For all interfaces use "-b 0.0.0.0" or "-b ::". Serving C:\Program Files\Java\jdk-18\bin and subdirectories on 127.0.0.1 port 8000 URL http://127.0.0.1:8000/
http://127.0.0.1:8000/
にブラウザからアクセスすると以下のように表示され、先ほど配置したindex.htmlが表示されているのが分かります。
こんな感じで簡単にwebサーバーを立ち上げられました。
最後に
今回はJavaのインストール方法と最新機能を紹介しました。
これからも半年毎にリリースが入りますので、引き続き注目していきたいと思います。
参考文献
- openjdk jdk18: https://openjdk.java.net/projects/jdk/18/
エンジニア中途採用サイト
ラクスでは、エンジニア・デザイナーの中途採用を積極的に行っております!
ご興味ありましたら是非ご確認をお願いします。
https://career-recruit.rakus.co.jp/career_engineer/カジュアル面談お申込みフォーム
どの職種に応募すれば良いかわからないという方は、カジュアル面談も随時行っております。
以下フォームよりお申込みください。
rakus.hubspotpagebuilder.comラクスDevelopers登録フォーム
https://career-recruit.rakus.co.jp/career_engineer/form_rakusdev/イベント情報
会社の雰囲気を知りたい方は、毎週開催しているイベントにご参加ください!
◆TECH PLAY
techplay.jp
◆connpass
rakus.connpass.com