特選汎用的Javaライブラリ
汎用的なJavaライブラリを特選するならという観点でまとめてみました。
joda-time:joda-time
便利な独自日時型を提供するライブラリ。Java8からはJRE標準ライブラリで同等な機能を持つjava.lang.LocalDateとLocalDateTimeが提供されてますが、 java.lang.Date型への変換が容易なために重宝します。特にHibernateやActiveObjectsなどの主要なORMライブラリではjava.lang.Date型を必ず利用するため一緒に用いることが多いです。
org.projectlombok:lombok
Java特有の冗長的な記述をアノテーションを用いることで自動保管してくれるライブラリ。コンパイル時にアノテーションからJavaコードへ変換してくれるため、デプロイするアプリケーションサーバへライブラリを設置する手間や懸念を必要としません。
com.google.guava:guava
Javaの便利な型が揃うライブラリ。Collection系は総じて使用頻度が高いです。
com.google.code.gson:gson
Jsonデータを扱う上で便利なライブラリ。その特性上HTTP通信で用いられるため、HttpClientと一緒に利用します。
org.apache.httpcomponents:httpclient
HTTP通信を行う上で便利なライブラリ。Jsonデータでのやり取りならGsonと一緒に使えば幸せになれます。ちなみに以下はサンプルコード。
public static void main( String[] args ) { try (val httpClient = HttpClients.createDefault()) { val request = new HttpPost("<url>"); List<NameValuePair> postParams = Lists.newArrayList(); postParams.add(new BasicNameValuePair("name", "any name"); request.setEntity(new UrlEncodedFormEntity(postParams)); val response = httpClient.execute(request); val content = new Gson().fromJson(EntityUtils.toString(response.getEntity()), Content.class); } catch (Exception e) { // Error procudure } /** * A content of response */ @AllArgsConstructor public class Content { public String create_user; public String message; public String result; public String name; }
最後に
HTTP通信用のライブラリが汎用化どうかは議論の余地がありますが、WebアプリケーションでもAndroidでもHTTP通信は行うため汎用に含めました。Apache Commonsも使うには使いますが、意識的に使っているのはorg.apache.commons.lang3.tuple.Pairとorg.apache.commons.lang3.StringUtilsぐらいでしょうか。