概要
このエントリは、「Enterprise "hello, world" 2018 Advent Calendar 2018」の12/3向けのものです。このAdvent Calendarでは、複数個のエントリにまたがる話の流れも鑑みつつ、なるべく1エントリで1つのトピックをカバーできるようにする予定です。
このエントリで記載するトピックは、「仕様を決める」と「MVP(Minimum Viable Product)を作ってみよう」です。
前提
Advent Calendar全体のお断りは、Enterprise hello, world 2018のサイトを参照ください。
想定読者
「Enterprise "hello, world" 2018」的なネタとしては、下記のような状況を想定しています。
Day1で、移行しなければいけない古いプログラムの様子はつかんだので、移行に向かって仕事を進めなくてはいけない。
実現にあたっては、EHW2018の前提によって活動することを心に決めている。
仕様
- ユーザのインターフェースに「hello, world」という文字列を表示する
以上となります。では、実装しましょう。
MVPを作る
まず書く。
前提
OpenJDK 11.0.1を使用します。Windows10 バージョン1803でお送りします。
>C:\Java\jdk-11.0.1\bin\java -version
openjdk version "11.0.1" 2018-10-16
OpenJDK Runtime Environment 18.9 (build 11.0.1+13)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.1+13, mixed mode)
書きます!
public class HelloWorld {
public static void main(String[] args) {
System.out.println("hello, world");
}
}
即時実行する(JEP 330)
Java11では、".java"ファイルを直接実行できるのでした。わほー。
>C:\Java\jdk-11.0.1\bin\java HelloWorld.java
hello, world
コンパイルして実行する(JEP 304)
コンパイルして実行します。JDK11からの実験機能、「GCなしで実行する(EpsilonGC)」で実行してみます。
>C:\Java\jdk-11.0.1\bin\java -XX:+UnlockExperimentalVMOptions -XX:+UseEpsilonGC -Xlog:gc HelloWorld
[0.028s][info][gc] Resizeable heap; starting at 250M, max: 4011M, step: 128M
[0.030s][info][gc] Using TLAB allocation; max: 4096K
[0.033s][info][gc] Elastic TLABs enabled; elasticity: 1.10x
[0.035s][info][gc] Elastic TLABs decay enabled; decay time: 1000ms
[0.036s][info][gc] Using Epsilon
hello, world
[0.325s][info][gc] Total allocated: 881 KB
[0.325s][info][gc] Average allocation rate: 1391734 KB/sec
GCなしの実行は、パフォーマンスに振った(例:Log4jのガベージなしへのトライアル)方面のチャレンジの道にトライする面では、興味深いですね。
まとめ
このエントリでは、「Enterprise "hello, world" 2018 Advent Calendar 2018」(EHW2018)の3日目として、Java11の機能をなるべく使ってhello, worldを書いてみることをトピックとして取り上げました。
EHW2018のネタとしては、このあと、インフラまわりの明日がために向かう見込みです。