Java9 JShellのいろは
OpenJDK9のうちからJava9からの機能であるJShellを弄っていて記事にしようと思っていたらJava9が正式リリースになってしまいました。せっかくなのでメモ的なものを書いておきます。本当は社内向けに作った教育用資料を貼れると良いのですが、機密文書横流しで始末書とかになったらたまらないので諦めます。
JShellはREPL(Read–eval–print loop)です。Javaは今までいちいちコンパイルして実行しないと結果が分からなかったのが、コマンド1つ打てばすぐに結果が分かるようになったわけです。
JShellを利用するには、JDK9をインストールして(JRE9の方ではありません)jdk-9\binにパスを通してjshellって打ち込めば良いです。Windowsの場合はエクスプローラからjshell.exeを実行してもよいです。
C:\Program Files\Java\jdk-9\bin>jshell.exe
JShellへようこそ -- バージョン9
概要については、次を入力してください: /help intro
とりあえず /help intro と打ち込めば、JShell の説明を出してくれます。
jshell> /help intro
intro
jshellツールを使用すると、Javaコードを実行して即座に結果を取得できます。
int x = 8などのJava定義(変数、メソッド、クラスなど)、
x + xなどのJava式またはJava文を入力したり、
インポートしたりできます。
これらのJavaコードの小さなチャンクを「スニペット」と呼びます。
また、/listなどの実行する内容を理解および制御できるjshellコマンドも
あります
コマンドのリストを参照する場合: /help
HelloWorld的なものは本当に簡単に試せます。クラスとかメソッドを途中まで打ち込んでTabキーを押すと補完が動くので楽です。1行に1命令だけ書く場合は、行末のセミコロンは不要です(あっても良い)。
jshell> System.out.print
print( printf( println(
jshell> System.out.println("Hello, JShell!!")
Hello, JShell!!
受け皿となる変数を用意せずに適当な計算をすると、勝手に型を推定してテンポラリの変数に代入してくれます。便利。
jshell> 1 + 2 + 3.14
$2 ==> 6.140000000000001jshell> /var
double $2 = 6.140000000000001
JShellのコマンドは全て / から始まります。/help を打ち込めば表示されるので、一通り試せばJShellの使い方はかなり理解できるかと思います。必見です。
JShellを終えるときは /exit です。お疲れ様でした。
JavaSE9では--vesionが使えるようになりました
一部で話題になっていたので確認の意味も込めて。
Java9の場合。
C:\>java -version
java version "9"
Java(TM) SE Runtime Environment (build 9+181)
Java HotSpot(TM) 64-Bit Server VM (build 9+181, mixed mode)
C:\>java --version
java 9
Java(TM) SE Runtime Environment (build 9+181)
Java HotSpot(TM) 64-Bit Server VM (build 9+181, mixed mode)
どちらかが標準出力でどちらかが標準エラー出力だという話も聞いたのですが、未検証。
Java8(JavaSE8u131)の場合。
C:\>"C:\Program Files\Java\jdk1.8.0_131\bin\java" -version
java version "1.8.0_131"
Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)
C:\>"C:\Program Files\Java\jdk1.8.0_131\bin\java" --version
Unrecognized option: --version
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit
# はてなブログだと円記号がバックスラッシュになる?
Java Day Tokyo 2017に行ってきました
とある勉強会である人は言いました。
「勉強会は家に帰ってブログを更新するまでが勉強会です。」
これは当然イベントにも当てはまるわけなので、ひとまずここに行ってきた記録を残します。
尚、私はJavaに詳しくないJava開発者なので浅いですが、ご容赦ください。
Java Day Tokyo 2017
2017/05/17(水)9時半から。
参加したセッション
Java SE 9のすすめ
@skrb さんのセッション。互換性、新機能、改善点について。私の仕事上互換性はかなり心配です。
Ahead-of-Time Compilation with JDK9
AoTの話ですが、正式サポートではないのですね。ちょっと残念。
AoTの効果は速くなる※場合もあるということなのですが、とりあえず試してみるのが良いのかもしれません。
appletviewerにクラスパスを渡す方法
JavaにはJavaアップレットを簡単に起動する方法としてappletviewerがある。
appletviewer hoge.html
本来これだけでアップレットが起動出来る(hoge.htmlは予めちゃんと書いておく)のだが、jarファイルが違う場所にあって、java.lang.NoClassDefFoundErrorで半日悶える羽目になったのでメモしておく。
結論から書くと、-Jオプションを使えば良い。
appletviewer -J-Djava.class.path=クラスパス hoge.html
-J-cpや-J-classpathは使えなかった(スペースが上手く扱えなかった可能性がある)。
あと-Jオプションは非標準なので将来使えなくなる可能性がある。
尚、バージョンはJavaSE8でした。
ChromeExtensionのはてブでブックマークに失敗する
私は「はてなブックマーク GoogleChrome 拡張」のユーザなのですが、時折ブックマークをした時に
申し訳ありません、以下の URL のブックマークに失敗しました。しばらく時間をおいていただき、再度ブックマークください。
と表示されてその後何度やり直しても同じエラーになってしまうことがありました。
これは、Chrome extensionのはてブはログイン出来ているのに、Webサイトの方がログアウトされていることが原因だったようです。
なのでhttp://b.hatena.ne.jp/の方でログインしなおしたら直りました。
ある拡張子のファイルをWindows標準の圧縮解凍機能に関連付けしたい
環境はWindows7。Windows10でも出来るし、他のバージョンのWindowsでも出来ると思う。
手元にzip方式で圧縮されているのだけど拡張子がzipでないファイル(仮に*.hogeとする)があり、Windows標準の解凍圧縮機能(エクスプローラで閲覧とか出来て便利)を使いたいと思って方法を調べた。
右クリックメニューの「プログラムから開く」だとWindows標準の解凍方法には関連付けができないようだ。
結論から書くと、コマンドプロンプトを使う。
コマンドプロンプトを「管理者として実行」で起動して下記コマンドを打ち込めばOK。
assoc .hoge=CompressedFolder
.zipもCompressedFolderなので、それと同じ振る舞いをするようにこれで出来た。
詳細はftypeコマンドも調べるとよく分かる。
設定されたか確認するには
assoc .hoge
と打ち込む。正しく設定出来ていれば
.hoge=CompressedFolder
と表示される。
解除するには
assoc .hoge=
と打ち込めば良い。assoc .hogeで確認してみると、
と表示されるので正しく解除されていることが分かる。
参考:
ZIP ファイルの関連付けの設定を初期化したい
コマンド・プロンプトでファイル拡張子の関連付けを変更する − @IT
Microsoft IMEで「単語の登録に失敗しました」と出て単語が登録できない
OSはWindows7。
プロパティ>辞書/学習タブ
辞書ツールの右の方にある「修復」ボタンを押して修復を行う。
これで無事に単語登録ができるように直りました。
参考にしました:
Windows7 IME 辞書ツールで単語の登録に失敗しました