SlideShare una empresa de Scribd logo
1 de 104
Descargar para leer sin conexión
Java SE 9の紹介:
モジュール・システムを中心に
2017-11-18 JJUG CCC 2017 Fall
ハッシュタグ: #ccc_e4 #jjug_ccc
宮川 拓
 @miyakawa_taku
 JJUG幹事です
 株式会社JSOLで働いてます
 尾上部屋の里山さんのファンです
 オレオレJVM言語Kinkを作っています
https://bitbucket.org/kink/kink
自己紹介 #ccc_e4
2/104
#ccc_e4本セッションのあらまし
 9月にJava SE 9がリリースされました
 新しく導入されたモジュール・システムを
解説します
 その他のアップデートも概観します
3/104
演目
そもそも
Java SEってなんだっけ?
Java SE 9の
モジュール・システム
Java SE 9の
その他のアップデート
#ccc_e4
4/104
演目
そもそも
Java SEってなんだっけ?
Java SE 9の
モジュール・システム
Java SE 9の
その他のアップデート
#ccc_e4
5/104
#ccc_e4Java SEとは
Java SE: Java処理系の規格
 正式名称: Java Standard Edition
 規格の中身:
 言語仕様
 Java仮想マシンの仕様
 標準APIの仕様
6/104
#ccc_e4ちなみに: Java EEとは
Java EE: APサーバの規格
 正式名称: Java Enterprise Edition
 規格の中身:
 サーブレット
 JMX
 EJB
 ...
7/104
Java SEタイムライン #ccc_e4
ジェネリクス, Concurrency Utilities
ServiceLoader
invokedynamic
ラムダ式, Stream API
モジュール・システム (a.k.a. Jigsaw)
2004.10
Java SE 5
2006.12
Java SE 6
2011.07
Java SE 7
2014.03
Java SE 8
2017.09
Java SE 9
2018.03
Java SE 18.3
var記法?
1 0 年戦える言語に
Functional Java
基盤の大改造
8/104
#ccc_e4Java SE 9はどんなリリース?
Java SE 9:
 プログラムの字面のレベルでは地味
 アプリケーション基盤には影響大
 モジュール・システムの導入!
9/104
演目
そもそも
Java SEってなんだっけ?
Java SE 9の
モジュール・システム
Java SE 9の
その他のアップデート
#ccc_e4
10/104
#ccc_e4モジュール・システム
このセクションの目的:
 モジュール・システム対応に向けて、
心の準備ができること
11/104
#ccc_e4モジュール・システム
内容:
 モジュール・システム導入の背景
 モジュール・システムの基本
 リフレクション
 コンパイルと実行
 モジュール世界への移行
 モジュールのテスト
 高度なトピック
12/104
モジュール・システム
導入の背景
#ccc_e4
13/104
#ccc_e4Java 8までの課題
 JAR地獄
 「内部向けパッケージ」の存在
14/104
#ccc_e4~Java 8: JAR地獄
 JAR地獄 := 大量のJARがクラスパスに
展開されて、混沌にブチ込まれること
 「このJARいらないんじゃない?」
 → 消したら実行時エラー
 Maven, Gradleのような依存性管理
ツールを使えば少しはマシだけど……
15/104
#ccc_e4~Java 8: JAR地獄
複数バージョン混在地獄
ゲーム Ace Shooter
matrix-1.0.0.jar
matrix-impl-2.0.0.jar
matrix-api-2.0.0.jar
physics.jar
名前の異なるMavenアーティファクトが
同じパッケージ/クラスを含む場合があり得る
org.example.matrix.api.*
org.example.matrix.impl.* org.example.matrix.api.*
org.example.matrix.impl.*
😥
16/104
#ccc_e4~Java 8: 内部向けパッケージ
 プラットフォームやライブラリ内で、
「内部向け」パッケージを作ることがある
 org.kink_lang.kink.internal.xxx
 sun.misc (JDK内)
 内部向けパッケージは本来、ライブラリ外
からの使用を想定していない
 が、しかし
17/104
#ccc_e4~Java 8: 内部向けパッケージ
GitHubで“import sun.misc.Unsafe”を検索
18/104
~Java 8: 内部向けパッケージ #ccc_e4
😥
19/104
#ccc_e4~Java 8: 内部向けパッケージ
 内部使用向けのはずのUnsafeクラスが広く
使われてしまっている
 性能を絞り出すため……
 なにが問題か?
 移植性の低いプログラムの蔓延
 既存のプログラムを壊さないように配慮
すると、実装の改善がしづらい
20/104
モジュール・システムの基本
#ccc_e4
21/104
#ccc_e4モジュール・システム
Java SE 9での解決策
 JARを名前付きのモジュールとして、
カプセル化された配置の単位に
 これまでの課題:
 JAR地獄
→ モジュール単位で依存関係を整理
 内部向けパッケージ
→ 外部からの使用を実質的に制限
22/104
#ccc_e4モジュール・システム
各JARファイルが名前付きのモジュールに
ace-shooter.jar
= module net.example.ace_shooter
matrix.jar
= module org.example.matrix
physics.jar
= module jp.example.physics
モジュール名は逆ドメイン名方式が推奨
23/104
パッケージ衝突の検知 #ccc_e4
module net.example.ace_shooter
module org.example.matrix
module
org.example.matrix.impl
module
org.example.matrix.api
module jp.example.physics
複数のモジュールが同一パッケージを含む場合、
起動時に検知される †
org.example.matrix.impl.*
org.example.matrix.api.* org.example.matrix.api.*
org.example.matrix.impl.*
😃
24/104
#ccc_e4module-info.java
モジュール名はソースディレクトリのトップ
レベルのmodule-info.javaで宣言
module org.example.matrix {
}
JARファイルのトップレベルの
module-info.class
コンパイル
25/104
公開パッケージの指定 #ccc_e4
module org.example.matrix {
exports org.example.matrix.api;
}
モジュールは、他のモジュールに対して公開
するパッケージをexports命令で指定する
exportされたパッケージは
モジュールの外部仕様 の一部とみなせる
26/104
使うモジュールの指定 #ccc_e4
module jp.example.physics {
requires org.example.matrix;
}
モジュールは、自分が使うモジュールを、
requires命令で指定する
モジュールが使えるクラスの条件:
 requiresした先のモジュールの
 exportsされたパッケージの
 publicなクラス
→ 該当しないクラスを使うと
コンパイルエラー / 実行時例外
27/104
exports / requires #ccc_e4
module A {
requires B;
}
module B {
exports B.api;
requires C;
}
module C {
exports C.api;
}
B.apiパッケージ
B.implパッケージ
C.apiパッケージ
→ 😃使える
→ 😥使えない
→ 😥使えない
C.apiパッケージ → 😃使える
28/104
exports / requires #ccc_e4
module A {
requires B;
}
module B {
exports B.api;
requires C;
}
module C {
exports C.api;
}
A.xxxパッケージ → 😃使える
自分のモジュール内のパッケージは、非公開でも使える
B.xxxパッケージ
C.xxxパッケージ → 😃使える
→ 😃使える
29/104
exports / requires #ccc_e4
module A {
requires B;
}
module B {
exports B.api;
requires C;
}
requiresしたモジュールが存在しないと
コンパイルエラー / 実行時例外
30/104
#ccc_e4標準モジュール
Java SEの標準ライブラリも、モジュールに
分割されている
 java.baseモジュールは暗黙的にrequiresされる
 それ以外は明示的にrequiresする必要あり
