Java IDEの使いやすさはIDEがどのようにJavaを知ってるかで決まりがち

Java IDEにもいろいろあるけど、それぞれの特性としてIDEがどれだけJavaを知っているかということで決まるということをTwitterに書いたので、ちょっと具体的に書いてみます。

ちなみに、全体としてNetBeans推しです。

使い分けとしてはこんなこと書いてます。

IntelliJ IDEAはJavaコーディングとエンジニア共通の作業についてよく知ってる

IDEAのJavaエディタはJavaのコードを書くことについてよく知っていて、いいサポートをしてくれます。
たとえば文字列の配列について補完しようとすると、配列がもっているフィールド・メソッドだけではなくて、Streamに関するものも提示してくれます。
f:id:nowokay:20201030152627p:plain

んで、Streamに関するものを選ぶとArrays.streamを自動的にいれてくれる。
f:id:nowokay:20201030152822p:plain

あとGitHub連携とか共同作業の機能とか、Javaに関係なくプログラミング一般に必要なことについてよく知ってる。

ただ、コード以外のJava知識はあまりなさそうで、たとえばMavenプロジェクトを作ってHello worldを書くととりあえすエラーになる。
f:id:nowokay:20201030154115p:plain (2020.3でなおりそう)

Module Settingsに項目があるなって設定してみても変わらない。
f:id:nowokay:20201030154309p:plain

正解は、ぐぐって次のようなコードをみつけてpom.xmlに貼り付けてreload projectするという、初心者が自力でぽちぽちやるにはハードルが高すぎる操作が必要なので、敷居がたかい・・・

    <build>
        <plugins>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>15</source>
                    <target>15</target>
                </configuration>
            </plugin>
        </plugins>
    </build>

まあでも、サムライズムに「教えてくれ~」って言えば丁寧に教えてもらえるので安心。

NetBeansはJavaのエコシステムをよく知ってる

NetBeansはJavaでアプリケーションを開発するということをよく知っていてサポートしてくれる。
プロジェクト作成画面を見るとわかりやすいと思う。
f:id:nowokay:20201030155731p:plain

デフォルトでMavenのプロジェクトになる。以前はAntプロジェクトがデフォルトだった。
そして、どういうプロジェクトを作るかというのもわかりやすく一覧になっている。

プロジェクトの表示も必要なものが見えるようになっててわかりやすい。
f:id:nowokay:20201030160720p:plain

Dependencyもadd dependencyして検索して選んで追加ってなってる。
f:id:nowokay:20201030160948p:plain まあ、Dependencyは結局ぐぐってモジュール名とかは確認しないといけないんだけど、どこに追加するかとかは全部NetBeansが管理してくれるのでわかりやすい。いちいちReload projectしなくてもいいし。

とくにTomcatを使ってサーブレット・JSPを使う場合やらJAX-RSなんかのJava EE APIを使うときのサポートがかなりいいです。
f:id:nowokay:20201030162932p:plain

ただ、Spring FrameworkじゃなくJava EE使おうぜみたいな思惑の名残があったりするので、Springについてのサポートはそこまでしっかりしてない感じ。プラグインはあとからインストールする必要がある。

しかし、なんかimportがすでにある状態でimport補完のダイアログがでるとjavaとか無意味な選択が出るみたいなようわからんものが出たり、補完したはずのコードが消えるとか不具合がちょこちょこあって、安定感に欠ける・・・ f:id:nowokay:20201030172232p:plain

EclipseはJavaツールビジネスを知ってる

なんか、ミドルウェアを作ってそれ用のプラグインを作って囲い込んでいく、みたいなビジネスをよく知ってる感がある。
プログラマに関係ないのでキャプチャとかの例示なし。 そういった囲い込みがないのであれば、いまから使い始めるツールではないと思ってる。
mavenプロジェクト作っていいなりエラー出たりはしないとかプロジェクトの構造の表示とかはIntelliJ IDEAよりいいんだけど。

VS Codeはまとめサイトでえた知識感

VS Codeはいいエディタで、拡張いれていけばJava IDEのようにも使えるけど、拡張間の連携とかを考えると、なんかいろいろよせ集めたまとめサイト感ある。
Java以外を主に使うエンジニアが、なんかの事情でJavaコードをいじる機会に遭遇したときに使う感じ。

まとめ

NetBeansがJavaのIDEとして方向性は一番いいんだけど投入されるリソース量でIntelliJ IDEAに大きく軍配があがる。ここにあげたIDEAの欠点のようなものも、そのうち解消するんではなかろか。