10.

Java の主要ライブラリ完全ガイド — 標準と OSS

編集
この記事の要点
  • Java の標準ライブラリ: java.util (Collections / Stream / Optional)、java.io / java.nio.filejava.timejava.net.http (Java 11+)
  • Apache Commons (Lang / IO / Collections) と Google Guava がユーティリティの定番
  • JSON は Jackson がデファクト、ログは SLF4J + Logback の組み合わせ
  • ボイラープレート削減の Lombok、テストは JUnit 5 + Mockito、ORM は Hibernate / JPA
  • 依存管理は Maven (pom.xml) または Gradle (build.gradle)

標準ライブラリ概観

パッケージ主な機能主要クラス
java.lang基本型・例外(import 不要)String, Math, Thread, Object
java.utilコレクション・日時・乱数ArrayList, HashMap, Stream, Optional
java.io古典 I/O(バイト/文字ストリーム)FileInputStream, BufferedReader
java.nio.fileモダンなファイル操作 (Java 7+)Path, Files, Paths
java.time日時 (Java 8+ JSR-310)LocalDate, LocalDateTime, Duration
java.net.httpHTTP クライアント (Java 11+)HttpClient, HttpRequest
java.util.concurrent並行処理ExecutorService, CompletableFuture
java.util.stream関数型ストリームStream, Collectors

java.util コレクション

import java.util.*;
import java.util.stream.*;

// List / Set / Map
List list = new ArrayList<>(List.of("a", "b", "c"));
Set set = new HashSet<>(Set.of(1, 2, 3));
Map map = new HashMap<>(Map.of("a", 1, "b", 2));

// Stream
List upper = list.stream()
    .filter(s -> s.length() > 0)
    .map(String::toUpperCase)
    .sorted()
    .collect(Collectors.toList());

// Optional
Optional first = list.stream().findFirst();
first.ifPresent(System.out::println);
String s = first.orElse("default");

java.time 日時操作 (Java 8+)

import java.time.*;
import java.time.format.DateTimeFormatter;

LocalDate today = LocalDate.now();          // 2026-05-18
LocalTime now   = LocalTime.now();
LocalDateTime dt = LocalDateTime.now();
ZonedDateTime zdt = ZonedDateTime.now(ZoneId.of("Asia/Tokyo"));
Instant instant = Instant.now();            // UTC

LocalDate d = LocalDate.of(2026, 1, 1);
LocalDate next = d.plusDays(7).plusMonths(1);

// パース / フォーマット
DateTimeFormatter fmt = DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm");
String text = dt.format(fmt);
LocalDateTime parsed = LocalDateTime.parse("2026/01/01 12:00", fmt);

// 差分
Duration d2 = Duration.between(t1, t2);
Period p = Period.between(d1, d2);

java.nio.file ファイル操作 (Java 7+)

import java.nio.file.*;
import java.util.List;

Path p = Paths.get("/tmp/test.txt");

// 読み書き
Files.writeString(p, "Hello");
String content = Files.readString(p);
List lines = Files.readAllLines(p);

// ストリームで大ファイル
try (Stream stream = Files.lines(p)) {
    stream.filter(l -> l.startsWith("ERROR"))
          .forEach(System.out::println);
}

// 存在確認 / 削除
Files.exists(p);
Files.deleteIfExists(p);
Files.createDirectories(Paths.get("/tmp/a/b/c"));

java.net.http HTTP クライアント (Java 11+)

import java.net.URI;
import java.net.http.*;

HttpClient client = HttpClient.newHttpClient();

HttpRequest req = HttpRequest.newBuilder()
    .uri(URI.create("https://api.example.com/users"))
    .header("Authorization", "Bearer xxx")
    .GET()
    .build();

HttpResponse res = client.send(req, HttpResponse.BodyHandlers.ofString());
System.out.println(res.statusCode());
System.out.println(res.body());

サードパーティライブラリ主要

