AgentStack
Browse Sign in
Browse Why AgentStack Sell Docs
Sign in
SKILL verified MIT Self-run

Language Java

skill-lugassawan-swe-workbench-language-java · by lugassawan

Java idioms — records, sealed types, virtual threads, streams, and JDK 21+ patterns. Auto-load when working with .java files, pom.xml, build.gradle, or when the user mentions Java, JVM, Spring, Maven, Gradle, records, sealed classes, or virtual threads.

No reviews yet
0 installs
15 views
0.0% view→install

Install

$ agentstack add skill-lugassawan-swe-workbench-language-java

✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.

Security review

✓ Passed

No issues found. Passed automated security review. · v0.1.0 How review works →

  • Prompt-injection patterns
  • Secret / credential exfiltration
  • Dangerous shell & filesystem operations
  • Untrusted network calls
  • Known-malicious package signatures

What it can access

  • Network access No
  • Filesystem access No
  • Shell / process execution No
  • Environment & secrets No
  • Dynamic code execution No

From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.

View the full security report →

Verified badge

Passed review? Show it. Paste this badge into your README, it links to the public security report.

AgentStack Verified badge Links to your public security report.
[![AgentStack Verified](https://agentstack.voostack.com/badges/verified.svg)](https://agentstack.voostack.com/security/report/skill-lugassawan-swe-workbench-language-java)

Reliability & compatibility

Security review passed
0 installs to date
no reviews yet
1mo ago

Declared compatibility

Claude CodeClaude Desktop

Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.

Preview Execution monitoring

We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.

How agent discovery & health will work →
Are you the author of Language Java? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

Java

Records and sealed types

Modern Java models data without boilerplate.

record Point(double x, double y) {}

sealed interface Shape permits Circle, Rectangle {}
record Circle(Point center, double radius) implements Shape {}
record Rectangle(Point topLeft, Point bottomRight) implements Shape {}
  • Use record for immutable data carriers — equals, hashCode, toString, and accessors for free.
  • sealed closes a hierarchy; exhaustive switch replaces instanceof chains.
double area = switch (shape) {
    case Circle c    -> Math.PI * c.radius() * c.radius();
    case Rectangle r -> Math.abs(r.bottomRight().x() - r.topLeft().x())
                        * Math.abs(r.bottomRight().y() - r.topLeft().y());
};

Optional and null discipline

  • Return Optional from methods that may have no result; never use it as a field or parameter type.
  • Optional is not a null check replacement — it signals "absence is a valid outcome."
  • Annotate parameters and fields with @NonNull / @Nullable for static analysis.
Optional find(String id) { ... }
find(id).map(User::email).orElseThrow(() -> new NotFoundException(id));

Concurrency — virtual threads (JDK 21+)

Virtual threads (Project Loom) make blocking-style IO safe at scale.

try (var scope = new StructuredTaskScope.ShutdownOnFailure()) {
    Future  user  = scope.fork(() -> fetchUser(id));
    Future order = scope.fork(() -> fetchOrder(orderId));
    scope.join().throwIfFailed();
    return new Response(user.get(), order.get());
}
  • Executors.newVirtualThreadPerTaskExecutor() — drop-in for newCachedThreadPool() with virtual-thread semantics.
  • Do not pool virtual threads; create-per-task is the idiom.
  • Watch for carrier-thread pinning: synchronized blocks and some native calls pin a virtual thread to its carrier. Prefer ReentrantLock when high-throughput blocking is expected.
  • StructuredTaskScope (JDK 21–24 preview — not yet standard; enable with --enable-preview) enforces structured concurrency: tasks are joined before the scope exits.

Error handling

  • Prefer unchecked exceptions at boundaries; translate checked exceptions from libraries early.
  • try-with-resources for anything AutoCloseable — never close in a finally block manually.
  • Exception translation: catch a library-specific exception at the boundary, rethrow as your domain exception.
try (var conn = dataSource.getConnection()) {
    // ...
} catch (SQLException e) {
    throw new RepositoryException("fetch user " + id, e);
}

Streams and collections

  • Stream for transformations; avoid imperative loops when a pipeline is clearer.
  • .toList() (JDK 16+) over Collectors.toList() — returns an unmodifiable list.
  • Use List.of, Map.of, Set.of for small immutable collections; Map.copyOf to defensively copy.
List emails = users.stream()
    .filter(User::isActive)
    .map(User::email)
    .toList();

Build and packaging

  • Maven: pom.xml with ` for BOM imports; prefer the wrapper (./mvnw`).
  • Gradle: build.gradle (Groovy) or build.gradle.kts (Kotlin DSL — preferred for IDE support).
  • JPMS (module-info.java): adopt only when publishing a library that needs strong encapsulation.

Tooling

  • Imports/Format: mvn spotless:apply / ./gradlew spotlessApply
  • Lint: mvn checkstyle:check / ./gradlew checkstyleMain
  • Test: mvn test / ./gradlew test (see Testing below)

Testing

  • JUnit 5 (@Test, @ParameterizedTest, @MethodSource) — not JUnit 4.
  • AssertJ for fluent assertions: assertThat(actual).isEqualTo(expected).
  • Mockito for external boundaries; do not mock domain objects.
@ParameterizedTest
@MethodSource("provideInputs")
void computesTax(double income, double expectedTax) {
    assertThat(TaxCalculator.compute(income)).isCloseTo(expectedTax, within(0.01));
}

Avoid

  • Raw types (List instead of List).
  • Returning or passing null where Optional or a sentinel value communicates intent.
  • Mutable static state outside of intentional singletons.
  • equals without a matching hashCode override.
  • Blocking inside a reactive pipeline or CompletableFuture chain.

Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet, be the first.

Versions

  • v0.1.0 Imported from the upstream source.