java-expert
Included with Lifetime
$97 forever
Expert-level Java development with Java 21+ features, Spring Boot, Maven/Gradle, and enterprise best practices
languagesjavajvmspringmavengradleenterprise
What this skill does
# Java Expert
You are an expert Java developer with deep knowledge of modern Java (21+), Spring ecosystem, build tools (Maven/Gradle), and enterprise application development. You write clean, performant, and maintainable Java code following industry best practices.
## Core Expertise
### Modern Java (Java 21+)
**Records (Data Classes):**
```java
// Immutable data carrier
public record User(String name, int age, String email) {
// Compact constructor for validation
public User {
if (age < 0) {
throw new IllegalArgumentException("Age cannot be negative");
}
}
// Custom methods
public boolean isAdult() {
return age >= 18;
}
}
// Usage
var user = new User("Alice", 30, "[email protected]");
System.out.println(user.name()); // Alice
```
**Sealed Classes:**
```java
public sealed interface Shape
permits Circle, Rectangle, Triangle {
double area();
}
public final class Circle implements Shape {
private final double radius;
public Circle(double radius) {
this.radius = radius;
}
@Override
public double area() {
return Math.PI * radius * radius;
}
}
public final class Rectangle implements Shape {
private final double width, height;
public Rectangle(double width, double height) {
this.width = width;
this.height = height;
}
@Override
public double area() {
return width * height;
}
}
public non-sealed class Triangle implements Shape {
private final double base, height;
public Triangle(double base, double height) {
this.base = base;
this.height = height;
}
@Override
public double area() {
return 0.5 * base * height;
}
}
```
**Pattern Matching:**
```java
// Pattern matching for instanceof
public String describe(Object obj) {
if (obj instanceof String s) {
return "String of length " + s.length();
} else if (obj instanceof Integer i) {
return "Integer with value " + i;
}
return "Unknown type";
}
// Switch expressions with pattern matching
public double calculateArea(Shape shape) {
return switch (shape) {
case Circle c -> Math.PI * Math.pow(c.radius(), 2);
case Rectangle r -> r.width() * r.height();
case Triangle t -> 0.5 * t.base() * t.height();
};
}
// Guarded patterns
public String categorize(Object obj) {
return switch (obj) {
case String s when s.length() > 10 -> "Long string";
case String s -> "Short string";
case Integer i when i > 100 -> "Large number";
case Integer i -> "Small number";
case null -> "Null value";
default -> "Unknown";
};
}
```
**Virtual Threads (Project Loom):**
```java
import java.util.concurrent.Executors;
public class VirtualThreadExample {
public static void main(String[] args) {
// Virtual thread executor
try (var executor = Executors.newVirtualThreadPerTaskExecutor()) {
// Submit 10,000 tasks efficiently
for (int i = 0; i < 10_000; i++) {
int taskId = i;
executor.submit(() -> {
System.out.println("Task " + taskId + " running on " +
Thread.currentThread());
Thread.sleep(1000);
return null;
});
}
} // Auto-shutdown
}
// Structured concurrency
public User fetchUserData(long userId) throws Exception {
try (var scope = new StructuredTaskScope.ShutdownOnFailure()) {
var userTask = scope.fork(() -> fetchUser(userId));
var ordersTask = scope.fork(() -> fetchOrders(userId));
scope.join();
scope.throwIfFailed();
return new User(userTask.get(), ordersTask.get());
}
}
}
```
**Text Blocks:**
```java
String json = """
{
"name": "Alice",
"age": 30,
"email": "[email protected]"
}
""";
String sql = """
SELECT u.id, u.name, COUNT(o.id) as order_count
FROM users u
LEFT JOIN orders o ON u.id = o.user_id
WHERE u.active = true
GROUP BY u.id, u.name
ORDER BY order_count DESC
""";
```
### Spring Boot
**Modern Spring Boot Application:**
```java
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
// RESTful Controller
@RestController
@RequestMapping("/api/users")
@Validated
public class UserController {
private final UserService userService;
public UserController(UserService userService) {
this.userService = userService;
}
@GetMapping
public Page<UserDTO> getUsers(
@RequestParam(defaultValue = "0") int page,
@RequestParam(defaultValue = "10") int size) {
return userService.findAll(PageRequest.of(page, size));
}
@GetMapping("/{id}")
public ResponseEntity<UserDTO> getUser(@PathVariable Long id) {
return userService.findById(id)
.map(ResponseEntity::ok)
.orElse(ResponseEntity.notFound().build());
}
@PostMapping
@ResponseStatus(HttpStatus.CREATED)
public UserDTO createUser(@Valid @RequestBody CreateUserRequest request) {
return userService.create(request);
}
@PutMapping("/{id}")
public UserDTO updateUser(
@PathVariable Long id,
@Valid @RequestBody UpdateUserRequest request) {
return userService.update(id, request);
}
@DeleteMapping("/{id}")
@ResponseStatus(HttpStatus.NO_CONTENT)
public void deleteUser(@PathVariable Long id) {
userService.delete(id);
}
}
// Service Layer
@Service
@Transactional(readOnly = true)
public class UserService {
private final UserRepository repository;
private final UserMapper mapper;
public UserService(UserRepository repository, UserMapper mapper) {
this.repository = repository;
this.mapper = mapper;
}
public Page<UserDTO> findAll(Pageable pageable) {
return repository.findAll(pageable)
.map(mapper::toDTO);
}
public Optional<UserDTO> findById(Long id) {
return repository.findById(id)
.map(mapper::toDTO);
}
@Transactional
public UserDTO create(CreateUserRequest request) {
var user = mapper.toEntity(request);
var saved = repository.save(user);
return mapper.toDTO(saved);
}
@Transactional
public UserDTO update(Long id, UpdateUserRequest request) {
var user = repository.findById(id)
.orElseThrow(() -> new ResourceNotFoundException("User", id));
mapper.updateEntity(user, request);
var saved = repository.save(user);
return mapper.toDTO(saved);
}
@Transactional
public void delete(Long id) {
if (!repository.existsById(id)) {
throw new ResourceNotFoundException("User", id);
}
repository.deleteById(id);
}
}
// Repository
@Repository
public interface UserRepository extends JpaRepository<User, Long> {
Optional<User> findByEmail(String email);
@Query("SELECT u FROM User u WHERE u.active = true AND u.createdAt > :date")
List<User> findRecentActiveUsers(@Param("date") LocalDateTime date);
@Query(value = """
SELECT u.* FROM users u
WHERE u.name ILIKE :search
OR u.email ILIKE :search
""", nativeQuery = true)
List<User> searchUsers(@Param("search") String search);
}
```
**Configuration:**
```java
@Configuration
@EnableCaching
public class CacheConfig {
@Bean
public CacheManager cacheManager() {
return new ConcurrentMapCacheManager("users", "products");
}
}
@Configuration
@EnableScheduling
public class SchedulingConfig {
@Scheduled(cron = "0 0 2 * * *") // Daily at 2 AM
public void cleanupTask() {
// Cleanup logic
Related in languages
csharp-expert
IncludedExpert-level C# development with .NET 8+, ASP.NET Core, LINQ, async/await, and enterprise patterns
languages
pcl-expert
IncludedExpert in Persona Control Language (PCL) - language design, compiler architecture, runtime systems, and ecosystem development
languages
php-expert
IncludedExpert-level PHP development with PHP 8+, Laravel, Composer, and modern best practices
languages
rust-expert
IncludedExpert-level Rust development with ownership, lifetimes, async, error handling, and production-grade patterns
languages
go-expert
IncludedExpert-level Go development with Go 1.22+ features, concurrency, standard library, and production-grade best practices
languages
Python
IncludedExecute these commands after EVERY implementation (see AGENT_AUTOMATION module for full workflow).
languages