モジュール パッケージ群
java.base java.lang, java.util, java.io, ...
java.sql java.sql, javax.sql, ...
java.desktop java.awt, javax.swing, ...
... ...
31/104
リフレクション
#ccc_e4
32/104
#ccc_e4リフレクション
モジュールのカプセル化はリフレクションに
も適用される
 外部モジュールからアクセスできるのは、
exportsされたパッケージの、公開クラ
スの、公開メンバだけ
 requires関係は不要
 非公開なメンバへのアクセスは、
外部モジュールからは通常不可能
33/104
#ccc_e4リフレクション
困る例: DI先のクラス
package net.example.ace_shooter.engine;
public class GameEngine {
@Inject private PerfMonitor perfMonitor;
...
} public にしたくない
34/104
exportsしたくない
リフレクションで触ってほしいクラスは
必ずしも公開したいわけではない
#ccc_e4リフレクション
必要な緩和策:
 パッケージをexportsしたくない
 メンバをpublicにしたくない
 でもリフレクションでアクセスさせたい
35/104
#ccc_e4opens命令
opens命令でパッケージを指定することで、
外部からリフレクションができるようになる
module net.example.ace_shooter {
opens net.example.ace_shooter.core;
...
}
36/104
#ccc_e4openモジュール
モジュール宣言にopenを修飾すると、
すべてのパッケージがopens指定される
open module net.example.ace_shooter {
...
}
37/104
リフレクション #ccc_e4
リフレクションは
もはや魔法の杖ではない!
38/104
コンパイルと実行
#ccc_e4
39/104
#ccc_e4コンパイルと実行
注意点:
 プログラムのコンパイル方法、実行時の
プログラム配置方法はJava SE実装依存
 本セッションは、Java SEの参照実装で
あるOracle JDKを前提とする
40/104
#ccc_e4
41/104
モジュールパス
モジュールパス:
 モジュールのJARファイルを配置する
パス
 クラスパスとは別!
#ccc_e4コンパイル
javacコマンドの主なオプション
オプション 内容
--module-path ¥
{モ ジ ュ ー ル パス}
依存先モジュールのモジュールパ
ス
--module-source-path ¥
{モ ジ ュ ー ル ソ ー ス パス}
複数モジュールを同時コンパイル
する時、モジュールのソースディ
レクトリの配置先を指定
※あまり使わないはず
--module-version ¥
{バ ー ジ ョン}
モジュールのバージョン
※いまのところ使い道は無い
42/104
実行構成
#ccc_e4実行
初期モジュール(mainを含むモジュール)か
ら推移的に参照されるモジュールだけが、
実行構成に含まれる(基本的に)
module Main
java.base
java.desktop
java.sql
module X
module Y
module Z
43/104
モ ジ ュ ー ル パ ス
Zやjava.sqlはリフレクションでも触れない
#ccc_e4実行
javaコマンドの主なオプション
オプション 内容
--module-path ¥
{モ ジ ュ ー ル パス}
モ ジ ュ ー ル パ ス
--module ¥
{初 期 モ ジ ュ ー ル名}/{メインクラス }
mainメソッドを持つ
ク ラ ス
--module {初期モジュール 名} 初 期 モ ジ ュ ー ル
--add-modules ¥
{モ ジ ュ ー ル名},{モジュール 名},...
初 期 モ ジ ュ ー ル か ら
推 移 的 に 参 照 さ れ な
い モ ジ ュ ー ル を 実 行
構 成 に 追 加
44/104
経過措置
#ccc_e4
45/104
#ccc_e4経過措置
 現時点で、多くのプログラムのJARは、
module-info.classを含んでいない
 モジュールの世界への経過措置として、
二種類の特殊なモジュールが導入された
 無名モジュール
 自動モジュール
46/104
#ccc_e4無名モジュール
 クラスパス上のクラスファイルは、
無名モジュールの中でロードされる
 無名モジュールは:
 モジュール名を持たない
 すべてのモジュールをrequiresする
 すべてのパッケージをexportsする
 Oracle JDKでは、外部モジュールの非公
開メンバへのリフレクションが可能
47/104
#ccc_e4自動モジュール
 モジュールパス上のJARファイルのうち、
module-info.classを持たないものは、
自動モジュールとしてロードされる
 自動モジュールは:
 モジュールパス上の
すべてのモジュールをrequiresする
 すべての無名モジュールをrequiresする
 すべてのパッケージをexportsする
 すべてのパッケージをopensする
48/104
#ccc_e4自動モジュール
自動モジュールのモジュール名の決定方法:
1. JARのMANIFEST.MFファイルが
Automatic-Module-Name属性を持って
いる場合、その値がモジュール名
2. そうでない場合、JARファイル名を元に
モジュール名が作られる
 commons-io.jar
→ commons_ioモジュール
49/104
モジュール世界への移行
#ccc_e4
50/104
#ccc_e4モジュール世界への移行
ソフトウェア種別ごとのモジュール化指針:
種別 モジュール化指針
ライブラリ いますぐモジュール化!
プラグイン 基盤ミドルウェア次第
APサーバ上の
アプリケーション
基盤ミドルウェア次第
※Java EE 8はモジュール非対応
スタンドアロンの
アプリケーション
遅くなりすぎない程度に
モジュール化する場合もしない場合も、
JDK9への移行ガイドは必読
51/104
#ccc_e4ライブラリのモジュール化
ライブラリのモジュール化が喫緊な理由:
 ライブラリを使う側のプログラムが、
requires命令を書けるようにするため
52/104
#ccc_e4ライブラリのモジュール化
JARファイル名ベースの自動モジュールを
requiresしてはいけない!
module org.example.matrix {
requires commons_io;
...
}
😥
駄目パターン:
→ Commons IOに本当のモジュール名が
付いたとき、ライブラリを使う側のプログラムが
不整合になる
※ requires staticは許容範囲
53/104
#ccc_e4ライブラリのモジュール化
モジュール化のフロー
すべての requires先JAR の
モジュール名が決まるまで待つ
Automatic-Module-Nameで
モジュール名を決めて公開
module-info.javaを書いて公開
すべての requires先JAR の
モジュール名が決まっている?
NoYes
54/104
#ccc_e4ライブラリのモジュール化
Java SE 8以前をサポートしたい時:
 Automatic-Module-Name属性を付ける
→ これは簡単
 module-info.javaが書きたい場合、
module-info.javaだけをJava SE 9用に
コンパイルする
55/104
モジュールのテスト
#ccc_e4
56/104
#ccc_e4モジュールのテスト
二種類のテスト
ブ ラ ッ ク ボ ッ ク ス
・テスト
 モ ジ ュ ー ル の 外 か ら テ スト 。
 exportsされたパッケージの、public な
ク ラ ス を 操 作 し て 、 仕 様ど お りに 動 く
ことを確かめる。
 テ ス ト コ ー ド は 、 テ ス ト対 象 と
