Apache Commons の概要
もちろん、歴史から始めましょう!
すべては 1999 年に、Apache Software Foundation (ASF) を代表する「Apache Group」の登録から始まりました。この財団が支援したプロジェクトは、1995 年から 1999 年にかけて作成された Apache HTTPD Web サーバーでした。
同じことが、Sun Microsystems、IBM、Oracle、および Apache のチームの協力の結果として登場した Jakarta Project (ジャカルタ プロジェクト) でした。そして 2001 年、開発チームは作業中に、同じ機能を作成することが多く、場合によっては相互にコピーするだけであることに気づきました。このようなコードはボイラープレートと呼ばれます。彼らは開発者に役立つ大量のコードを収集することに成功しましたが、それを保存するライブラリがありませんでした。
こうして、Jakarta Commons プロジェクトが誕生し、Java コンポーネントが (主に既存のコードに基づいて) 追加されました。このプロジェクトは後に Apache Commons に名前変更されました。
より広義には、Apache Commons は「小さな Java ユーティリティの大きなコレクション」です。多くのオープンソース プロジェクトで使用されています。
Apache Commons ユーティリティは、Apache Tomcat、Struts、Hibernate などのプロジェクトの中心です。
もちろん、ビルド システム (Maven、Gradle) を使用せずに、これらすべてを手動で接続することもできますが、ここではこれを行わず、単にプロジェクトに追加するだけです。
Maven を使用するには、まず適切な依存関係を追加します。
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>${apache.common.version}</version>
</dependency>
${apache.common.version}は、このライブラリのバージョンです。
Gradle (Groovy) の場合:
implementation 'org.apache.commons:commons-lang3:3.12.0'
人気の Apache Commons ライブラリ
最もよく使用されるクラスとメソッドのリストは次のとおりです。
Apache Commons:Lang
このライブラリには次のパッケージが含まれています。
Packages
org.apache.commons.lang
org.apache.commons.lang.builder
org.apache.commons.lang.enum
org.apache.commons.lang.enums
org.apache.commons.lang.exception
org.apache.commons.lang.math
org.apache.commons.lang.mutable
org.apache.commons.lang.reflect
org.apache.commons.lang.text
org.apache.commons.lang.time
ここでは、文字列、リフレクション、シリアル化、オブジェクト、システムを簡単かつ迅速に操作できます。最もよく使用されるメソッドに注目してみましょう。
文字列ユーティリティ
文字列を操作するための膨大な数のメソッド。
- is(Not)Blank/Empty(String) - このタイプのチェックのことは忘れましょう: if (s!=null && s.trim().length()>0)、ここに適切な代替手段があります。
StringEscapeUtils
- (un)escapeSql(String) - PreparedStatmentを置き換えます
- (un)escapeHtml(String) - HTML からの値を処理します
ToStringBuilder
- reflectionToString(Object) は、リフレクションに基づいたtoString()の実装です。リフレクションを使用してフィールドを削除すると、メソッドの結果が変わります。
EqualsBuilder と HashCodeBuilder
- reflectionEquals/HashCode(Object)は、自動生成の優れた代替品であり、独自の利点があります。これら 2 つのメソッドは、フィールドの追加など、操作中のオブジェクトの構造変更を考慮します。
例外ユーティリティ
- getFullStackTrace(Throwable) - StackTrace 全体を文字列として出力します。
Apache Commons: コレクション
Packages
org.apache.commons.collections4
org.apache.commons.collections4.bag
org.apache.commons.collections4.bidimap
org.apache.commons.collections4.collection
org.apache.commons.collections4.comparators
org.apache.commons.collections4.functors
org.apache.commons.collections4.iterators
org.apache.commons.collections4.keyvalue
org.apache.commons.collections4.list
org.apache.commons.collections4.map
org.apache.commons.collections4.multimap
org.apache.commons.collections4.multiset
org.apache.commons.collections4.properties
org.apache.commons.collections4.queue
org.apache.commons.collections4.sequence
org.apache.commons.collections4.set
org.apache.commons.collections4.splitmap
org.apache.commons.collections4.trie
org.apache.commons.collections4.trie.analyzer
Java SE Collections Frameworkを完全に補完するライブラリです。
CollectionUtils は、コレクションを便利に操作するためのクラスです。
-
filter/find(Collection, Predicate) - 述語によるフィルタリングと検索 forAllDo(Collection, Closure) - 各要素の Closure を実行しますが、このメソッドは非推奨です。Iterator.forEach() is(Not)Empty(Collection) - を使用します。isEqualCollection(Collection, Collection)を呼び出す前に null をチェックしない - 2 つのコレクションを比較するのに役立ちます
実用性の異なるさまざまなレベルのクラスが他にも多数あります。ここと以下に、純粋に私の場合に最も一般的に使用されるものをリストします。
Apache Commons:IO
Packages
org.apache.commons.io
org.apache.commons.io.comparator
org.apache.commons.io.file
org.apache.commons.io.file.spi
org.apache.commons.io.filefilter
org.apache.commons.io.function
org.apache.commons.io.input
org.apache.commons.io.input.buffer
org.apache.commons.io.monitor
org.apache.commons.io.output
org.apache.commons.io.serialization
さらに、Java でのファイルの操作にも役立ちます。
ファイルユーティリティ
- copyDirectory(File, File) - ディレクトリをコピーします
- copyFile(File, File) - ファイルをコピーします
- listFiles(File, String[], boolean) - ファイルを拡張子ごとに再帰的にリストします。
- readFileToString(ファイル, 文字列)
- writeStringToFile(ファイル, 文字列)
IOUtils
- closeQuietly(Reader/Writer/InputStream/OutputStream) - データ ストリームを閉じます
- copy(InputStream, OutputStream) - あるストリームから別のストリームにコピーします
GO TO FULL VERSION