こんにちは!バックエンドエンジニアのキョンです。新人からミドルまで5年間Java開発に携わってきた経験を活かして、今回はJava APIについて詳しく解説していきます。
目次
1. Java APIとは
Java APIの基本
入社当時の私は「API」という言葉自体に戸惑っていました。実は、普段何気なく使っているSystem.out.println()
も立派なAPIの一つなんです。
Java APIは、Java言語で利用できる標準的なクラスやインターフェースのライブラリ群のことです。簡単に言えば、Javaで開発するときの「部品箱」みたいなものですね。
なぜJava APIを理解する必要があるの?
- 車輪の再発明を防げる
- 信頼性の高いコードが書ける
- 開発速度が格段に上がる
2. 頻出Java API解説
java.util パッケージ
コレクション系のAPIは本当によく使います。
// List操作
List<String> list = new ArrayList<>();
list.add("Java");
list.add("Python");
// Map操作
Map<String, Integer> map = new HashMap<>();
map.put("Apple", 100);
map.put("Banana", 200);
// 日付操作(Java 8以降)
LocalDateTime now = LocalDateTime.now();
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy/MM/dd");
java.io パッケージ
ファイル操作で頻出です。
// ファイル読み込み
try (BufferedReader br = new BufferedReader(new FileReader("test.txt"))) {
String line;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
} catch (IOException e) {
e.printStackTrace();
}
java.net パッケージ
Web系の開発では必須です。
// HTTP接続
URL url = new URL("https://api.example.com/data");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
3. 実務でよく使うAPI活用例
ファイル処理系
実際の現場でよく使うファイル処理の例です:
public class FileProcessor {
public List<String> readCsvData(String filePath) {
List<String> data = new ArrayList<>();
try (BufferedReader br = new BufferedReader(new FileReader(filePath))) {
String line;
// ヘッダーをスキップ
br.readLine();
while ((line = br.readLine()) != null) {
data.add(line);
}
} catch (IOException e) {
logger.error("ファイル読み込みエラー: " + e.getMessage());
}
return data;
}
}
日付処理系
頻出の日付処理です:
public class DateUtil {
public static boolean isBusinessDay(LocalDate date) {
// 土日チェック
DayOfWeek dayOfWeek = date.getDayOfWeek();
if (dayOfWeek == DayOfWeek.SATURDAY || dayOfWeek == DayOfWeek.SUNDAY) {
return false;
}
// 祝日チェック(実装例)
return !isHoliday(date);
}
}
4. Java APIのバージョン別の違い
Java 8での主な変更点
- Stream API
- Optional
- LocalDateTime
Java 11での追加機能
- Stringの新メソッド
- HttpClientの標準化
Java 17での新機能
- シール型クラス
- パターンマッチング
5. よくあるトラブルと解決法
メモリリーク対策
// 悪い例
public class ResourceManager {
private static final List<Resource> resources = new ArrayList<>();
public void addResource(Resource r) {
resources.add(r); // リソースが解放されない!
}
}
// 良い例
public class ResourceManager implements AutoCloseable {
private final List<Resource> resources = new ArrayList<>();
@Override
public void close() {
resources.forEach(Resource::close);
resources.clear();
}
}
非効率なAPI使用
// 悪い例(文字列結合)
String result = "";
for (String str : strings) {
result += str; // 毎回新しいStringオブジェクトが生成される
}
// 良い例
StringBuilder sb = new StringBuilder();
for (String str : strings) {
sb.append(str);
}
String result = sb.toString();
まとめ
Java APIは広大で、全てを把握するのは正直難しいです。でも、よく使う機能をしっかり理解しておくだけでも、開発効率は格段に上がります。
個人的におすすめなのは:
- まずは基本的なコレクション系APIを完璧に使えるようにする
- 次にIO系のAPIを学ぶ
- そして並列処理やStream APIへと進む
という順序での学習です。
今後の学習のために
- 公式JavaDoc
- Java SE仕様書
- Java APIリファレンス
これらを読み込むのがベストですが、最初は使用頻度の高いAPIから深掘りしていくのがおすすめです。
次回は「Stream APIの実践的な使い方」について解説する予定です。お楽しみに!
コメント