用途ライブラリ備考
JSONJackson (com.fasterxml.jackson)Spring 標準・デファクト
JSON 軽量Gson (Google)Android で人気
ログ抽象化SLF4JAPI のみ
ログ実装Logback / Log4j 2SLF4J の実装
ユーティリティApache Commons Lang/IO/CollectionsStringUtils 等
コレクション/その他Google GuavaImmutable コレクション・Cache
ボイラープレート削減Lombok@Getter @Setter @Builder
単体テストJUnit 5@Test @ParameterizedTest
モックMockitowhen().thenReturn()
アサーションAssertJassertThat() 流暢 API
ORMHibernate / JPASpring Data JPA で使用
HTTP クライアントOkHttp / Apache HttpClientJava 11+ 標準でも代替可

Jackson での JSON 操作

import com.fasterxml.jackson.databind.ObjectMapper;

record User(String name, int age) {}

ObjectMapper mapper = new ObjectMapper();

// オブジェクト → JSON
String json = mapper.writeValueAsString(new User("Taro", 30));
// {"name":"Taro","age":30}

// JSON → オブジェクト
User u = mapper.readValue(json, User.class);

// JSON → Map
Map m = mapper.readValue(json, Map.class);

SLF4J + Logback でログ

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class Service {
    private static final Logger log = LoggerFactory.getLogger(Service.class);

    public void doWork(int id) {
        log.info("start id={}", id);                  // パラメタ化(推奨)
        try { /* ... */ }
        catch (Exception e) {
            log.error("failed id={}", id, e);         // 例外は最後の引数
        }
        log.debug("done");
    }
}

Lombok でボイラープレート削減

import lombok.*;

@Getter @Setter @ToString
@NoArgsConstructor @AllArgsConstructor
@Builder
public class User {
    private String name;
    private int age;
}

// 利用
User u = User.builder().name("Taro").age(30).build();
u.getName();
u.setAge(31);
System.out.println(u);  // User(name=Taro, age=31)

JUnit 5 + Mockito でテスト

import org.junit.jupiter.api.*;
import static org.junit.jupiter.api.Assertions.*;
import static org.mockito.Mockito.*;

class CalculatorTest {
    @Test
    void testAdd() {
        Calculator c = new Calculator();
        assertEquals(5, c.add(2, 3));
    }

    @Test
    void testMock() {
        UserRepo repo = mock(UserRepo.class);
        when(repo.findById(1)).thenReturn(new User("Taro"));

        UserService svc = new UserService(repo);
        assertEquals("Taro", svc.getName(1));
        verify(repo).findById(1);
    }
}

依存管理 (Maven / Gradle)



  
    com.fasterxml.jackson.core
    jackson-databind
    2.16.0
  
  
    org.projectlombok
    lombok
    1.18.30
    provided
  
// Gradle build.gradle
dependencies {
    implementation 'com.fasterxml.jackson.core:jackson-databind:2.16.0'
    compileOnly 'org.projectlombok:lombok:1.18.30'
    annotationProcessor 'org.projectlombok:lombok:1.18.30'
    testImplementation 'org.junit.jupiter:junit-jupiter:5.10.0'
    testImplementation 'org.mockito:mockito-core:5.5.0'
}

FAQ

Q: Log4j と Logback どっち?
A: Spring Boot は Logback がデフォルト。Log4j 2 は async logging で高速、Log4Shell 脆弱性 (CVE-2021-44228) 以降は 2.17.1+ 必須。

Q: Java 標準だけで JSON 扱える?
A: Java EE には JSON-P (javax.json) があるが、Jakarta EE への移行で扱いが面倒。実務はほぼ Jackson か Gson。

Q: Lombok のデメリットは?
A: IDE プラグイン依存、デバッグでステップが飛ぶ、リフレクションで生成コードを検査できない。チームで合意してから導入を。

編集
Post Share
子ページ
  1. Hibernate
  2. JasperReport
同階層のページ
  1. プラットホーム
  2. 環境構築
  3. 文法
  4. API
  5. Servlet(サーブレット)
  6. JSP
  7. Applet(アプレット)
  8. デザインパターン
  9. フレームワーク
  10. ライブラリ
  11. Androidアプリケーション
  12. Project Jigsaw
  13. エラー一覧
  14. 日付の加算、減算
  15. 文字列の数字チェック
  16. 改行コードの削除
  17. 先頭と末端の文字の削除
  18. warファイルの中身を確認する方法
  19. nullもしくは空文字の判定
  20. beanの中身を確認する方法
  21. org.apache.log4j.Logger のログ出力で printStackTrace() のエラー内容を出力する方法
  22. Javaのバージョン確認方法