別 モ ジ ュ ー ル 。
ホ ワ イ ト ボ ッ ク ス
・テスト
 モ ジ ュ ー ル の 内 側 を テ スト 。
 公 開 ・ 非 公 開 に か か わ らず 、 クラ ス ・
メ ソ ッ ド を 操 作 し て 、 意図 し た実 装 に
なっていることを確かめる。
 テ ス ト コ ー ド は 、 テ ス ト対 象 と
同 一 モ ジ ュ ー ル……どうやって?
57/104
#ccc_e4ホワイトボックス・テスト
ホワイトボックス・テストの課題:
 テストコードは、JUnit, TestNG, JMockit
など、テスト用ライブラリを使う
 テスト対象コードは、これらのライブ
ラリをrequiresしていない
 コンパイル済みのモジュールに、テスト
コードのクラスを追加する必要がある
58/104
#ccc_e4ホワイトボックス・テスト
ふたつのやり方:
59/104
正攻法 → こちらを解説
 テスト対象のモジュール定義を、
テストできる構成に一時的に上書き
 javac/javaコマンドにオプションを指定
次善の策
 あきらめてクラスパス上でテスト
#ccc_e4モジュール定義の上書き
JDKのjavac /javaコマンド共通オプション
オプション 内容
--add-reads ¥
{モ ジ ュ ー ル名}={参照先モジュール},...
requires定義を追加
--patch-module ¥
{モ ジ ュ ー ル名}={ファイル,...},...
モ ジ ュ ー ル に ソ ー
ス フ ァ イ ル/クラス
フ ァ イ ル を 追 加
60/104
モジュール定義の上書き #ccc_e4
javac ... ¥
--add-reads app=junit ¥
--patch-module app=ATest.java,BTest.java
java ... ¥
--add-reads app=junit ¥
--patch-module app=ATest.class,BTest.class ¥
--add-modules ALL-MODULE-PATH
コンパイル
実行
モ ジ ュ ー ル パ ス 上 の 全JARを実行構成に含める
61/104
高度なトピック
#ccc_e4
62/104
#ccc_e4SPI
SPIの仕組みはモジュール・システムに統合
された
 サービスを使うモジュールは、
uses命令でSPIを指定
 サービスを提供するモジュールは、
provides命令でサービスの実装を指定
63/104
#ccc_e4requires static
コンパイル時に必要だが、実行時には不要な
モジュールを、requires static命令で指定で
きる
 例: JSR 305の@Nullableアノテーション
64/104
ブートレイヤー
#ccc_e4モジュールレイヤー
モジュールレイヤー: モジュールの名前空間
java.base
java.sql
jp.example.app_container
java.desktop
java.logging
アプリ X のレイヤー アプリ Yのレイヤー
com.example.app_x org.example.app_y
net.example.utils net.example.utils
子
親
子
親
アプリケーションコンテナや、プラグイン機構の
基礎となる仕組み
65/104
#ccc_e4モジュールレイヤー
クラスローダーとモジュールレイヤーの関連
Module ModuleLayer
ClassLoader
Class
Package
Unnamed
Module
Named
Module
続きはウェブで!
http://d.hatena.ne.jp/miyakawa_taku/20171108/1510145001
66/104
#ccc_e4OSGiとの違い
 OSGiはコンテナの仕組みを仕様に含むが、
Javaのモジュール・システムはコンテナの
仕組みを含まない
 Javaのモジュール・システムは、OSGiの
ようなものを作るための基礎と考えられる
67/104
モジュール・システムの
参考資料
#ccc_e4
68/104
#ccc_e4モジュール・システムの参考資料
Bakker, Mak (2017)『Java 9 Modularity』
69/104
演目
そもそも
Java SEってなんだっけ?
Java SE 9の
モジュール・システム
Java SE 9の
その他のアップデート
#ccc_e4
70/104
#ccc_e4その他のアップデート
モジュール・システム以外の主要なアップ
デートを、対応するJEPを参照しながら
見ていく
71/104
#ccc_e4JEP
 JEP: Java SEの参照実装であるJDKの開発
フロー
 JEP 261: Module System
 JEP 213: Milling Project Coin
 ...
 JEP自体は規格の一部ではないが、
Java SEを理解するのに役立つ
 ※ Javaの規格はJSRで決まる
72/104
JEP 269
コレクションのファクトリ
#ccc_e4
73/104
#ccc_e4コレクションのファクトリ
List.of, Set.of, Map.ofメソッドで、不変な
コンテナが作れるようになった☆
74/104
List.of #ccc_e4
List<String> a
= Collections.emptyList();
List<String> b
= Collections.singletonList("foo");
List<String> c
= Collections.unmodifiableList(Arrays.asList("foo", "bar"));
List<String> a = List.of();
List<String> b = List.of("foo");
List<String> c = List.of("foo", "bar");
~Java SE 8
Java SE 9
75/104
Map.of #ccc_e4
Map<String, Integer> m = new HashMap<>();
m.put("双葉山", 69);
m.put("大鵬", 45);
m.put("白鵬", 63);
Map<String, Integer> yokozuna
= Collections.unmodifiableMap(m);
~Java SE 8
Map<String, Integer> yokozuna
= Map.of("双葉山", 69, "大鵬", 45, "白鵬", 63);
Java SE 9
76/104
JEP 213
try-with-resourcesの改善
#ccc_e4
77/104
try-with-resourcesの改善 #ccc_e4
try (BufferedReader br = new BufferedReader(
new InputStreamReader(
new FileInputStream("foo.txt"),
StandardCharsets.UTF_8))) {
...
}
~Java SE 8
Java SE 9
BufferedReader br = new BufferedReader(
new InputStreamReader(
new FileInputStream("foo.txt"),
StandardCharsets.UTF_8));
try (br) {
...
}
78/104
JEP 213
インタフェースのprivateメソッド
#ccc_e4
79/104
#ccc_e4インタフェースのprivateメソッド
インタフェースにprivateメソッドが定義でき
るようになった
defaultメソッドの実装が複雑になったとき、
その一部がprivateメソッドに抽出できる☆
80/104
JEP 213
匿名クラスでダイヤモンド演算子
#ccc_e4
81/104
#ccc_e4匿名クラスでダイヤモンド演算子
匿名クラスの宣言でダイヤモンド演算子が使
えるようになった
Java SE 9
Iterator<Integer> inc = new Iterator<>() {
private int n = 0;
@Override public boolean hasNext() {
return true;
}
@Override public Integer next() {
return this.n ++;
}
};
82/104
JEP 213
「_」1文字識別子の禁止
#ccc_e4
83/104
#ccc_e4「_」1文字識別子の禁止
「_」1文字の識別子が使えなくなった
 ×変数名
 ×フィールド名
 ×メソッド名
 ×クラス名
 ×ラムダ式のパラメータ
(これは8から)
84/104
JEP 226
ResourceBundleプロパティが
デフォルトUTF-8に☆
#ccc_e4
85/104
ResourceBundle→UTF-8 #ccc_e4
~Java SE 8
Java SE 9
 ResourceBundleのプロパティファイルは
デフォルトでLatin-1
 日本語などのメッセージはnative2asciiで
エスケープする必要があった
 ResourceBundleのプロパティファイルが
デフォルトでUTF-8に☆
 注意: Propertiesクラスのデフォルトは
