# Java11のあれこれ ## Java11の話題 * Oracle Javaの最新版(2019/08/30現在) * 現時点で無償サポートされているバージョンはこれのみ * **商用で利用する場合、有償サポート契約が必要**(個人、開発は無償で利用可能) ↓↓↓ * Oracle Java8を利用しているアプリケーションは今まで通りアップデートを行う際、どうするか考える必要が発生 * 少なくとも、Java8を無償でこのまま使うのはセキュリティ上よくない 1. 費用払ってアップデート 2. 別の言語に移行 3. システム終了…??? #### エンジニアとして、どのような場面でも対処できるようになりたい <br/> <br/> <br/> ## 今回は「アップデート」した場合の話 * Java11の情報を調べても、有償化される話ばかり * 「こんな機能が追加された!」という話題が少ない → どんな機能が追加されたのかの情報が乏しい <br/> <br/> <br/> ## Java11で追加された機能 いくつかピックアップして触ってみました 追加機能の詳細はここ https://openjdk.java.net/projects/jdk/11/ ### 1.ファイルからの即時Java実行 https://openjdk.java.net/jeps/330 単一のJavaファイルであれば、コンパイル処理をせずに実行できるようになった ***ex.「Hello World!」を表示する*** ①適当なjavaファイルを用意 ``` public class HelloWorld { public static void main(String args[]) throws Exception{ System.out.println("hello world!"); } } ``` ②実行コマンドをたたく(コンパイルコマンド(javac不要)) ``` $ java HelloWorld.java ``` ③動く! ``` hello world! ``` ### 2.Lambda式での暗黙的型指定 https://openjdk.java.net/jeps/323 java10のアップデートで利用できるようになった「var」型の型推論機能。 java11にて、Lambda式にも対応しました ***ex.リストに入れた初台メンバー名を表示する*** ①適当なjavaファイルを用意 ``` import java.util.List; public class Lambda { public static void main(String args[]) throws Exception{ List.of("higuhigu", "sattumii", "icchii").stream().forEach((var s) -> { System.out.println(s); }); } } ``` ②実行コマンドをたたく(ここでも即時実行試した) ``` $ java Lambda.java ``` ③動く! ``` higuhigu sattumii icchii ``` ### 3.HttpClientAPI https://openjdk.java.net/jeps/321 ModanAPiやHTTP2,WebSocket,Reactiveに対応した。 他のサービスを使用しなくてもある程度Javaで記述できるようになった。 ***ex.Homegrowinのウェブページにアクセスする*** ①適当なjavaファイルを用意 ``` import java.net.http.*; import java.net.URI; public class TestHttpClient { public static void main(String args[]) throws Exception{ HttpClient client = HttpClient.newHttpClient(); HttpRequest getRequest = HttpRequest.newBuilder() .uri(URI.create("https://homegrowin.jp/")) .build(); HttpResponse<String> response = client.send(getRequest, HttpResponse.BodyHandlers.ofString()); System.out.println(response.statusCode()); System.out.println(response.body()); } } ``` ②実行コマンドをたたく(ここでも即時実行試した) ``` $ TestHttpClient.java ``` ③動く!  <br/> <br/> <br/> ## 所感 * 機能について → オブジェクト指向言語としての「Java」だが、単純なものに対してスクリプト言語感が出てきた → 昔からJava使ってる人は、レビュー等するとき違和感感じるかも * 有償化について → 他言語へ移行等の話もでたりしているが、メリット/デメリットの判断が必要 → 個人的には、マルチプラットフォームで動くJavaで、上記のような機能追加がある以上他言語移行よりリスク低いイメージ #### 新しい機能は積極的に使っていこう #### ※Java8Bronze勉強の人、混乱させる内容だったらごめんなさい!! <br/> <br/> <br/> ## 参考資料 https://www.orangeitems.com/entry/2018/02/08/152022
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up