CodeGym /Java Course /モジュール 3 /Apache プロジェクトの概要

Apache プロジェクトの概要

モジュール 3
レベル 20 , レッスン 0
使用可能

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) - あるストリームから別のストリームにコピーします
コメント
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION