プログラマ38の日記

主にプログラムメモです。

雑記/Java: 最近のJavaで辛いなと思ったこと

自分は他の言語はあまりやらないので、Javaプログラムがメイン言語となっています。

なので、何か作ろうと思ったらコマンドラインのプログラムもJavaGUIのプログラムもJavaで済まそうとしてしまいます。

 

言語の拡張や新しい仕組みの導入などは無条件に受け入れる(しかない)のですが、最近のJava(Java8)で辛いなと思うことがあります。

 

  1. サイズがでかい(どんどんでかくなる)
  2. sun.jdbc.odbc.JdbcOdbcDriverが削除された
  3. (その他)javaとは無関係ですが、apache poiでExcelを扱いづらい

 

1. サイズがでかい(どんどんでかくなる)

Javaで作ったツール類を公開したいと思ったときに、jreが大きすぎてjreを含めてツールを公開するのをためらってしまいます。(java8だと200MB近くになっています。)
持ち歩きが不便です。
JavaFXが組み込まれてから一気にサイズが大きくなった気がしていますが、JavaFXが標準で必要な人の割合の方が少ないと思うんですよねー。以前のように別のライブラリにしとけばいいのにと思っています。

※個人的にJava Swingをよく使うのですが、Java Swingが廃止されてJavaFXを使わないといけない日が来たら、別の言語に乗り換えるタイミングかなと思っています。

 

2. sun.jdbc.odbc.JdbcOdbcDriverが削除された

MS-ACCESSや、ODBC Text Driver、ODBC Excel Driverを使ってるので、なくなると本当に困ります。(Java6やjava7をまだ使っています)

Java8でsun.jdbc.odbc.JdbcOdbcDriveを使うやり方を書いてくれている方がいて神だと思いました。(※)

個人的な思いとしてJavaDBはいらないので、MS-ACCESS使わせて欲しいです。そもそもDerby使うならhsqldbとかh2 databaseとか使いますし。

 

※Java9では、このやり方は使えなくなると思います。jdk9で試した結果、sun.security.*パッケージのアクセスができずjava.lang.NoClassDefFoundErrorとなりました。
今のところこのエラーを解消できておらず絶望的な感じです。

 

3. (その他)javaとは無関係ですが、apache poiでExcelを扱いづらい

完全に、javaと関係ないです。apache poiを使うと、xlsxのファイルを読むと滅茶苦茶メモリ使うんですね。xlsxが圧縮されているんだと思いますが、元のファイルサイズの10倍近くメモリを要求してくるイメージです。poiだと数式の評価がめんどくさいのと、他のブックを参照している数式は正しく値が取得できませんでした。

JExcelApiならもうちょっと改善されてるんですかね。。使ってみようと思います。

 

最後に

なんだかんだでJavaが好きなんですよね。Eclipseが偉大なのと、ライブラリも充実してますし。

言語拡張はそこまでいらないです。JavaのStreamAPIとかラムダ式とか使いやすいと思いませんでした。(頭が古いだけかもしれません)

 

そろそろJava9を使い始めてみようと思います。