# Java

> Use when: write or review modern, idiomatic Java with immutability, clear types, and clean structure.

- Skill: `kimtth/java` (Agent Skill)
- Install (CLI): `npx skillmds@latest add kimtth/java`
- Raw SKILL.md: https://api.skillmd.com/api/skills/kimtth/java/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: kimtth (https://skillmd.com/u/kimtth)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/kimtth/java

---


Goal: modern Java that is immutable by default, null-safe, and testable.

Use for:
- new classes, services, or APIs in Java
- reviewing structure, immutability, and error handling
- modernizing verbose or legacy patterns

Workflow:
1. Model immutable data with records and final fields.
2. Use Optional for absence; avoid returning null.
3. Prefer the Streams API for transformations over manual loops.
4. Throw specific exceptions; never swallow them silently.
5. Manage resources with try-with-resources.
6. Verify with JUnit, a static analyzer, and the formatter.

Idioms:
- records for immutable value types
- Optional return types instead of null
- switch expressions and pattern matching
- var for obvious local types
- dependency injection over static singletons

Rules:
- do not return or pass null; use Optional or explicit checks
- close resources with try-with-resources, not manual finally
- keep classes focused; favor composition over inheritance
- program to interfaces for testability

