◆ Swing みたい

IntelliJ や PHPStorm や WebStorm など JetBrains の IDE って見た目も綺麗ですよね
Java 製らしいですが Java の微妙な感じがしません

昔見た Java 製のツールは見た目が悪い意味で独特で好きになれない感じで私が Java 嫌いな一つの理由でした
ですが JetBrains の IDE を見て Java の GUI もけっこういいんだねと見直したほどです

そこでどういう技術で GUI 作ってるのか調べてみました

Java の GUI framework

Java ユーザでない私が聞いたことあるのは AWT / Swing / JavaFX の 3 つ
私が知ってるだけあって どれも有名なもので今でもこれらがスタンダードみたいです

どれが一番新しいかも知らないくらいでしたが 上に書いた順で古いのから新しいのになってます


AWT が一番最初からあるもので それぞれの OS のコンポーネントを使用するようです
速いけど見た目が揃わないとか
HTML でフォームパーツがブラウザによってバラバラなあんな感じでしょう


どの OS でも同じように動くことを重要視してる Java だけあってコレに対処するためにでてきたのが Swing です
全く新しいものじゃなくて AWT をベースにしたラッパみたいです
.NET の WinForms が全く新しいのじゃなくそれまでの Win32 の API をラップしてるのと同じ感じかな

Swing ではどの OS でも同じ見た目になるようです
ただ見た目が悪いと評判のようです
私がみたのもこれだったのかな


Swing は中では AWT なので AWT に依存しないように全く新しく作ったのが JavaFX のようです
JavaFX 1 のころは 独自のスクリプト JavaFX Script を使っていたようですが JavaFX 2 ではそれが廃止されて Java の API で操作するようになったようです
それ以外にも FXML (XML+CSS) でデザインを作ることが出来るようです
なんか WPF (XAML) みたい
JavaFX は 1 が 2008 年末で 2 が 2011 年秋にリリースなので WPF や XAML はもっと前からあります
こう見てると Java は .NET の後追いしてるだけ感が強いですね

でも CSS が使えるなら XAML よりいいかもです
XAML のスタイルが書きづらくてすごく CSS にしたいくらいですから

XML+CSS ってデザイン重視ぽい感じな構成な分 Swing と違って綺麗に作れるそうです

ウェブに Windows アプリに Java って主要なところが全部 XML ベースにスタイル設定する作りってなんかすごいですね

マイナーどころ

探そうとすれば SwingX や SWT や JGoodies とかいうのもありましたがマイナーどころみたいです
出てくるページも結構古いのが多いですし

マイナーどころの中では SWT が一番有名みたいです
Eclipse で使われてる Framework のようです

個人的には Java 嫌いな理由の一つになるほどに Eclipse 嫌いです
昔ほんのちょっと使って見た目がダメだし 重いしで Java 自体を嫌いになるのには十分でした

Java って書く量が多すぎて IDE なしじゃ辛いものなのにその IDE がこれですから
しかも無料じゃほぼ Eclipse 一強みたいでしたし
NetBeans はマスコットキャラのネコビーンズ好きでしたがなぜか結局使わなかった気がします

その対抗っぽい C# が VisualStudio っていう重いけどそれ以外はかなり優れてる IDE 付きならそっちを選びますよ

そんな Eclipse 用なので微妙だろうと勝手に思ってます

JetBrains の IDE は?

本題の何が使われてるか ですが一応 InterlliJ はオープンソースだったりします
https://github.com/JetBrains/intellij-community

見ればわかるかな と軽く見てみたのですが 実際に Java のフレームワークを使ったわけではないので大規模なプロジェクトだとどこを見て判断すれば良いかもわかりません


同じ疑問持ってる人いるでしょ
と StackOverflow を覗いてみました

https://stackoverflow.com/questions/12309569/what-gui-libraries-are-the-jetbrains-using
IntelliJ IDEA is a pure Java SWING application, all the custom components like editor tabs are created manually, no third-party libraries are used for this.

Swing??
汚いと言われる Swing なの?
InterlliJ とかすごいきれいなのに

続きを読むと 「エディタやタブなどの全部のカスタムコンポーネントは自作でサードパーティのライブラリはなし」だそうです
Swing は見た目がダメっていうのをよく見かけましたが デフォルトがダメなだけで自作すれば綺麗になるんですね


軽い気持ちで調べたら思いの外 Java に詳しくなってしまった……