Latin-1のまま
86/104
JEP 266
Reactive Streamsサポート
#ccc_e4
87/104
#ccc_e4Reactive Streamsサポート
分散システムのプログラミングモデルである
Reactive Streamsをサポート
下記のインターフェースを提供
 Flow.Publisher
 Flow.Subscriber
 Flow.Subscription
 Flow.Processor
88/104
JEP 266
CompletableFutureの強化
#ccc_e4
89/104
#ccc_e4CompletableFutureの強化
 CompletableFutureクラス:
 非同期に完了/キャンセルできるタスク
 Promiseパターンを実現する仕組み
 Java SE 9で便利メソッドがもろもろ追加
 orTimeout: タイムアウト時間を指定
 Executorのファクトリ群
 などなど
90/104
JEP 102
プロセスAPIの強化
#ccc_e4
91/104
#ccc_e4プロセスAPIの強化
 ProcessHandleクラス:
 ネイティブプロセスを表す
 PIDや実行ユーザなどが取れる
 Process.onExit()メソッド:
 プロセス終了時に完了する
CompletableFutureを戻す
 複数の子プロセスからどれか1つの終了
を待ち受ける、のような操作が可能に
92/104
自分自身のPIDを出力 #ccc_e4
Java SE 9
ProcessHandle ph = ProcessHandle.current();
long pid = ph.pid();
System.out.println(pid);
// → 12345
93/104
JEP 277
@Deprecatedの強化
#ccc_e4
94/104
#ccc_e4@Deprecatedの強化
@Deprecatedアノテーションへの属性追加
 since: いつから非推奨になったか
 forRemoval: 将来削除される予定か
Java SE 9
@Deprecated(
since = "3.0.0", // 3.0.0から非推奨
forRemoval = ture // 未来のバージョンでは削除予定
)
public class FatOldSun {
...
}
95/104
JEP 280
文字列結合のindy化
#ccc_e4
96/104
#ccc_e4文字列結合のindy化
文字列結合演算の実装を処理系が選択できる
ように、invokedynamic命令のためのブート
ストラップメソッドが定義された
注意!
 プログラマにとっての指針は変わらない
→ 結合を繰り返す時はStringBuilderを使う
 この変更で得られるのは、極めて微視的で、
処理系依存な高速化の可能性にすぎない
 推測するな、(マクロに)計測せよ
97/104
JEP 219, 244, 249, 273, 229
セキュリティの改善
#ccc_e4
98/104
#ccc_e4セキュリティの改善
 JEP 219: DTLS
 JEP 244: ALPN
 JEP 249: OCSP Stapling for TLS
 JEP 273:
 SecureRandomのアルゴリズム追加
 パラメータ設定用API追加
 JEP 229:
 PKCS2をキーストアファイルのデフォルトに
99/104
JEP 238
マルチリリースJARファイル
#ccc_e4
100/104
#ccc_e4マルチリリースJARファイル
 特定のJava SEバージョン用に、クラス
ファイル/リソースファイルを上書き
 上書き用のファイルの配置場所:
 META-INF/versions /<バージョン>/
 Java SE 8以前と9を両方サポートするため
の、最後の手段として使える
101/104
演目
Java SE 9の
その他のアップデート
Java SE 9の
モジュール・システム
そもそも
Java SEってなんだっけ?
#ccc_e4
102/104
註釈
#ccc_e4
103/104
#ccc_e4† パッケージの衝突検知
「複数のモジュールが同一パッケージを含む場
合、起動時に検知される」
 厳密には、「モジュールレイヤーが、モ
ジュール間のパッケージ重複を許さない構
成である時、そのモジュールレイヤー内の
複数のモジュールが~」である
 異なるモジュールレイヤー間では、同じ名
前のパッケージが共存できる
 defineModulesWithManyLoadersで作られた
モジュールレイヤーは、exportされない
パッケージの重複を許す
104/104

Más contenido relacionado

La actualidad más candente

がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とはがんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とはJun-ichi Sakamoto
 
これからのJDK 何を選ぶ?どう選ぶ? (v1.2) in 熊本
これからのJDK 何を選ぶ?どう選ぶ? (v1.2) in 熊本これからのJDK 何を選ぶ?どう選ぶ? (v1.2) in 熊本
これからのJDK 何を選ぶ?どう選ぶ? (v1.2) in 熊本Takahiro YAMADA
 
java.lang.OutOfMemoryError #渋谷java
java.lang.OutOfMemoryError #渋谷javajava.lang.OutOfMemoryError #渋谷java
java.lang.OutOfMemoryError #渋谷javaYuji Kubota
 
Unified JVM Logging
Unified JVM LoggingUnified JVM Logging
Unified JVM LoggingYuji Kubota
 
初めてでも30分で分かるSpring 5 & Spring Boot 2オーバービュー
初めてでも30分で分かるSpring 5 & Spring Boot 2オーバービュー初めてでも30分で分かるSpring 5 & Spring Boot 2オーバービュー
初めてでも30分で分かるSpring 5 & Spring Boot 2オーバービューMasatoshi Tada
 
9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...
9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...
9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...NTT DATA Technology & Innovation
 
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)NTT DATA Technology & Innovation
 
やはりお前らのMVCは間違っている
やはりお前らのMVCは間違っているやはりお前らのMVCは間違っている
やはりお前らのMVCは間違っているKoichi Tanaka
 
本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話Kumazaki Hiroki
 
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -onozaty
 
Spring Bootの本当の理解ポイント #jjug
Spring Bootの本当の理解ポイント #jjugSpring Bootの本当の理解ポイント #jjug
Spring Bootの本当の理解ポイント #jjugMasatoshi Tada
 
JDK 16 で導入された JEP 396 にご注意!! (JJUG CCC 2021 Spring)
JDK 16 で導入された JEP 396 にご注意!! (JJUG CCC 2021 Spring)JDK 16 で導入された JEP 396 にご注意!! (JJUG CCC 2021 Spring)
JDK 16 で導入された JEP 396 にご注意!! (JJUG CCC 2021 Spring)Yoshiro Tokumasu
 
Java ORマッパー選定のポイント #jsug
Java ORマッパー選定のポイント #jsugJava ORマッパー選定のポイント #jsug
Java ORマッパー選定のポイント #jsugMasatoshi Tada
 
Scala警察のすすめ
Scala警察のすすめScala警察のすすめ
Scala警察のすすめtakezoe
 
JAVA_HOME/binにあるコマンド、いくつ使っていますか?[JVM関連ツール編](JJUGナイトセミナー「Java解析ツール特集」 発表資料)
JAVA_HOME/binにあるコマンド、いくつ使っていますか?[JVM関連ツール編](JJUGナイトセミナー「Java解析ツール特集」 発表資料)JAVA_HOME/binにあるコマンド、いくつ使っていますか?[JVM関連ツール編](JJUGナイトセミナー「Java解析ツール特集」 発表資料)
JAVA_HOME/binにあるコマンド、いくつ使っていますか?[JVM関連ツール編](JJUGナイトセミナー「Java解析ツール特集」 発表資料)NTT DATA Technology & Innovation
 
BuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルドBuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルドAkihiro Suda
 
「伝わるチケット」の書き方
「伝わるチケット」の書き方「伝わるチケット」の書き方
「伝わるチケット」の書き方onozaty
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Akihiro Suda
 

