java
SKILL.md
Java
Modern Java development with Java 17+ features, streams, and enterprise patterns.
When to Use
- Working with
.javafiles - Building enterprise applications with Spring Boot
- Android development with Kotlin interop
- Microservices architecture
Quick Start
// Modern record with validation
public record User(String id, String name, String email) {
public User {
Objects.requireNonNull(id, "id must not be null");
Objects.requireNonNull(name, "name must not be null");
}
}
Core Concepts
Records (Java 17+)
// Immutable data carriers
public record User(String id, String name, String email) {
// Compact constructor for validation
public User {
Objects.requireNonNull(id, "id must not be null");
}
// Additional methods
public String displayName() {
return name.toUpperCase();
}
}
Sealed Classes
public sealed interface Result<T> permits Success, Failure {
T getOrThrow();
}
public record Success<T>(T value) implements Result<T> {
@Override
public T getOrThrow() { return value; }
}
public record Failure<T>(Exception error) implements Result<T> {
@Override
public T getOrThrow() { throw new RuntimeException(error); }
}
Common Patterns
Streams & Collections
// Immutable collections
var list = List.of("a", "b", "c");
var map = Map.of("key1", "value1", "key2", "value2");
// Stream operations
List<String> names = users.stream()
.filter(User::active)
.map(User::name)
.sorted()
.toList();
// Collectors grouping
Map<String, List<User>> byRole = users.stream()
.collect(Collectors.groupingBy(User::role));
Optional
Optional<User> user = Optional.ofNullable(findUser(id));
String name = user
.map(User::name)
.orElse("Unknown");
user.ifPresentOrElse(
u -> process(u),
() -> handleMissing()
);
Best Practices
Do:
- Use
varfor local variables with obvious types - Prefer records for data transfer objects
- Use Optional instead of null checks
- Use virtual threads for I/O-bound tasks (Java 21+)
Don't:
- Use raw types for collections (use generics)
- Use
Optional.get()without checking - Catch generic
Exception(be specific) - Create mutable DTOs unnecessarily
Troubleshooting
| Error | Cause | Solution |
|---|---|---|
NullPointerException |
Null value access | Use Optional or null checks |
ClassCastException |
Invalid type cast | Use instanceof pattern matching |
ConcurrentModificationException |
Modifying during iteration | Use Iterator.remove() or streams |
References
Weekly Installs
2
Repository
g1joshi/agent-skillsGitHub Stars
7
First Seen
Feb 10, 2026
Security Audits
Installed on
mcpjam2
claude-code2
replit2
junie2
windsurf2
zencoder2