SlideShare a Scribd company logo
1 of 73
Download to read offline
#jdt_jshell Question: https://sli.do/
Introduction to JShell:
the Java REPL Tool
吉田 真也(@bitter_fox, @shinyafox)
OpenJDK Committer(JDK9, Kulla)
立命館大学 大学院 情報理工学研究科
#jdt_jshell
#jdt_jshell Question: https://sli.do/
#jdt_jshell
Sli.do(質問)
http://sli.do/
#jdt_jshell
#jdt_jshell Question: https://sli.do/
アジェンダ
●
Introduction to JShell
●
Inside of JShell
●
Integration of JShell
#jdt_jshell Question: https://sli.do/
jshell> Introduction to JShell
...> Overview
#jdt_jshell Question: https://sli.do/
API,構文
挙動確認
プロトタイプ
開発
プレゼン
教育
#jdt_jshell Question: https://sli.do/
API,構文
挙動確認
プロトタイプ
開発
プレゼン
教育
#jdt_jshell Question: https://sli.do/
API,構文
挙動確認
プロトタイプ
開発
プレゼン
教育ゴチャゴチャ!
Class,main
邪魔
コンパイル実行
面倒
#jdt_jshell Question: https://sli.do/
#jdt_jshell Question: https://sli.do/
Javaプログラムを
実行できる
ウェブサービス
#jdt_jshell Question: https://sli.do/
新バージョンの
Java
手元の
ライブラリ
Maven依存 コード補完
#jdt_jshell Question: https://sli.do/
新バージョンの
Java
手元の
ライブラリ
Maven依存 コード補完
使えない
#jdt_jshell Question: https://sli.do/
API,構文
挙動確認
プロトタイプ
開発
プレゼン
教育
#jdt_jshell Question: https://sli.do/
他の環境では?
●
Read-Eval-Print Loop(REPL)ツール
–Python, Ruby, Haskell, Scala, Groovy, Clojure, etc…
–各言語のプログラムの一部を入力
–その場で実行し,結果を出力
●
教育分野ではREPLツールがある環境が人気
–REPLがないために,Javaの人気低下
API,構文
挙動確認
プロトタイプ
開発
プレゼン
教育
#jdt_jshell Question: https://sli.do/
JShell
●
JavaのREPLツール
–Javaコードを逐次実行できる
●
JDK9 EA is available
–http://jdk.java.net/9/
–注:Win, Macでは,環境が壊れる可能性
–2017/07/27 General Availability???
API,構文
挙動確認
プロトタイプ
開発
プレゼン
教育
#jdt_jshell Question: https://sli.do/
例(Demo)
jshell> int k = 14
k ==> 14
jshell> long fibo(int n) {
...> return n <= 1 ? n : fibo(n-1)+fibo(n-2);
...> }
| 次を作成しました: メソッド fibo(int)
jshell> fibo(3)
$3 ==> 2
jshell> fibo(k)
$4 ==> 377
#jdt_jshell Question: https://sli.do/
jshell> Introduction to JShell
...> Snippets
#jdt_jshell Question: https://sli.do/
Javaコード
Import宣言
Class/Interface/Enum/Annotation宣言
フィールド宣言
メソッド宣言
ブロック
文
式
Package宣言
#jdt_jshell Question: https://sli.do/
JShellで実行できるJavaコード
Import宣言
Class/Interface/Enum/Annotation宣言
フィールド宣言
メソッド宣言
ブロック
文(変数宣言はフィールド宣言)
式
Package宣言
#jdt_jshell Question: https://sli.do/
フィールド宣言(変数宣言)/式
jshell> int MAX;
MAX ==> 0
●フィールド宣言なので初期値0
jshell> int MAX = 300
MAX ==> 300
●
セミコロンの省略が可能
jshell> MAX / 2
$1 ==> 150
●
式の結果は一時変数$nに
#jdt_jshell Question: https://sli.do/
Import宣言
jshell> import java.time.*;
jshell> import java.nio.LocalDate
#jdt_jshell Question: https://sli.do/
Class/Enum/Interface/Anno宣言
jshell> class Student {
...> int age;
...> String name;
...> }
| created class Student
jshell> final class MyUtil {}
| 警告:
| 修飾子'final' は、トップ・レベル宣言で使用できません。無視されます
| final class MyUtil {}
| ^---^
| 次を作成しました: クラス MyUtil
●
一部の修飾子(public, finalなど)は無視される
#jdt_jshell Question: https://sli.do/
メソッド宣言
jshell> int f(int n) {return n*2;}
| created method f(int)
jshell> f(100)
$2 ==> 200
●
一部の修飾子(public, finalなど)は無視される
#jdt_jshell Question: https://sli.do/
宣言の更新
メソッドやクラスの定義は後から変えられる
jshell> int f(int n) {return n*2;}
| created method f(int)
jshell> f(100)
$2 ==> 200
jshell> int f(int n) {return n*n;}
| modified method f(int)
jshell> f(100)
f(100)
$4 ==> 10000
#jdt_jshell Question: https://sli.do/
前方参照
●
宣言前に参照可能
jshell> class Professor {
...> List<Student> myStudents;
...> }
| 次を作成しました: クラス Professor。しかし、 class Studentが宣言されるまで、参照
できません
jshell> class Student {
...> Professor myProf;
...> }
| 次を作成しました: クラス Student
jshell> new Professor() ; new Student()
$10 ==> Professor@e45f292
$11 ==> Student@31a5c39e
Professor
myStudents
Student
myProf
#jdt_jshell Question: https://sli.do/
Java9LangFeature(デモ)
●
識別子_はコンパイルエラー
●
外部の変数をtry-w-resの対象に
AutoCloseable ac = …;
try (ac) {…}
●
匿名クラスでダイアモンド演算子
list = new ArrayList<>() {{add(...);}}
●
@SafeVarargs on private methods
●
private interface method
#jdt_jshell Question: https://sli.do/
jshell> Introduction to JShell
...> Commands & Startup
#jdt_jshell Question: https://sli.do/
JShellのコマンド
●
/で始まる
●
履歴/スニペットの表示/編集/保存
●
設定の表示/変更
●
スニペットの実行
●
一意に定まれば,先頭数文字でOK
–/help → he
#jdt_jshell Question: https://sli.do/
JShellのコマンド
履歴/スニペットの表示/編集/保存
●
/vars, /methods, /types, /imports
●
/list
●
/history
●
/edit
●
/drop
●
/save
スニペットの実行
●
/open
●
/!
●
/<id>
●
/-<n>
その他
●
/help
●
/?
●
/exit
設定の表示/変更
●
/env
●
/reset
●
/reload
●
/set
#jdt_jshell Question: https://sli.do/
JShellのコマンド
履歴/スニペットの表示/編集/保存
●
/vars, /methods, /types, /imports
●
/list
●
/history
●
/edit
●
/drop
●
/save
スニペットの実行
●
/open
●
/!
●
/<id>
●
/-<n>
その他
●
/help
●
/?
●
/exit
設定の表示/変更
●
/env
●
/reset
●
/reload
●
/set
#jdt_jshell Question: https://sli.do/
JShellのコマンド:/help
jshell> /help
| Java言語の式、文または宣言を入力します。
| または、次のコマンドのいずれかを入力します:
| /list [<name or id>|-all|-start]
| 入力したソースをリストします
(...)
jshell> /help /list
| /list
| スニペットIDが付くスニペットのソースを表示します。
|
| /list
| 入力した、または/openで読み取ったコードの現在アクティブなスニペットをリストします
| /list -start
| 自動的に評価された起動スニペットをリストします
| /list -all
| 失敗、オーバーライド済、削除済および起動を含むすべてのスニペットをリストします
| /list <name>
| 指定した名前のスニペットをリストします(アクティブなスニペットのプリファレンス)
| /list <id>
| 指定したスニペットIDのスニペットをリストします
#jdt_jshell Question: https://sli.do/
JShellのコマンド:/list
●
入力したスニペットを表示
–<id> : <snippet>
jshell> /list -all
s1 : import java.io.*;
s2 : import java.math.*;
s3 : import java.net.*;
s4 : import java.nio.file.*;
s5 : import java.util.*;
s6 : import java.util.concurrent.*;
s7 : import java.util.function.*;
s8 : import java.util.prefs.*;
s9 : import java.util.regex.*;
s10 : import java.util.stream.*;
1 : int n = 100;
2 : System.out.println(n)
e1 : this is error
#jdt_jshell Question: https://sli.do/
JShellのコマンド:/list
●
入力したスニペットを表示
–<id> : <snippet>
jshell> /list -all
s1 : import java.io.*;
s2 : import java.math.*;
s3 : import java.net.*;
s4 : import java.nio.file.*;
s5 : import java.util.*;
s6 : import java.util.concurrent.*;
s7 : import java.util.function.*;
s8 : import java.util.prefs.*;
s9 : import java.util.regex.*;
s10 : import java.util.stream.*;
1 : int n = 100;
2 : System.out.println(n)
e1 : this is error
Startup
Error
#jdt_jshell Question: https://sli.do/
Startup
●
最初に実行されるプログラム
–設定可能
–自分なりに改造すると捗る
●
プリセット
–DEFAULT(デフォルト)
●
主なパッケージのインポート
–PRINTING
●
出力関数(printlnなど)の定義
–JAVASE
●
Java SEのパッケージをすべてインポート
●
awtのせいでListがFQCNでしか使えなくなるので辛い
#jdt_jshell Question: https://sli.do/
JShellのコマンド:/set
●
設定変更
/set <kind> [args]
●
<kind>
editor /editで用いるエディタの設定(emacsにすると良い)
start Startupの設定
feedback
mode
prompt
truncation
format
出力に関する設定
#jdt_jshell Question: https://sli.do/
JShellのコマンド:/set
●
設定変更
/set <kind> [args]
●
<kind>
editor /editで用いるエディタの設定(emacsにすると良い)
start Startupの設定
feedback
mode
prompt
truncation
format
出力に関する設定
#jdt_jshell Question: https://sli.do/
JShellのコマンド:/set
/set start <file>…
/set start ~/file1.jsh
–file1.jshが起動時に実行
/set start DEFAULT ~/file1.jsh
–プリセット(DEFAULT, PRINTING, JAVASE)も指定可能
–DEFAULT, file1.jshの順で起動時に実行
●
反映させるには/reset, /reload
●
jshellを終了させると,元の設定に戻る
–永続化には永続化オプション(-retain)が必要
#jdt_jshell Question: https://sli.do/
JShellのコマンド:/set -retain
●
設定の永続化
/set <kind> -retain [args]
/set start -retain file1.jsh
/set start -retain DEFAULT file1.jsh
#jdt_jshell Question: https://sli.do/
jshell> Introduction to JShell
...> Options & Library
#jdt_jshell Question: https://sli.do/
実行時オプション
●
起動時の設定
--class-path <path>
--module-path <path>
--add-modules <module>(,<module>)*
--startup <file>
--no-startup
--feedback <mode>
-s, -q, -v 出力モードの指定(非常に簡潔,簡潔,詳細)
-J<flag> 実行時システムオプション
-R<flag> リモート実行時システムオプション
-C<flag> コンパイラオプション
--help, -X ヘルプの表示(-Xは非標準オプションヘルプ)
--version
#jdt_jshell Question: https://sli.do/
実行時オプション
●
起動時の設定
--class-path <path>
--module-path <path>
--add-modules <module>(,<module>)*
--startup <file>
--no-startup
--feedback <mode>
-s, -q, -v 出力モードの指定(非常に簡潔,簡潔,詳細)
-J<flag> 実行時システムオプション
-R<flag> リモート実行時システムオプション
-C<flag> コンパイラオプション
--help, -X ヘルプの表示(-Xは非標準オプションヘルプ)
--version
#jdt_jshell Question: https://sli.do/
外部ライブラリ
●--class-path(-c)か--module-path(-m)
–フォーマットは他ツールと同様
–-mの場合,--add-modulesで利用するモジュールも指定
$ jshell
> -c=~/.m2/repository/com/google/guava/
> guava/19.0/guava-19.0.jar
jshell> import com.google.common.base.Strings
jshell> Strings.commonPrefix("java", "jshell")
$3 ==> "j"
#jdt_jshell Question: https://sli.do/
jshell> Introduction to JShell
...> Completion & Documentation
#jdt_jshell Question: https://sli.do/
補完機能
●
コード補完/シグネチャ/Javadoc表示
–Tab
●
import補完
–Shift-Tab i
●
変数定義の補完
–Shift-Tab v
#jdt_jshell Question: https://sli.do/
コード補完/シグネチャ/Javadoc表示
jshell> IntStream.range([Tab]
n number
Signatures:
IntStream IntStream.range(int startInclusive, int endExclusive)
<press tab again to see documentation>
jshell> IntStream.range([Tab]
IntStream IntStream.range(int startInclusive, int endExclusive)
Returns a sequential ordered IntStream from startInclusive (inclusive) to endExclusive
(exclusive) by an incremental step of 1 .
Parameters:
startInclusive - the (inclusive) initial value
endExclusive - the exclusive upper bound
Returns:
a sequential IntStream for the range of int elements
<press tab again to see all possible completions; total possible completions: 546>
jshell> IntStream.range([Tab]
AbstractCollection AbstractExecutorService
AbstractList AbstractMap AbstractMethodError
候補とシグネチャ
Javadoc
すべての候補
#jdt_jshell Question: https://sli.do/
デモ
●Stream.o([Tab]
–Stream.of
●
Stream.of([Tab]
●Stream.of(Color[Shift+Tab i]
–Import java.awt.Color
●
Stream.of(Color.GR[Tab]
–Choose GREEN
●
Stream.of(Color.GREEN).collect(Collectors.toList())[Shift+Tab v]
–List<Color> | =...
#jdt_jshell Question: https://sli.do/
jshell> Inside of JShell
...> JShell API
#jdt_jshell Question: https://sli.do/
JShellの仕組み
JShell Tooljline
int a = 0
a ==> 0
JShell Core Impl
JShellAPI
Is Complete?
Completion
Documentation
Eval & Result
Jdi
ExecutionControl
Compiler(javac)
Remote
ExecutionControl
JVM
int a = 0
Compiler API
SPI
JDPA
JDI
#jdt_jshell Question: https://sli.do/
snippet()
JShell API
JShell
SourceCode
Analysis
SnippetEvent
XxxSnippet
eval(),drop()
sourceC
odeAnalysis()
state
#analyzeCompletion()
#analyzeType()
#completeSuggesions()
#documentation()
#listQualifiedNames()
#jdt_jshell Question: https://sli.do/
デモ
JShellAPIをJShellから叩く
JShell js = JShell.create()
js.eval(“int n = 0;”)
#jdt_jshell Question: https://sli.do/
Inside eval()
int a = 0 Snippet.Kindを決定
Snippetを作成
ラップしたJavaコード
クラスファイル
依存性を検索
再コンパイル
Exec.Controlで実行
クラスをロード
実行
SnippetEventを作成
ExecutionControl
a ==> 0
#jdt_jshell Question: https://sli.do/
ヒミツのコマンド:/debug(デモ)
jshell> /debug
| Debugging on
jshell> int n=0
Compiling: int n = 0;
Kind: VARIABLE -- int n=0
compileAndLoad [Unit(n)]
++setCompilationInfo() Snippet:VariableKey(n)#1-
int n=0;
package REPL;
class $JShell$1 {
public static int n;
public static Object do_it$() throws Throwable {
int n_ = 0;
return n = n_;
}
}
-- diags: []
setStatus() Snippet:VariableKey(n)#25-int n = 0; -
status: VALID
compileAndLoad ins = [Unit(n)] -- legit = [Unit(n)]
Compiler generating class REPL.$JShell$25
compileAndLoad [Unit(n)] -- deps: [] success: true
recordCompilation: Snippet:VariableKey(n)#25-int
n = 0; -- status VALID, unresolved []
n ==> 0
#jdt_jshell Question: https://sli.do/
ヒミツのコマンド:/debug(デモ)
jshell> /debug
| Debugging on
jshell> int n=0
Compiling: int n = 0;
Kind: VARIABLE -- int n=0
compileAndLoad [Unit(n)]
++setCompilationInfo() Snippet:VariableKey(n)#1-
int n=0;
package REPL;
class $JShell$1 {
public static int n;
public static Object do_it$() throws Throwable {
int n_ = 0;
return n = n_;
}
}
-- diags: []
setStatus() Snippet:VariableKey(n)#25-int n = 0; -
status: VALID
compileAndLoad ins = [Unit(n)] -- legit = [Unit(n)]
Compiler generating class REPL.$JShell$25
compileAndLoad [Unit(n)] -- deps: [] success: true
recordCompilation: Snippet:VariableKey(n)#25-int
n = 0; -- status VALID, unresolved []
n ==> 0
入力を解析し,
種類を判別
対応する
Snippet作成
Snippet
に応じた
Wrap
コンパイル
依存性解析
#jdt_jshell Question: https://sli.do/
jshell> Integration of JShell
#jdt_jshell Question: https://sli.do/
JavaFX on JShell
●
JavaFXをJShellから使いたいけど・・・
jshell> new javafx.stage.Stage()
| java.lang.ExceptionInInitializerError thrown
| at Window.<init> (Window.java:1380)
| at Stage.<init> (Stage.java:239)
| at Stage.<init> (Stage.java:227)
| at (#1:1)
●
JavaFXのスレッドから呼び出さないといけない!
#jdt_jshell Question: https://sli.do/
JShellの仕組み
JShell Core Impl
Jdi
ExecutionControl
Compiler(javac)
Remote
ExecutionControl
JVM
new Stage()
Compiler API
SPI
JDPA
JDI
#jdt_jshell Question: https://sli.do/
JavaFXSupportsForJShell
●
JavaFXを動かせるJShellプラグイン
–https://github.com/bitterfox/JavaFXSupportsForJShell
JShell Core Impl
Jdi
ExecutionControl
Compiler(javac)
JavaFXRemote
ExecutionControl
JVM
Platform.runLater
Compiler API
SPI
JDPA
JDI
new Stage()
#jdt_jshell Question: https://sli.do/
Mavenの依存ライブラリを使う
$ jshell -c=
#jdt_jshell Question: https://sli.do/
JShell with Maven and dependencies
●
https://github.com/bitterfox/jshell-maven-plugin
–プロジェクトのクラスと,依存するjarを含めてjshellを実行
●
pom.xml
<build>
<plugins>
<plugin>
<groupId>net.java.openjdk.shinyafox</groupId>
<artifactId>jshell-maven-plugin</artifactId>
<version>1.0-SNAPSHOT</version>
</plugin>
</plugins>
</build>
●
$mvn jshell:compile
#jdt_jshell Question: https://sli.do/
JShell with Gradle and dependencies
●
https://github.com/bitterfox/jshell-gradle-plugin
–プロジェクトのクラスと,依存するjarを含めてjshellを実行
●
build.gradle
plugins {
id "net.java.openjdk.shinyafox.jshell.gradle.plugin" version "1.0.3"
}
●
$ ./gradlew --no-daemon --console plain jshell
●
注:gradleとJDK9の相性が悪くて動かない場合あり
#jdt_jshell Question: https://sli.do/
まとめ
●
JShellで快適Javaプログラミング
●
JShellはOSS&拡張可能
●
Please Try JShell & Give Me Feedback!
–http://jdk.java.net/9/
#jdt_jshell Question: https://sli.do/
Q&A
質問はsli.doの#jdt_jshellで頂いたました
原文のママ掲載しております
皆さん,多数のご質問ありがとうございました
#jdt_jshell Question: https://sli.do/
●
jshellはスクリプトファイルにできるのかな?
–できます.
–jshell hoge.jsh
●
ファイルの最後に/exitを入れると綺麗に動く
–jshell内では/open hoge.jsh
–詳しくはヘルプをご参照ください.
●
「教育ツール」「開発時の便利ツール」以外の用途は
ありますか?
–jshellをコンソールアプリケーションのベースに利用すると
いうユースケースがありました
●
https://github.com/YaSuenag/heapstats-shell
–この他にも皆さんにご利用いただく中で面白い使い方が
出てくるかもしれません
その際にはぜひ共有していただけると幸いです
#jdt_jshell Question: https://sli.do/
●
jshell内でThreadを生成して実行したらどうなる?
–普通に実行できます
–thread.start()を実行後すぐにプロンプトが帰ってきます
–スレッド内でSystem.outへ出力している場合は,出力メソッドが
よばれたタイミングでコンソールに出力されます
–jshell> new Thread(() -> {
...> try {
...> Thread.sleep(1000);
...> System.out.println("hoge");
...> } catch (Exception e) {}
...> }).start()
–jshell> hoge
#jdt_jshell Question: https://sli.do/
●
いつも使うようなライブラリ(commonsなど)を常にパスに通しておくよう
な機能はありますか?
–プレゼンでは,「綺麗にはできない」と回答しましたが,比較的綺麗にできました
–/envコマンドでのパス指定をスタートアップに含めていただくと綺麗に行なえま
す
–start.jsh
/env -class-path --class-path
/home/bitter_fox/dev/jdt2017/keynote/target/classes
–$jshell -startup start.jsh
| JShellへようこそ -- バージョン9-ea
–| 概要については、次を入力してください: /help intro
–
–jshell> import keynote.*
–
–jshell>
#jdt_jshell Question: https://sli.do/
●
JShellの仕組みで、RemoteExectuionControlで別の
JVMを呼び出す理由について教えてください。
–別のJVMでユーザコードを実行することによって,JShell
APIを実行するJVMへのユーザコードの影響を最小限にす
るためです.
–例えば,同一のJVMでユーザコードを実行すると,
「System.exit(0)」がよばれると,JShell APIを呼び出すJVM
まで終了してしまいます
●
JShellと関係ないですが、シェルを実行しているアプリ
はなんでしょうか?(画面上からビロっとでてくるやつ)
–ウィンドウマネージャにXMonadを使用しています
–そのカスタマイズのうちの機能の1つです
#jdt_jshell Question: https://sli.do/
●
thisは使えますか? 使えたら、なにをさしますか?
–使えません
●
JShellの仕様策定や開発過程で壁(難しかったこ
と)などあったのでしょうか?
–発表時に回答から漏れてしまい申し訳ありません
–Project Leaderではないため,なかなか詳細には答えに
くいですが,
前方参照や宣言の更新,Javadoc機能などはかなり実装
が辛かったように見えました
–また,補完機能のためのjarファイル解析によって起動に
時間がかかる問題の解決も難しかったように見えました
#jdt_jshell Question: https://sli.do/
●
何度もメソッドを書き直した結果の、「最新」のメソッド定義を見た
いときも /list ですか?
–はい./listで確認いただけます.
–/listの後に確認したいメソッドの名前を指定することでその名前の定義だ
けを確認できます
–jshell> /list m
3 : void m() {int n = 100;}
jshell> void m() {int n = 200;}
| 次を変更しました: メソッド m()
jshell> /list m
4 : void m() {int n = 200;}
–最新のメソッド定義の「シグネチャ」を確認したい場合は/methodを利用く
ださい
–jshell> /method
–| void m()
#jdt_jshell Question: https://sli.do/
●
セミコロンが省略できない場面は?
–;が入力の末尾に予期される場合のみ利用できます
–以下のような場面では省略できません
–クラス宣言,メソッド宣言,ブロック文内
jshell> class C{
...> int n = 0;
...> void m() {
...> int i = 0;
...> if (i == 0) {
...> System.out.println(i);
...> }
...> }
...> }
–必要の式,文を1行で書く場合の末尾以外の;
–jshell> int n = 0 ; System.out.println(n)
–n ==> 0
–0
#jdt_jshell Question: https://sli.do/
●
教育、プロト開発用ではなく、製品版での利用は想定されていないので
しょうか
–想定されていません
–公式にはお勧めされませんが,自己責任の元で利用いただけるかと思います
–より詳細にはJDKベンダにお問い合わせいただくのが確実です
●
groovyConsoleでも限りなくJavaに近い形で実行できるのですが、Java
で新たにjConsoleが追加されて差分やメリットが今のところ見えてないの
です。どの辺がgroovyConsoleと比べてメリットなのでしょうか?
–jshellとの比較とのことですので,groovysh
–メリットとしては「Java」言語での教育の場面でご利用いただけたり,
より強力な補完機能がご利用いただけます
–(と言っても僕はあまりgroovyshを使いこなした訳ではないので,
より詳細にはわからないです)
–どちらにも一長一短あるかと思いますので,ぜひjshellも試してみてください
–そして,その結果を共有して頂けると助かります
#jdt_jshell Question: https://sli.do/
●
一度importしたクラスを後でimportから外すことはできますか。
–/dropコマンドにて行なえます
–例は次の質問で
●
java.awtをimportから外すことも頑張れば可能に?
jshell> List<String> strings
| エラー:
| Listの参照はあいまいです
| java.utilのインタフェース java.util.Listとjava.awt
のクラスjava.awt.Listの両方が一致します
| List<String> strings;
| ^--^
jshell> /drop s2
●s2はimport java.awt.*のid
jshell> List<String> strings
strings ==> null
#jdt_jshell Question: https://sli.do/
●
jshellのスクリプトファイルをステップ実行できますか?
–残念ながら行えません
–後日機会があればフィードバックとして開発者MLで共有しようと思います
●
jshell をファイルから読み込む時にargsを使用することはできますか?
–mainメソッドのargsでしょうか?
–ファイル読み込み時にはエントリーポイント(public static void main(String… args))があってもそれを実行しません
–そのためファイル読み込み時にコマンドラインオプションやjshellオプションからargsを指定することはできません
●
class Professor{ String name; Student student; }
class Student{ String name; }
Professor professor = new Professor()
professor.name = "ゆうぽん"
これも動きます
jshell> class Professor{ String name; Student student; }
| 次を作成しました: クラス Professor。しかし、 class Studentが宣言されるまで、参照できません
jshell> class Student{ String name; }
| 次を作成しました: クラス Student
jshell>
jshell> Professor professor = new Professor()
professor ==> Professor@2f686d1f
jshell> professor.name = "ゆうぽん"
$1 ==> "ゆうぽん"
#jdt_jshell Question: https://sli.do/
JShell’s developped by
●
Engineering
–Robert Field
–Jan Lahoda
●
OpenJDK Committers
–Shinya Yoshida
–YOU?
●
Advisors/Cheerleaders/Reviewers
–Brian Goets
–Maurizio Cimadamore
–Joe Darcy
–Paul Sandoz
–Jonathan Gibbions
–Michel Trudeau
–Sundararajan Athijegannathan
–Remi Forax
–Arun Gupta
–Mani sarkar
–Daniel Daugherty
#jdt_jshell Question: https://sli.do/
Thank you for your attention!

More Related Content

What's hot

Javaチョットデキルへの道〜JavaコアSDKに見る真似したいコード10選〜
Javaチョットデキルへの道〜JavaコアSDKに見る真似したいコード10選〜Javaチョットデキルへの道〜JavaコアSDKに見る真似したいコード10選〜
Javaチョットデキルへの道〜JavaコアSDKに見る真似したいコード10選〜JustSystems Corporation
 
Head toward Java 16 (Night Seminar Edition)
Head toward Java 16 (Night Seminar Edition)Head toward Java 16 (Night Seminar Edition)
Head toward Java 16 (Night Seminar Edition)Yuji Kubota
 
Java8 コーディングベストプラクティス and NetBeansのメモリログから...
Java8 コーディングベストプラクティス and NetBeansのメモリログから...Java8 コーディングベストプラクティス and NetBeansのメモリログから...
Java8 コーディングベストプラクティス and NetBeansのメモリログから...なおき きしだ
 
Java 9で進化する診断ツール
Java 9で進化する診断ツールJava 9で進化する診断ツール
Java 9で進化する診断ツールYasumasa Suenaga
 
Java SE 9の紹介: モジュール・システムを中心に
Java SE 9の紹介: モジュール・システムを中心にJava SE 9の紹介: モジュール・システムを中心に
Java SE 9の紹介: モジュール・システムを中心にTaku Miyakawa
 
楽して JVM を学びたい #jjug
楽して JVM を学びたい #jjug楽して JVM を学びたい #jjug
楽して JVM を学びたい #jjugYuji Kubota
 
Advanced database monitoring in modern java
Advanced database monitoring in modern javaAdvanced database monitoring in modern java
Advanced database monitoring in modern javaChihiro Ito
 
Java開発の強力な相棒として今すぐ使えるGroovy
Java開発の強力な相棒として今すぐ使えるGroovyJava開発の強力な相棒として今すぐ使えるGroovy
Java開発の強力な相棒として今すぐ使えるGroovyYasuharu Nakano
 
ステップ・バイ・ステップで学ぶラムダ式・Stream api入門 #jjug ccc #ccc h2
ステップ・バイ・ステップで学ぶラムダ式・Stream api入門 #jjug ccc #ccc h2ステップ・バイ・ステップで学ぶラムダ式・Stream api入門 #jjug ccc #ccc h2
ステップ・バイ・ステップで学ぶラムダ式・Stream api入門 #jjug ccc #ccc h2Masatoshi Tada
 
Java EE パフォーマンスTips #glassfish_jp
Java EE パフォーマンスTips #glassfish_jpJava EE パフォーマンスTips #glassfish_jp
Java EE パフォーマンスTips #glassfish_jpNorito Agetsuma
 
jcmd をさわってみよう
jcmd をさわってみようjcmd をさわってみよう
jcmd をさわってみようTsunenaga Hanyuda
 
Javaトラブルに備えよう #jjug_ccc #ccc_h2
Javaトラブルに備えよう #jjug_ccc #ccc_h2Javaトラブルに備えよう #jjug_ccc #ccc_h2
Javaトラブルに備えよう #jjug_ccc #ccc_h2Norito Agetsuma
 
JJUG CCC 2017 Fall オレオレJVM言語を作ってみる
JJUG CCC 2017 Fall オレオレJVM言語を作ってみるJJUG CCC 2017 Fall オレオレJVM言語を作ってみる
JJUG CCC 2017 Fall オレオレJVM言語を作ってみるKoichi Sakata
 
Java EEハンズオン資料 JJUG CCC 2015 Fall
Java EEハンズオン資料 JJUG CCC 2015 FallJava EEハンズオン資料 JJUG CCC 2015 Fall
Java EEハンズオン資料 JJUG CCC 2015 FallMasatoshi Tada
 
思ったほど怖くない! Haskell on JVM 超入門 #jjug_ccc #ccc_l8
思ったほど怖くない! Haskell on JVM 超入門 #jjug_ccc #ccc_l8思ったほど怖くない! Haskell on JVM 超入門 #jjug_ccc #ccc_l8
思ったほど怖くない! Haskell on JVM 超入門 #jjug_ccc #ccc_l8y_taka_23
 
Javaアプリケーションサーバ 構築・運用の勘所
Javaアプリケーションサーバ 構築・運用の勘所Javaアプリケーションサーバ 構築・運用の勘所
Javaアプリケーションサーバ 構築・運用の勘所Takahiro YAMADA
 
HeapStatsのデモ (Java The Night)
HeapStatsのデモ (Java The Night)HeapStatsのデモ (Java The Night)
HeapStatsのデモ (Java The Night)Yasumasa Suenaga
 

What's hot (19)

Javaチョットデキルへの道〜JavaコアSDKに見る真似したいコード10選〜
Javaチョットデキルへの道〜JavaコアSDKに見る真似したいコード10選〜Javaチョットデキルへの道〜JavaコアSDKに見る真似したいコード10選〜
Javaチョットデキルへの道〜JavaコアSDKに見る真似したいコード10選〜
 
Head toward Java 16 (Night Seminar Edition)
Head toward Java 16 (Night Seminar Edition)Head toward Java 16 (Night Seminar Edition)
Head toward Java 16 (Night Seminar Edition)
 
Java8 コーディングベストプラクティス and NetBeansのメモリログから...
Java8 コーディングベストプラクティス and NetBeansのメモリログから...Java8 コーディングベストプラクティス and NetBeansのメモリログから...
Java8 コーディングベストプラクティス and NetBeansのメモリログから...
 
Java 9で進化する診断ツール
Java 9で進化する診断ツールJava 9で進化する診断ツール
Java 9で進化する診断ツール
 
Java SE 9の紹介: モジュール・システムを中心に
Java SE 9の紹介: モジュール・システムを中心にJava SE 9の紹介: モジュール・システムを中心に
Java SE 9の紹介: モジュール・システムを中心に
 
楽して JVM を学びたい #jjug
楽して JVM を学びたい #jjug楽して JVM を学びたい #jjug
楽して JVM を学びたい #jjug
 
Advanced database monitoring in modern java
Advanced database monitoring in modern javaAdvanced database monitoring in modern java
Advanced database monitoring in modern java
 
Java開発の強力な相棒として今すぐ使えるGroovy
Java開発の強力な相棒として今すぐ使えるGroovyJava開発の強力な相棒として今すぐ使えるGroovy
Java開発の強力な相棒として今すぐ使えるGroovy
 
ステップ・バイ・ステップで学ぶラムダ式・Stream api入門 #jjug ccc #ccc h2
ステップ・バイ・ステップで学ぶラムダ式・Stream api入門 #jjug ccc #ccc h2ステップ・バイ・ステップで学ぶラムダ式・Stream api入門 #jjug ccc #ccc h2
ステップ・バイ・ステップで学ぶラムダ式・Stream api入門 #jjug ccc #ccc h2
 
Java EE パフォーマンスTips #glassfish_jp
Java EE パフォーマンスTips #glassfish_jpJava EE パフォーマンスTips #glassfish_jp
Java EE パフォーマンスTips #glassfish_jp
 
jcmd をさわってみよう
jcmd をさわってみようjcmd をさわってみよう
jcmd をさわってみよう
 
Introduction to Spock
Introduction to SpockIntroduction to Spock
Introduction to Spock
 
Javaトラブルに備えよう #jjug_ccc #ccc_h2
Javaトラブルに備えよう #jjug_ccc #ccc_h2Javaトラブルに備えよう #jjug_ccc #ccc_h2
Javaトラブルに備えよう #jjug_ccc #ccc_h2
 
JJUG CCC 2017 Fall オレオレJVM言語を作ってみる
JJUG CCC 2017 Fall オレオレJVM言語を作ってみるJJUG CCC 2017 Fall オレオレJVM言語を作ってみる
JJUG CCC 2017 Fall オレオレJVM言語を作ってみる
 
Java EEハンズオン資料 JJUG CCC 2015 Fall
Java EEハンズオン資料 JJUG CCC 2015 FallJava EEハンズオン資料 JJUG CCC 2015 Fall
Java EEハンズオン資料 JJUG CCC 2015 Fall
 
思ったほど怖くない! Haskell on JVM 超入門 #jjug_ccc #ccc_l8
思ったほど怖くない! Haskell on JVM 超入門 #jjug_ccc #ccc_l8思ったほど怖くない! Haskell on JVM 超入門 #jjug_ccc #ccc_l8
思ったほど怖くない! Haskell on JVM 超入門 #jjug_ccc #ccc_l8
 
Javaアプリケーションサーバ 構築・運用の勘所
Javaアプリケーションサーバ 構築・運用の勘所Javaアプリケーションサーバ 構築・運用の勘所
Javaアプリケーションサーバ 構築・運用の勘所
 
HeapStatsのデモ (Java The Night)
HeapStatsのデモ (Java The Night)HeapStatsのデモ (Java The Night)
HeapStatsのデモ (Java The Night)
 
Java EE8 Report
Java EE8 ReportJava EE8 Report
Java EE8 Report
 

Similar to Introduction to JShell #JavaDayTokyo #jdt_jshell

Java ee6 with scala
Java ee6 with scalaJava ee6 with scala
Java ee6 with scalaSatoshi Kubo
 
Jenkins plugin memo
Jenkins plugin memoJenkins plugin memo
Jenkins plugin memoKiyotaka Oku
 
Gradleどうでしょう
GradleどうでしょうGradleどうでしょう
GradleどうでしょうTakuma Watabiki
 
TDD勉強会キックオフ for Java
TDD勉強会キックオフ for JavaTDD勉強会キックオフ for Java
TDD勉強会キックオフ for JavaYuta Kawadai
 
React.jsでクライアントサイドなWebアプリ入門
React.jsでクライアントサイドなWebアプリ入門React.jsでクライアントサイドなWebアプリ入門
React.jsでクライアントサイドなWebアプリ入門spring_raining
 
Introduction to Continuous Test Runner MakeGood
Introduction to Continuous Test Runner MakeGoodIntroduction to Continuous Test Runner MakeGood
Introduction to Continuous Test Runner MakeGoodAtsuhiro Kubo
 
プロキシーを使ってテストを楽にする
プロキシーを使ってテストを楽にするプロキシーを使ってテストを楽にする
プロキシーを使ってテストを楽にするShunji Konishi
 
React Native GUIDE
React Native GUIDEReact Native GUIDE
React Native GUIDEdcubeio
 
TDC20111031_Groovy_Geb
TDC20111031_Groovy_GebTDC20111031_Groovy_Geb
TDC20111031_Groovy_GebNobuhiro Sue
 
Struts2を始めよう!
Struts2を始めよう!Struts2を始めよう!
Struts2を始めよう!Shinpei Ohtani
 
R5 3 type annotation
R5 3 type annotationR5 3 type annotation
R5 3 type annotationEIICHI KIMURA
 
仕事の手離れを良くする手段としての、静的検査のあるテンプレートエンジン (YATT::Lite talk at 2014 テンプレートエンジンNight)
仕事の手離れを良くする手段としての、静的検査のあるテンプレートエンジン (YATT::Lite talk at 2014 テンプレートエンジンNight)仕事の手離れを良くする手段としての、静的検査のあるテンプレートエンジン (YATT::Lite talk at 2014 テンプレートエンジンNight)
仕事の手離れを良くする手段としての、静的検査のあるテンプレートエンジン (YATT::Lite talk at 2014 テンプレートエンジンNight)Hiroaki KOBAYASHI
 
Google App Engine for Java
Google App Engine for JavaGoogle App Engine for Java
Google App Engine for JavaTakuya Tsuchida
 
3時間濃縮CakePHP2.1 in PHPカンファレンス北海道2012
3時間濃縮CakePHP2.1 in PHPカンファレンス北海道20123時間濃縮CakePHP2.1 in PHPカンファレンス北海道2012
3時間濃縮CakePHP2.1 in PHPカンファレンス北海道2012Yusuke Ando
 
関西Php勉強会のlimeの話
関西Php勉強会のlimeの話関西Php勉強会のlimeの話
関西Php勉強会のlimeの話Hisateru Tanaka
 
CakePHP 1 to 2 Migration tips 100
CakePHP 1 to 2 Migration tips 100CakePHP 1 to 2 Migration tips 100
CakePHP 1 to 2 Migration tips 100ichikaway
 
ViewModel テスト難しすぎ問題 by saiki iijima in Android Test Night #9
ViewModel テスト難しすぎ問題 by saiki iijima in Android Test Night #9ViewModel テスト難しすぎ問題 by saiki iijima in Android Test Night #9
ViewModel テスト難しすぎ問題 by saiki iijima in Android Test Night #9Saiki Iijima
 
JobSchedulerでCD(継続的デリバリ)
JobSchedulerでCD(継続的デリバリ)JobSchedulerでCD(継続的デリバリ)
JobSchedulerでCD(継続的デリバリ)OSSラボ株式会社
 

Similar to Introduction to JShell #JavaDayTokyo #jdt_jshell (20)

Java ee6 with scala
Java ee6 with scalaJava ee6 with scala
Java ee6 with scala
 
Jenkins plugin memo
Jenkins plugin memoJenkins plugin memo
Jenkins plugin memo
 
Gradleどうでしょう
GradleどうでしょうGradleどうでしょう
Gradleどうでしょう
 
TDD勉強会キックオフ for Java
TDD勉強会キックオフ for JavaTDD勉強会キックオフ for Java
TDD勉強会キックオフ for Java
 
React.jsでクライアントサイドなWebアプリ入門
React.jsでクライアントサイドなWebアプリ入門React.jsでクライアントサイドなWebアプリ入門
React.jsでクライアントサイドなWebアプリ入門
 
ScalaMatsuri 2016
ScalaMatsuri 2016ScalaMatsuri 2016
ScalaMatsuri 2016
 
scala-kaigi1-sbt
scala-kaigi1-sbtscala-kaigi1-sbt
scala-kaigi1-sbt
 
Introduction to Continuous Test Runner MakeGood
Introduction to Continuous Test Runner MakeGoodIntroduction to Continuous Test Runner MakeGood
Introduction to Continuous Test Runner MakeGood
 
プロキシーを使ってテストを楽にする
プロキシーを使ってテストを楽にするプロキシーを使ってテストを楽にする
プロキシーを使ってテストを楽にする
 
React Native GUIDE
React Native GUIDEReact Native GUIDE
React Native GUIDE
 
TDC20111031_Groovy_Geb
TDC20111031_Groovy_GebTDC20111031_Groovy_Geb
TDC20111031_Groovy_Geb
 
Struts2を始めよう!
Struts2を始めよう!Struts2を始めよう!
Struts2を始めよう!
 
R5 3 type annotation
R5 3 type annotationR5 3 type annotation
R5 3 type annotation
 
仕事の手離れを良くする手段としての、静的検査のあるテンプレートエンジン (YATT::Lite talk at 2014 テンプレートエンジンNight)
仕事の手離れを良くする手段としての、静的検査のあるテンプレートエンジン (YATT::Lite talk at 2014 テンプレートエンジンNight)仕事の手離れを良くする手段としての、静的検査のあるテンプレートエンジン (YATT::Lite talk at 2014 テンプレートエンジンNight)
仕事の手離れを良くする手段としての、静的検査のあるテンプレートエンジン (YATT::Lite talk at 2014 テンプレートエンジンNight)
 
Google App Engine for Java
Google App Engine for JavaGoogle App Engine for Java
Google App Engine for Java
 
3時間濃縮CakePHP2.1 in PHPカンファレンス北海道2012
3時間濃縮CakePHP2.1 in PHPカンファレンス北海道20123時間濃縮CakePHP2.1 in PHPカンファレンス北海道2012
3時間濃縮CakePHP2.1 in PHPカンファレンス北海道2012
 
関西Php勉強会のlimeの話
関西Php勉強会のlimeの話関西Php勉強会のlimeの話
関西Php勉強会のlimeの話
 
CakePHP 1 to 2 Migration tips 100
CakePHP 1 to 2 Migration tips 100CakePHP 1 to 2 Migration tips 100
CakePHP 1 to 2 Migration tips 100
 
ViewModel テスト難しすぎ問題 by saiki iijima in Android Test Night #9
ViewModel テスト難しすぎ問題 by saiki iijima in Android Test Night #9ViewModel テスト難しすぎ問題 by saiki iijima in Android Test Night #9
ViewModel テスト難しすぎ問題 by saiki iijima in Android Test Night #9
 
JobSchedulerでCD(継続的デリバリ)
JobSchedulerでCD(継続的デリバリ)JobSchedulerでCD(継続的デリバリ)
JobSchedulerでCD(継続的デリバリ)
 

More from bitter_fox

きつねさんと学ぶ Lambda式&StreamAPIハンズオン[関ジャバ2015/7/11] #kanjava
きつねさんと学ぶ Lambda式&StreamAPIハンズオン[関ジャバ2015/7/11] #kanjavaきつねさんと学ぶ Lambda式&StreamAPIハンズオン[関ジャバ2015/7/11] #kanjava
きつねさんと学ぶ Lambda式&StreamAPIハンズオン[関ジャバ2015/7/11] #kanjavabitter_fox
 
JavaOne2014サンフランシスコ報告会in大阪
JavaOne2014サンフランシスコ報告会in大阪JavaOne2014サンフランシスコ報告会in大阪
JavaOne2014サンフランシスコ報告会in大阪bitter_fox
 
Brand new Data Processing - StreamAPI
Brand new Data Processing - StreamAPIBrand new Data Processing - StreamAPI
Brand new Data Processing - StreamAPIbitter_fox
 
徹底解説!Project Lambdaのすべて in Fukuoka #j8fk
徹底解説!Project Lambdaのすべて in Fukuoka #j8fk徹底解説!Project Lambdaのすべて in Fukuoka #j8fk
徹底解説!Project Lambdaのすべて in Fukuoka #j8fkbitter_fox
 
徹底解説!Project Lambdaのすべて リターンズ[祝Java8Launch #jjug]
徹底解説!Project Lambdaのすべて リターンズ[祝Java8Launch #jjug]徹底解説!Project Lambdaのすべて リターンズ[祝Java8Launch #jjug]
徹底解説!Project Lambdaのすべて リターンズ[祝Java8Launch #jjug]bitter_fox
 
RCC LT 2013 Javaを日本語で書けるようにしてみた(言語処理)
RCC LT 2013 Javaを日本語で書けるようにしてみた(言語処理)RCC LT 2013 Javaを日本語で書けるようにしてみた(言語処理)
RCC LT 2013 Javaを日本語で書けるようにしてみた(言語処理)bitter_fox
 
Lt (コピー)
Lt (コピー)Lt (コピー)
Lt (コピー)bitter_fox
 
徹底解説!Project Lambdaのすべて[JJUG CCC 2013 Fall H-2]
徹底解説!Project Lambdaのすべて[JJUG CCC 2013 Fall H-2]徹底解説!Project Lambdaのすべて[JJUG CCC 2013 Fall H-2]
徹底解説!Project Lambdaのすべて[JJUG CCC 2013 Fall H-2]bitter_fox
 

More from bitter_fox (8)

きつねさんと学ぶ Lambda式&StreamAPIハンズオン[関ジャバ2015/7/11] #kanjava
きつねさんと学ぶ Lambda式&StreamAPIハンズオン[関ジャバ2015/7/11] #kanjavaきつねさんと学ぶ Lambda式&StreamAPIハンズオン[関ジャバ2015/7/11] #kanjava
きつねさんと学ぶ Lambda式&StreamAPIハンズオン[関ジャバ2015/7/11] #kanjava
 
JavaOne2014サンフランシスコ報告会in大阪
JavaOne2014サンフランシスコ報告会in大阪JavaOne2014サンフランシスコ報告会in大阪
JavaOne2014サンフランシスコ報告会in大阪
 
Brand new Data Processing - StreamAPI
Brand new Data Processing - StreamAPIBrand new Data Processing - StreamAPI
Brand new Data Processing - StreamAPI
 
徹底解説!Project Lambdaのすべて in Fukuoka #j8fk
徹底解説!Project Lambdaのすべて in Fukuoka #j8fk徹底解説!Project Lambdaのすべて in Fukuoka #j8fk
徹底解説!Project Lambdaのすべて in Fukuoka #j8fk
 
徹底解説!Project Lambdaのすべて リターンズ[祝Java8Launch #jjug]
徹底解説!Project Lambdaのすべて リターンズ[祝Java8Launch #jjug]徹底解説!Project Lambdaのすべて リターンズ[祝Java8Launch #jjug]
徹底解説!Project Lambdaのすべて リターンズ[祝Java8Launch #jjug]
 
RCC LT 2013 Javaを日本語で書けるようにしてみた(言語処理)
RCC LT 2013 Javaを日本語で書けるようにしてみた(言語処理)RCC LT 2013 Javaを日本語で書けるようにしてみた(言語処理)
RCC LT 2013 Javaを日本語で書けるようにしてみた(言語処理)
 
Lt (コピー)
Lt (コピー)Lt (コピー)
Lt (コピー)
 
徹底解説!Project Lambdaのすべて[JJUG CCC 2013 Fall H-2]
徹底解説!Project Lambdaのすべて[JJUG CCC 2013 Fall H-2]徹底解説!Project Lambdaのすべて[JJUG CCC 2013 Fall H-2]
徹底解説!Project Lambdaのすべて[JJUG CCC 2013 Fall H-2]
 

Recently uploaded

【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)Hiroki Ichikura
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 
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
 
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
 
論文紹介: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
 
論文紹介: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
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案sugiuralab
 
論文紹介: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
 

Recently uploaded (8)

【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
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
 
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」の紹介
 
論文紹介: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
 
論文紹介: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...
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
 
論文紹介: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
 

Introduction to JShell #JavaDayTokyo #jdt_jshell