La actualidad más candente (20)

Mavenの真実とウソ
Mavenの真実とウソMavenの真実とウソ
Mavenの真実とウソ
 
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とはがんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは
 
これからのJDK 何を選ぶ?どう選ぶ? (v1.2) in 熊本
これからのJDK 何を選ぶ?どう選ぶ? (v1.2) in 熊本これからのJDK 何を選ぶ?どう選ぶ? (v1.2) in 熊本
これからのJDK 何を選ぶ?どう選ぶ? (v1.2) in 熊本
 
java.lang.OutOfMemoryError #渋谷java
java.lang.OutOfMemoryError #渋谷javajava.lang.OutOfMemoryError #渋谷java
java.lang.OutOfMemoryError #渋谷java
 
Unified JVM Logging
Unified JVM LoggingUnified JVM Logging
Unified JVM Logging
 
初めてでも30分で分かるSpring 5 & Spring Boot 2オーバービュー
初めてでも30分で分かるSpring 5 & Spring Boot 2オーバービュー初めてでも30分で分かるSpring 5 & Spring Boot 2オーバービュー
初めてでも30分で分かるSpring 5 & Spring Boot 2オーバービュー
 
9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...
9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...
9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...
 
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
 
やはりお前らのMVCは間違っている
やはりお前らのMVCは間違っているやはりお前らのMVCは間違っている
やはりお前らのMVCは間違っている
 
本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話
 
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
 
Spring Bootの本当の理解ポイント #jjug
Spring Bootの本当の理解ポイント #jjugSpring Bootの本当の理解ポイント #jjug
Spring Bootの本当の理解ポイント #jjug
 
JDK 16 で導入された JEP 396 にご注意!! (JJUG CCC 2021 Spring)
JDK 16 で導入された JEP 396 にご注意!! (JJUG CCC 2021 Spring)JDK 16 で導入された JEP 396 にご注意!! (JJUG CCC 2021 Spring)
JDK 16 で導入された JEP 396 にご注意!! (JJUG CCC 2021 Spring)
 
Java ORマッパー選定のポイント #jsug
Java ORマッパー選定のポイント #jsugJava ORマッパー選定のポイント #jsug
Java ORマッパー選定のポイント #jsug
 
Scala警察のすすめ
Scala警察のすすめScala警察のすすめ
Scala警察のすすめ
 
Metaspace
MetaspaceMetaspace
Metaspace
 
JAVA_HOME/binにあるコマンド、いくつ使っていますか?[JVM関連ツール編](JJUGナイトセミナー「Java解析ツール特集」 発表資料)
JAVA_HOME/binにあるコマンド、いくつ使っていますか?[JVM関連ツール編](JJUGナイトセミナー「Java解析ツール特集」 発表資料)JAVA_HOME/binにあるコマンド、いくつ使っていますか?[JVM関連ツール編](JJUGナイトセミナー「Java解析ツール特集」 発表資料)
JAVA_HOME/binにあるコマンド、いくつ使っていますか?[JVM関連ツール編](JJUGナイトセミナー「Java解析ツール特集」 発表資料)
 
BuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルドBuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルド
 
「伝わるチケット」の書き方
「伝わるチケット」の書き方「伝わるチケット」の書き方
「伝わるチケット」の書き方
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
 

Destacado

Java9を迎えた今こそ!Java本格(再)入門
Java9を迎えた今こそ!Java本格(再)入門Java9を迎えた今こそ!Java本格(再)入門
Java9を迎えた今こそ!Java本格(再)入門Takuya Okada
 
ユニットテストのアサーション 流れるようなインターフェースのAssertJを添えて 入門者仕立て
ユニットテストのアサーション 流れるようなインターフェースのAssertJを添えて 入門者仕立てユニットテストのアサーション 流れるようなインターフェースのAssertJを添えて 入門者仕立て
ユニットテストのアサーション 流れるようなインターフェースのAssertJを添えて 入門者仕立てRyosuke Uchitate
 
JJUG初心者のためのJava/JJUG講座
JJUG初心者のためのJava/JJUG講座JJUG初心者のためのJava/JJUG講座
JJUG初心者のためのJava/JJUG講座Yusuke Suzuki
 
劇的改善 Ci4時間から5分へ〜私がやった10のこと〜
劇的改善 Ci4時間から5分へ〜私がやった10のこと〜劇的改善 Ci4時間から5分へ〜私がやった10のこと〜
劇的改善 Ci4時間から5分へ〜私がやった10のこと〜aha_oretama
 
JEP280: Java 9 で文字列結合の処理が変わるぞ!準備はいいか!? #jjug_ccc
JEP280: Java 9 で文字列結合の処理が変わるぞ!準備はいいか!? #jjug_cccJEP280: Java 9 で文字列結合の処理が変わるぞ!準備はいいか!? #jjug_ccc
JEP280: Java 9 で文字列結合の処理が変わるぞ!準備はいいか!? #jjug_cccYujiSoftware
 
JVM上で動くPython処理系実装のススメ
JVM上で動くPython処理系実装のススメJVM上で動くPython処理系実装のススメ
JVM上で動くPython処理系実装のススメYoshiaki Shibutani
 
Graph Algorithms Part 1
Graph Algorithms Part 1Graph Algorithms Part 1
Graph Algorithms Part 1Taku Miyakawa
 
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS   更新系と参照系で異なるORMを併用して上手くいった話DDD x CQRS   更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話Koichiro Matsuoka
 
Dockerで始める Java EE アプリケーション開発 for JJUG CCC 2017
Dockerで始める Java EE アプリケーション開発 for JJUG CCC 2017Dockerで始める Java EE アプリケーション開発 for JJUG CCC 2017
Dockerで始める Java EE アプリケーション開発 for JJUG CCC 2017Kohei Saito
 
Selenide or Geb 〜あなたはその時どちらを使う〜
Selenide or Geb 〜あなたはその時どちらを使う〜Selenide or Geb 〜あなたはその時どちらを使う〜
Selenide or Geb 〜あなたはその時どちらを使う〜Youtarou TAKAHASHI
 
Business Process Modeling in Goldman Sachs @ JJUG CCC Fall 2017
Business Process Modeling in Goldman Sachs @ JJUG CCC Fall 2017Business Process Modeling in Goldman Sachs @ JJUG CCC Fall 2017
Business Process Modeling in Goldman Sachs @ JJUG CCC Fall 2017tty fky
 
サーバサイド Kotlin
サーバサイド Kotlinサーバサイド Kotlin
サーバサイド KotlinHiroki Ohtani
 
Redmine4時代のプラグイン開発 redmine.tokyo #13
Redmine4時代のプラグイン開発 redmine.tokyo #13Redmine4時代のプラグイン開発 redmine.tokyo #13
Redmine4時代のプラグイン開発 redmine.tokyo #13Sho Douhashi
 
Javaアプリケーションの モダナイゼーションアプローチ
Javaアプリケーションの モダナイゼーションアプローチJavaアプリケーションの モダナイゼーションアプローチ
Javaアプリケーションの モダナイゼーションアプローチCData Software Japan
 
