К основному содержанию
скилл CX Codex

java-21 — скилл для Claude Code: паттерны Java 21

Подсказывает агенту, как писать код на Java 21: records, sealed-типы, виртуальные потоки. Пригодится, когда проект уже перешёл на 21-ю версию.

Установить в Claude Code · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add Gentleman-Programming/Gentleman-Skills --skill java-21 -a claude-code
Открыть на GitHub

Что делает java-21

Скилл подгружается, когда агент пишет код на Java 21, проектирует неизменяемые DTO и value-объекты, строит закрытые иерархии или работает с блокирующим вводом-выводом. Внутри — три паттерна с примерами: record с проверкой в компактном конструкторе, sealed-интерфейс со switch по образцу и виртуальные потоки через Executors.newVirtualThreadPerTaskExecutor().

Отдельный раздел разбирает антипаттерны. Мутабельный DTO с публичными полями и запуск сырого new Thread(...) на каждый запрос помечены как плохая практика — второй вариант дорогой и не ограничен по числу потоков. Есть таблица быстрого доступа: задача слева, нужный паттерн справа.

Скилл рассчитан именно на 21-ю версию Java: records, sealed-типы и виртуальные потоки появились в ней, на более старых JDK примеры просто не соберутся. Это повод проверить, какая версия стоит в вашем pom.xml или build.gradle, прежде чем ставить.

Какие задачи решает

  • описать неизменяемый DTO с валидацией в конструкторе
  • закрыть иерархию платежей sealed-интерфейсом и разобрать её через switch
  • обработать блокирующий ввод-вывод без большого пула потоков
  • заменить мутабельный класс-переносчик данных на record
  • убрать запуск нового потока на каждый запрос

Примеры запросов агенту

  • Опиши record Email с проверкой значения в компактном конструкторе
  • Сделай sealed-интерфейс Payment с Card и BankTransfer и разбери его через switch
  • Перепиши загрузку списка URL на виртуальные потоки через Executors.newVirtualThreadPerTaskExecutor()

Как установить java-21

1Через Skills CLI (Vercel)

npx skills add Gentleman-Programming/Gentleman-Skills --skill java-21 -a claude-code

2Вручную: положить файлы

~/.claude/skills/java-21/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/java-21/

По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов

Вопросы о java-21

Как установить java-21 в Claude?

Выполните npx skills add Gentleman-Programming/Gentleman-Skills --skill java-21 -a claude-code. Файл скилла окажется по пути ~/.claude/skills/java-21/SKILL.md.

Что делает скилл java-21?

Даёт агенту готовые паттерны Java 21: records для неизменяемых данных, sealed-типы со switch по образцу, виртуальные потоки для блокирующих вызовов. Плюс список антипаттернов, которых стоит избегать.

Для каких версий Java подходит скилл?

Для Java 21. Records, sealed-типы и виртуальные потоки — возможности этой версии, на более старых JDK примеры из скилла не скомпилируются.

Исходный текст

SKILL.md · MIT
---
name: java-21
description: >
  Java 21 language and runtime patterns for modern, safe code.
  Trigger: When writing Java 21 code using records, sealed types, or virtual threads.
metadata:
  author: diegnghrmr
  version: "1.0"
---

## When to Use

Load this skill when:
- Writing Java 21 application or library code
- Designing immutable DTOs or value objects
- Modeling closed hierarchies with sealed types
- Using virtual threads for blocking I/O

## Critical Patterns

### Pattern 1: Records for immutable data

Use records for DTOs and value objects, validate in compact constructors.

### Pattern 2: Sealed types + pattern matching

Use sealed interfaces/classes and switch pattern matching for exhaustiveness.

### Pattern 3: Virtual threads for I/O

Use virtual threads to handle blocking I/O without large thread pools.

## Code Examples

### Example 1: Record with validation

```java
package com.acme.user;

public record Email(String value) {
  public Email {
    if (value == null || !value.contains("@")) {
      throw new IllegalArgumentException("Invalid email");
    }
  }
}
```

### Example 2: Sealed hierarchy + switch pattern matching

```java
package com.acme.payment;

public sealed interface Payment permits Card, BankTransfer { }

public record Card(String last4) implements Payment { }
public record BankTransfer(String iban) implements Payment { }

public final class PaymentPrinter {
  public String describe(Payment payment) {
    return switch (payment) {
      case Card card -> "card-" + card.last4();
      case BankTransfer bank -> "iban-" + bank.iban();
    };
  }
}
```

### Example 3: Virtual threads for blocking calls

```java
package com.acme.io;

import java.util.concurrent.Executors;

public final class Fetcher {
  public void fetchAll(java.util.List<String> urls) throws Exception {
    try (var executor = Executors.newVirtualThreadPerTaskExecutor()) {
      for (String url : urls) {
        executor.submit(() -> blockingFetch(url));
      }
    }
  }

  private void blockingFetch(String url) {
    // perform blocking I/O here
  }
}
```

## Anti-Patterns

### Don't: Use mutable data carriers

```java
// BAD: mutable DTO
public class UserDto {
  public String name;
  public String email;
}
```

### Don't: Spin up raw platform threads per request

```java
// BAD: expensive and unbounded
new Thread(() -> blockingFetch("https://api" )).start();
```

## Quick Reference

| Task | Pattern |
|------|---------|
| Immutable DTOs | Use records with validation |
| Closed hierarchies | Use sealed interfaces + switch |
| Blocking I/O scale | Use virtual threads executor |

## Resources

- Java 21 Release Notes: https://www.oracle.com/java/technologies/javase/21-relnote-issues.html
- JEP Index: https://openjdk.org/jeps/0

© diegnghrmr · MIT · Gentleman-Programming/Gentleman-Skills

Похожие скиллы

Все скиллы по теме «Языки программирования» →
copilot-sdk-java официальный github Правило подсказывает Copilot, как писать Java-приложения на GitHub Copilot SDK: инициализация клиента, сессии, асинхронные вызовы. ★ 40 418звёзд репо 312-frameworks-spring-data-jdbc Juan Antonio Breña Moral Скилл для работы с Spring Data JDBC на Java records: сущности, репозитории, границы агрегатов, транзакции и борьба с N+1. CX Codex +1 329установок java-mcp-server-generator официальный github Скилл создаёт Java MCP-сервер или Spring Boot-проект для подключения кода, API и баз данных к AI-агентам. Пригодится для заготовки проекта с тестами. 8 800установок java-architect https://github.com/Jeffallan Скилл помогает проектировать Java-приложения на Spring Boot, писать реактивные API, разбирать запросы JPA и настраивать безопасность через OAuth2 и JWT. CX Codex +1 6 000установок java-coding-standards affaan-m Скилл применяет правила Java к коду для Spring Boot и Quarkus. Подключайте его при написании или ревью сервисов на этих фреймворках. CX Codex +1 5 100установок aws-sdk-java-v2-lambda giuseppe-trisciuoglio Скилл подсказывает агенту, как вызывать и обновлять функции AWS Lambda через AWS SDK for Java 2.x. Пригодится, если пишешь на Java и работаешь с Lambda. CX Codex +1 3 700установок

Из того же набора4

Спонсоры проекта

Компании, которые помогают держать аналитику открытой