随分、と言うかここまでメジャーなのに手を付けてなかったJava。私、ついに長年の刻を経てよーやく触ってみました。
正直まだ1、2時間気分で触っただけなので基礎文法すら一切何も理解してません。全ては第6感でやっているかな…笑。ドキュメントすらほぼ見ずに触るって何なんだって感じですが、とりあえず勢いで手を動かしてみてセンスで感じてみると言うことで。
と言うことで触ってみたインプレッションを書いてみます。
- プログラムの構造は至って読みやすいのでOK。
int
すらラップクラス(Integer
)があって型とインターフェースでカッチリしてくって至って生真面目な構造は好きです。関数名長いのは正義 - ビルドが色々な箇所で思ったより長い(例えばgradleでは増分コンパイルが進んでるらしいのである程度は許容できる)。が、それ以上に諸々の実行の初動が長い気がしてならない(これは単純使用で知識がないからかも。結構問題。どう対処してるんだろ)
- ↑と書いてるが、恐らく
jar
の実行パフォーマンスは他言語とあまり遜色ないはずで、多分ビルド→ランでそれ以外のが適当にやってることでゴテゴテしてるかもしれない - 多分色々な構成で変わる気がするが、メインパッケージに行くまでの階層が深い。
com.foo.bar
とか - Groovyをどうやら覚えないといけないらしい。というか、文法や標準ライブラリ、フレームワークを覚えるのも必要なんだけど、ちゃんとコード書いて自由に扱えるようにする為の要は言語っつーよりほぼビルドシステムだと思ってる。で、Javaは「意外と面倒そう」に感じた方。まずあのDSLの見方が謎である。「MavenとGradleを使いこなすハードル」がまず必要かもね
- foreachってC++スタイルなのね
- JVMの発想は嫌いじゃない。WebAssemblyの先駆って感じがする。これを活用した用途をもうちょっと理解していくことで夢が広がりそうな気がする。が、Java開発しない限りか、組み込み用途で仕込むんでなければ積極的に個人では導入はしないのもやっぱり感じたり。なぜなら自分は自分のマシンに限って明示的に専用ランタイム入れるのが趣味的に好きじゃないから(多分今まで手をつけるつもりがなかったのがこれが核心的な理由)
- おいおい.NETは良いのかよ、っていうのはWindowsは.NET Framework入っちゃってるし、みたいなご都合理論。何より私のツール、サイズは妥協してバイナリに大体ランタイム組み込みで配布してる(使う側が別になにかソフトを入れることを強要してない)って点が趣味というか、コダワリが出ちゃってますね…(笑)
javac
とかよく理解ってないが、とりあえずMavenとGradleとで謎プラグイン入れたり、ビルドランタスク?コマンドっぽいのに任せたらなんかビルド出来て動いた。とりあえずその辺りから抑えとく必要ありそう
- C#との差異としては、とりあえずインナークラスに
static
を明示している点、ジェネリック関数とか定義する時にfoo<T>()
じゃなくて<T> foo()
なのが気になった(趣味的には好きじゃない) - 多分まともにリンタとか入れてないん(もしかしたら入ってる?)ですが、VSCodeの拡張入れただけでも基本的な所「こうしろよ」ってガツガツ言われてちょっと自由さは感じない半分、それが良さかもって感じる。ファイル分けてねとかsuperは上に持ってこいよとか
- 引数に
final
付けられるのは面白い。これは結構良い機能かも .war
へのリソースパッキング。あんまり理解ってないけど、他アプリを見てみたら多分出来るやつなのかもしれない。これは魅力かも
OK。これがThis is Javaか。
と言うことで、とりあえずぼちぼちは触っていこうと思います。