Internetトラフィックエンジニアリングの現実
Internetトラフィックエンジニアリングの現実Internetトラフィックエンジニアリングの現実
Internetトラフィックエンジニアリングの現実J-Stream Inc.
 
サンプルアプリケーションで学ぶApache Cassandraを使ったJavaアプリケーションの作り方
サンプルアプリケーションで学ぶApache Cassandraを使ったJavaアプリケーションの作り方サンプルアプリケーションで学ぶApache Cassandraを使ったJavaアプリケーションの作り方
サンプルアプリケーションで学ぶApache Cassandraを使ったJavaアプリケーションの作り方Yuki Morishita
 
マルチクラウドデータ連携Javaアプリケーションの作り方
マルチクラウドデータ連携Javaアプリケーションの作り方マルチクラウドデータ連携Javaアプリケーションの作り方
マルチクラウドデータ連携Javaアプリケーションの作り方CData Software Japan
 
CDNのトラフィックエンジニアリング:CDNの現状とSDNの可能性
CDNのトラフィックエンジニアリング:CDNの現状とSDNの可能性CDNのトラフィックエンジニアリング:CDNの現状とSDNの可能性
CDNのトラフィックエンジニアリング:CDNの現状とSDNの可能性J-Stream Inc.
 
Open Liberty: オープンソースになったWebSphere Liberty
Open Liberty: オープンソースになったWebSphere LibertyOpen Liberty: オープンソースになったWebSphere Liberty
Open Liberty: オープンソースになったWebSphere LibertyTakakiyo Tanaka
 
Another compilation method in java - AOT (Ahead of Time) compilation
Another compilation method in java - AOT (Ahead of Time) compilationAnother compilation method in java - AOT (Ahead of Time) compilation
Another compilation method in java - AOT (Ahead of Time) compilationLogico
 

Destacado (20)

Java9を迎えた今こそ!Java本格(再)入門
Java9を迎えた今こそ!Java本格(再)入門Java9を迎えた今こそ!Java本格(再)入門
Java9を迎えた今こそ!Java本格(再)入門
 
ユニットテストのアサーション 流れるようなインターフェースのAssertJを添えて 入門者仕立て
ユニットテストのアサーション 流れるようなインターフェースのAssertJを添えて 入門者仕立てユニットテストのアサーション 流れるようなインターフェースのAssertJを添えて 入門者仕立て
ユニットテストのアサーション 流れるようなインターフェースのAssertJを添えて 入門者仕立て
 
JJUG初心者のためのJava/JJUG講座
JJUG初心者のためのJava/JJUG講座JJUG初心者のためのJava/JJUG講座
JJUG初心者のためのJava/JJUG講座
 
劇的改善 Ci4時間から5分へ〜私がやった10のこと〜
劇的改善 Ci4時間から5分へ〜私がやった10のこと〜劇的改善 Ci4時間から5分へ〜私がやった10のこと〜
劇的改善 Ci4時間から5分へ〜私がやった10のこと〜
 
JEP280: Java 9 で文字列結合の処理が変わるぞ!準備はいいか!? #jjug_ccc
JEP280: Java 9 で文字列結合の処理が変わるぞ!準備はいいか!? #jjug_cccJEP280: Java 9 で文字列結合の処理が変わるぞ!準備はいいか!? #jjug_ccc
JEP280: Java 9 で文字列結合の処理が変わるぞ!準備はいいか!? #jjug_ccc
 
JVM上で動くPython処理系実装のススメ
JVM上で動くPython処理系実装のススメJVM上で動くPython処理系実装のススメ
JVM上で動くPython処理系実装のススメ
 
Graph Algorithms Part 1
Graph Algorithms Part 1Graph Algorithms Part 1
Graph Algorithms Part 1
 
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS   更新系と参照系で異なるORMを併用して上手くいった話DDD x CQRS   更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
 
Dockerで始める Java EE アプリケーション開発 for JJUG CCC 2017
Dockerで始める Java EE アプリケーション開発 for JJUG CCC 2017Dockerで始める Java EE アプリケーション開発 for JJUG CCC 2017
Dockerで始める Java EE アプリケーション開発 for JJUG CCC 2017
 
Selenide or Geb 〜あなたはその時どちらを使う〜
Selenide or Geb 〜あなたはその時どちらを使う〜Selenide or Geb 〜あなたはその時どちらを使う〜
Selenide or Geb 〜あなたはその時どちらを使う〜
 
Business Process Modeling in Goldman Sachs @ JJUG CCC Fall 2017
Business Process Modeling in Goldman Sachs @ JJUG CCC Fall 2017Business Process Modeling in Goldman Sachs @ JJUG CCC Fall 2017
Business Process Modeling in Goldman Sachs @ JJUG CCC Fall 2017
 
サーバサイド Kotlin
サーバサイド Kotlinサーバサイド Kotlin
サーバサイド Kotlin
 
Redmine4時代のプラグイン開発 redmine.tokyo #13
Redmine4時代のプラグイン開発 redmine.tokyo #13Redmine4時代のプラグイン開発 redmine.tokyo #13
Redmine4時代のプラグイン開発 redmine.tokyo #13
 
Javaアプリケーションの モダナイゼーションアプローチ
Javaアプリケーションの モダナイゼーションアプローチJavaアプリケーションの モダナイゼーションアプローチ
Javaアプリケーションの モダナイゼーションアプローチ
 
Internetトラフィックエンジニアリングの現実
Internetトラフィックエンジニアリングの現実Internetトラフィックエンジニアリングの現実
Internetトラフィックエンジニアリングの現実
 
サンプルアプリケーションで学ぶApache Cassandraを使ったJavaアプリケーションの作り方
サンプルアプリケーションで学ぶApache Cassandraを使ったJavaアプリケーションの作り方サンプルアプリケーションで学ぶApache Cassandraを使ったJavaアプリケーションの作り方
サンプルアプリケーションで学ぶApache Cassandraを使ったJavaアプリケーションの作り方
 
マルチクラウドデータ連携Javaアプリケーションの作り方
マルチクラウドデータ連携Javaアプリケーションの作り方マルチクラウドデータ連携Javaアプリケーションの作り方
マルチクラウドデータ連携Javaアプリケーションの作り方
 
CDNのトラフィックエンジニアリング:CDNの現状とSDNの可能性
CDNのトラフィックエンジニアリング:CDNの現状とSDNの可能性CDNのトラフィックエンジニアリング:CDNの現状とSDNの可能性
CDNのトラフィックエンジニアリング:CDNの現状とSDNの可能性
 
Open Liberty: オープンソースになったWebSphere Liberty
Open Liberty: オープンソースになったWebSphere LibertyOpen Liberty: オープンソースになったWebSphere Liberty
Open Liberty: オープンソースになったWebSphere Liberty
 
Another compilation method in java - AOT (Ahead of Time) compilation
Another compilation method in java - AOT (Ahead of Time) compilationAnother compilation method in java - AOT (Ahead of Time) compilation
Another compilation method in java - AOT (Ahead of Time) compilation
 

Similar a Java SE 9の紹介: モジュール・システムを中心に

Javaチョットデキルへの道〜JavaコアSDKに見る真似したいコード10選〜
Javaチョットデキルへの道〜JavaコアSDKに見る真似したいコード10選〜Javaチョットデキルへの道〜JavaコアSDKに見る真似したいコード10選〜
Javaチョットデキルへの道〜JavaコアSDKに見る真似したいコード10選〜JustSystems Corporation
 
