LoginSignup
84
71

More than 5 years have passed since last update.

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

Last updated at Posted at 2018-11-17

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

84
71
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
84
71