今回は、Javaでよく使うライブラリの一つであるStringUtilsクラスについてのちょっとしたお話です。
最近、JavaでStringUtilsクラスを使ってプログラムを書いていて気づいたのですが
このクラスのパッケージが2つあることに気づきました。
以下の通りで、「lang」と「lang3」というところのみ異なります。"3"が付いているかいないかの違いです。
import org.apache.commons.lang.StringUtils import org.apache.commons.lang3.StringUtils
おかしいなぁと、思って調べてみたらどうやらこれはバージョンの違いによるもののようです。
以下のリンク(公式)にすべて記載されていますが、ざっと内容をまとめました。
Lang – What's new in Commons Lang 3.0?
- 「Lang」は今回の修正で、使っていないものや不要と判断した機能は削除した
- そのため、新しい「Lang」(これはつまり、「Lang3」のこと)では後方互換性を保証していない
- 以前のバージョンのLangと一緒に使っても問題ないように、新しい「Lang」ではパッケージ名を変更した
ざっくり言うと上記のようなことが書いてありました。まあ、つまりライブラリのバージョンを上げようとしたときに後方互換性がない変更となったため、パッケージ名を変えたということみたいですね。
気づかずに、StringUtilsをそれぞれ別のクラスで異なるバージョンをimportして使ってました。。
問題ないと思いますが、これからは新バージョンの「lang3」の方をimportして使おうと思いました。
今回はこの辺で失礼いたします。最後までお読みいただきありがとうございました。