JavaでWebサービスを作り続けるための戦略と戦術 JJUG-CCC-2018-Spring-g1
JavaでWebサービスを作り続けるための戦略と戦術 JJUG-CCC-2018-Spring-g1JavaでWebサービスを作り続けるための戦略と戦術 JJUG-CCC-2018-Spring-g1
JavaでWebサービスを作り続けるための戦略と戦術 JJUG-CCC-2018-Spring-g1Y Watanabe
 
ビジネス的に高価値なアジャイルテスト
ビジネス的に高価値なアジャイルテストビジネス的に高価値なアジャイルテスト
ビジネス的に高価値なアジャイルテストTsutomu Chikuba
 
Guide to GraalVM (Oracle Groundbreakers APAC 2019 Tour in Tokyo)
Guide to GraalVM (Oracle Groundbreakers APAC 2019 Tour in Tokyo)Guide to GraalVM (Oracle Groundbreakers APAC 2019 Tour in Tokyo)
Guide to GraalVM (Oracle Groundbreakers APAC 2019 Tour in Tokyo)Koichi Sakata
 
はじめてのCodeIgniter
はじめてのCodeIgniterはじめてのCodeIgniter
はじめてのCodeIgniterYuya Matsushima
 
システムテスト自動化標準ガイド 5章発表資料
システムテスト自動化標準ガイド 5章発表資料システムテスト自動化標準ガイド 5章発表資料
システムテスト自動化標準ガイド 5章発表資料Masatoshi Itoh
 
JJUG CCC 2016 fall バイトコードが君のトモダチになりたがっている
JJUG CCC 2016 fall バイトコードが君のトモダチになりたがっているJJUG CCC 2016 fall バイトコードが君のトモダチになりたがっている
JJUG CCC 2016 fall バイトコードが君のトモダチになりたがっているKoichi Sakata
 
JBoss AS 7 / EAP 6 modules and class loading
JBoss AS 7 / EAP 6 modules and class loadingJBoss AS 7 / EAP 6 modules and class loading
JBoss AS 7 / EAP 6 modules and class loadingnekop
 
Mvc conf session_2_shibamura
Mvc conf session_2_shibamuraMvc conf session_2_shibamura
Mvc conf session_2_shibamuraHiroshi Okunushi
 
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話JustSystems Corporation
 
Code igniterでテスト駆動開発 資料作成中
Code igniterでテスト駆動開発 資料作成中Code igniterでテスト駆動開発 資料作成中
Code igniterでテスト駆動開発 資料作成中Takako Miyagawa
 
Moq & Fakes Framework を使った実践的ユニットテスト - BuildInsider
Moq & Fakes Framework を使った実践的ユニットテスト - BuildInsiderMoq & Fakes Framework を使った実践的ユニットテスト - BuildInsider
Moq & Fakes Framework を使った実践的ユニットテスト - BuildInsider貴志 上坂
 
Eclipse を使った java 開発 111126 杉浦
Eclipse を使った java 開発 111126 杉浦Eclipse を使った java 開発 111126 杉浦
Eclipse を使った java 開発 111126 杉浦urasandesu
 
Apexコアデベロッパーセミナー(Apexコード)071010
Apexコアデベロッパーセミナー(Apexコード)071010Apexコアデベロッパーセミナー(Apexコード)071010
Apexコアデベロッパーセミナー(Apexコード)071010stomita
 
Play framework 2.0のおすすめと1.2からのアップグレード
Play framework 2.0のおすすめと1.2からのアップグレードPlay framework 2.0のおすすめと1.2からのアップグレード
Play framework 2.0のおすすめと1.2からのアップグレードKazuhiro Hara
 

Similar a Java SE 9の紹介: モジュール・システムを中心に (20)

PHP勉強会 #51
PHP勉強会 #51PHP勉強会 #51
PHP勉強会 #51
 
Javaチョットデキルへの道〜JavaコアSDKに見る真似したいコード10選〜
Javaチョットデキルへの道〜JavaコアSDKに見る真似したいコード10選〜Javaチョットデキルへの道〜JavaコアSDKに見る真似したいコード10選〜
Javaチョットデキルへの道〜JavaコアSDKに見る真似したいコード10選〜
 
JavaでWebサービスを作り続けるための戦略と戦術 JJUG-CCC-2018-Spring-g1
JavaでWebサービスを作り続けるための戦略と戦術 JJUG-CCC-2018-Spring-g1JavaでWebサービスを作り続けるための戦略と戦術 JJUG-CCC-2018-Spring-g1
JavaでWebサービスを作り続けるための戦略と戦術 JJUG-CCC-2018-Spring-g1
 
ビジネス的に高価値なアジャイルテスト
ビジネス的に高価値なアジャイルテストビジネス的に高価値なアジャイルテスト
ビジネス的に高価値なアジャイルテスト
 
FlexUnit4とMockitoFlex
FlexUnit4とMockitoFlexFlexUnit4とMockitoFlex
FlexUnit4とMockitoFlex
 
Guide to GraalVM (Oracle Groundbreakers APAC 2019 Tour in Tokyo)
Guide to GraalVM (Oracle Groundbreakers APAC 2019 Tour in Tokyo)Guide to GraalVM (Oracle Groundbreakers APAC 2019 Tour in Tokyo)
Guide to GraalVM (Oracle Groundbreakers APAC 2019 Tour in Tokyo)
 
はじめてのCodeIgniter
はじめてのCodeIgniterはじめてのCodeIgniter
はじめてのCodeIgniter
 
システムテスト自動化標準ガイド 5章発表資料
システムテスト自動化標準ガイド 5章発表資料システムテスト自動化標準ガイド 5章発表資料
システムテスト自動化標準ガイド 5章発表資料
 
JJUG CCC 2016 fall バイトコードが君のトモダチになりたがっている
JJUG CCC 2016 fall バイトコードが君のトモダチになりたがっているJJUG CCC 2016 fall バイトコードが君のトモダチになりたがっている
JJUG CCC 2016 fall バイトコードが君のトモダチになりたがっている
 
PHP agile test tips
PHP agile test tipsPHP agile test tips
PHP agile test tips
 
JBoss AS 7 / EAP 6 modules and class loading
JBoss AS 7 / EAP 6 modules and class loadingJBoss AS 7 / EAP 6 modules and class loading
JBoss AS 7 / EAP 6 modules and class loading
 
Spock's world
Spock's worldSpock's world
Spock's world
 
Mvc conf session_2_shibamura
Mvc conf session_2_shibamuraMvc conf session_2_shibamura
Mvc conf session_2_shibamura
 
Molecule入門
Molecule入門Molecule入門
Molecule入門
 
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
 
Code igniterでテスト駆動開発 資料作成中
Code igniterでテスト駆動開発 資料作成中Code igniterでテスト駆動開発 資料作成中
Code igniterでテスト駆動開発 資料作成中
 
Moq & Fakes Framework を使った実践的ユニットテスト - BuildInsider
Moq & Fakes Framework を使った実践的ユニットテスト - BuildInsiderMoq & Fakes Framework を使った実践的ユニットテスト - BuildInsider
Moq & Fakes Framework を使った実践的ユニットテスト - BuildInsider
 
