Java
VSCode
VisualStudioCode
IntelliCode

Visual Studio IntelliCodeがJavaに対応したので試してみた

Visual Studio Codeの拡張機能「Visual Studio IntelliCode」がJavaに対応したとのことで、早速試してみました。

12/2追記
Visual Studio CodeでなぜJava開発が可能か?について調べました。
「なぜVisual Studio CodeでJavaの開発ができるのか?」

Visual Studio IntelliCodeとは?

機械学習を用いてAIがコーディング支援してくれる機能で、GitHubにあるコードを学習データとして使っているそうです。

環境

試したのは次の環境です。拡張機能にJava Extension Packのみ入れた環境を用意して確認しました。Language Support for Java™ by Red Hatは既にJava 11に対応しているため、今回はOpenJDK 11.0.1を利用しました。

  • Windows 10 Pro(Azure上のVM)
  • Visual Studio Code 1.29.1
  • OpenJDK 11.0.1
  • Java Extension Pack
    • Language Support for Java™ by Red Hat
    • Debugger for Java
    • Java Test Runner
    • Maven Project Explorer
  • Visual Studio IntelliCode

結果

Hello World

まずはHello Worldの標準出力レベルで確認してみます。

Visual Studio IntelliCodeがない環境

Visual Studio IntelliCodeを入れる前の環境を試します。System.outでドットを打つとメソッド一覧が表示されますが、普通にアルファベット順に表示されています。
2018-11-17_23h06_52.png

Visual Studio IntelliCodeを入れた環境

続いてVisual Studio IntelliCodeを入れた環境で試してみると、「★」マークが付いたものが表示されます。これがIntelliCodeによって推奨されたメソッドです。appendを指しているよりは嬉しいですね。
2018-11-17_23h07_55.png

コンテキスト

先の例はシンプルすぎてあまり良さがわからないので、次のような例を試してみました。

Integer型の数値

Integerの数値を定義して、メソッドをみると、次のように並びます。
2018-11-18_00h37_17.png

Integer型の数値 + if文

if文の条件で使ってみると先ほどparseIntやtoStringが並んでいたものが、equals、intValueなどが優先されました。このようにコードのコンテキストに合わせてAIが推奨してくれるようです。
2018-11-18_00h48_14.png

現状どこまで有効な表示がでるかわかりませんが、ちゃんと機能しているようです。

おまけ

ちなみにJDK11で入ったHttpClientを試してみると、「★」が付いたものは表示されませんでした。この辺はまだ学習データがないのか、JDK11に対応していないのか、よくわかりませんでした。
2018-11-17_23h23_50.png

[追記]

当初、以下の例で書いていました。

Integer val = new Integer(123);

コメントいただいたとおり、deprecatedでVSCodeでも警告が出ていました。悪い例を書いてしまい、失礼しましたm(_ _)m
2018-11-18_00h29_30.png