Eclipse を使った java 開発 111126 杉浦
Eclipse を使った java 開発 111126 杉浦Eclipse を使った java 開発 111126 杉浦
Eclipse を使った java 開発 111126 杉浦
 
Apexコアデベロッパーセミナー(Apexコード)071010
Apexコアデベロッパーセミナー(Apexコード)071010Apexコアデベロッパーセミナー(Apexコード)071010
Apexコアデベロッパーセミナー(Apexコード)071010
 
Play framework 2.0のおすすめと1.2からのアップグレード
Play framework 2.0のおすすめと1.2からのアップグレードPlay framework 2.0のおすすめと1.2からのアップグレード
Play framework 2.0のおすすめと1.2からのアップグレード
 

Más de Taku Miyakawa

Matrix Multiplication in Strassen Algorithm
Matrix Multiplication in Strassen AlgorithmMatrix Multiplication in Strassen Algorithm
Matrix Multiplication in Strassen AlgorithmTaku Miyakawa
 
Javaのログ出力: 道具と考え方
Javaのログ出力: 道具と考え方Javaのログ出力: 道具と考え方
Javaのログ出力: 道具と考え方Taku Miyakawa
 
擬似乱数生成器の評価
擬似乱数生成器の評価擬似乱数生成器の評価
擬似乱数生成器の評価Taku Miyakawa
 
コルーチンの実装について
コルーチンの実装についてコルーチンの実装について
コルーチンの実装についてTaku Miyakawa
 
言語設計者が意味論を書くときに考えていたこと
言語設計者が意味論を書くときに考えていたこと言語設計者が意味論を書くときに考えていたこと
言語設計者が意味論を書くときに考えていたことTaku Miyakawa
 
金勘定のためのBigDecimalそしてMoney and Currency API
金勘定のためのBigDecimalそしてMoney and Currency API金勘定のためのBigDecimalそしてMoney and Currency API
金勘定のためのBigDecimalそしてMoney and Currency APITaku Miyakawa
 
Quasar: Actor Model and Light Weight Threads on Java
Quasar: Actor Model and Light Weight Threads on JavaQuasar: Actor Model and Light Weight Threads on Java
Quasar: Actor Model and Light Weight Threads on JavaTaku Miyakawa
 
ラムダと invokedynamic の蜜月
ラムダと invokedynamic の蜜月ラムダと invokedynamic の蜜月
ラムダと invokedynamic の蜜月Taku Miyakawa
 
Summary of "Hacking", 0x351-0x354
Summary of "Hacking", 0x351-0x354Summary of "Hacking", 0x351-0x354
Summary of "Hacking", 0x351-0x354Taku Miyakawa
 
Processing LTSV by Apache Pig
Processing LTSV by Apache PigProcessing LTSV by Apache Pig
Processing LTSV by Apache PigTaku Miyakawa
 
Kink: プロトタイプベースの俺々 JVM 言語
Kink: プロトタイプベースの俺々 JVM 言語Kink: プロトタイプベースの俺々 JVM 言語
Kink: プロトタイプベースの俺々 JVM 言語Taku Miyakawa
 
Kink: invokedynamic on a prototype-based language
Kink: invokedynamic on a prototype-based languageKink: invokedynamic on a prototype-based language
Kink: invokedynamic on a prototype-based languageTaku Miyakawa
 
Java 7 invokedynamic の概要
Java 7 invokedynamic の概要Java 7 invokedynamic の概要
Java 7 invokedynamic の概要Taku Miyakawa
 
Java オブジェクトの内部構造
Java オブジェクトの内部構造Java オブジェクトの内部構造
Java オブジェクトの内部構造Taku Miyakawa
 
Kink: developing a programming language on the JVM
Kink: developing a programming language on the JVMKink: developing a programming language on the JVM
Kink: developing a programming language on the JVMTaku Miyakawa
 

Más de Taku Miyakawa (18)

Matrix Multiplication in Strassen Algorithm
Matrix Multiplication in Strassen AlgorithmMatrix Multiplication in Strassen Algorithm
Matrix Multiplication in Strassen Algorithm
 
Javaのログ出力: 道具と考え方
Javaのログ出力: 道具と考え方Javaのログ出力: 道具と考え方
Javaのログ出力: 道具と考え方
 
擬似乱数生成器の評価
擬似乱数生成器の評価擬似乱数生成器の評価
擬似乱数生成器の評価
 
コルーチンの実装について
コルーチンの実装についてコルーチンの実装について
コルーチンの実装について
 
言語設計者が意味論を書くときに考えていたこと
言語設計者が意味論を書くときに考えていたこと言語設計者が意味論を書くときに考えていたこと
言語設計者が意味論を書くときに考えていたこと
 
金勘定のためのBigDecimalそしてMoney and Currency API
金勘定のためのBigDecimalそしてMoney and Currency API金勘定のためのBigDecimalそしてMoney and Currency API
金勘定のためのBigDecimalそしてMoney and Currency API
 
Quasar: Actor Model and Light Weight Threads on Java
Quasar: Actor Model and Light Weight Threads on JavaQuasar: Actor Model and Light Weight Threads on Java
Quasar: Actor Model and Light Weight Threads on Java
 
Kink の宣伝
Kink の宣伝Kink の宣伝
Kink の宣伝
 
ラムダと invokedynamic の蜜月
ラムダと invokedynamic の蜜月ラムダと invokedynamic の蜜月
ラムダと invokedynamic の蜜月
 
Java Quine Golf
Java Quine GolfJava Quine Golf
Java Quine Golf
 
Summary of "Hacking", 0x351-0x354
Summary of "Hacking", 0x351-0x354Summary of "Hacking", 0x351-0x354
Summary of "Hacking", 0x351-0x354
 
Processing LTSV by Apache Pig
Processing LTSV by Apache PigProcessing LTSV by Apache Pig
Processing LTSV by Apache Pig
 
Kink: プロトタイプベースの俺々 JVM 言語
Kink: プロトタイプベースの俺々 JVM 言語Kink: プロトタイプベースの俺々 JVM 言語
Kink: プロトタイプベースの俺々 JVM 言語
 
Kink: invokedynamic on a prototype-based language
Kink: invokedynamic on a prototype-based languageKink: invokedynamic on a prototype-based language
Kink: invokedynamic on a prototype-based language
 
Java 7 invokedynamic の概要
Java 7 invokedynamic の概要Java 7 invokedynamic の概要
Java 7 invokedynamic の概要
 
Java オブジェクトの内部構造
Java オブジェクトの内部構造Java オブジェクトの内部構造
Java オブジェクトの内部構造
 
Hadoop jobbuilder
Hadoop jobbuilderHadoop jobbuilder
Hadoop jobbuilder
 
Kink: developing a programming language on the JVM
Kink: developing a programming language on the JVMKink: developing a programming language on the JVM
Kink: developing a programming language on the JVM
 

Último

Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)Hiroki Ichikura
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A surveyToru Tamaki
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...Toru Tamaki
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdftaisei2219
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNetToru Tamaki
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Danieldanielhu54
 

Último (10)

Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
 

Java SE 9の紹介: モジュール・システムを中心に