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

Java Code Upgrade

skill-darshitpp-java-code-upgrade-java-code-upgrade · by darshitpp

Upgrade Java code from older idioms to modern equivalents. Scans for legacy patterns (pre-Java 10 through Java 25) across language features, collections, strings, streams, concurrency, input/output, error handling, date/time, security, tooling, and enterprise APIs, then suggests modern replacements with before/after examples. Use when modernizing Java codebases, reviewing pull requests for outdat…

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

Install

$ agentstack add skill-darshitpp-java-code-upgrade-java-code-upgrade

✓ 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-darshitpp-java-code-upgrade-java-code-upgrade)

Reliability & compatibility

Security review passed
0 installs to date
no reviews yet
4mo 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 Java Code Upgrade? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

Java Evolved — Code Upgrade Skill

Modernize Java code by identifying legacy patterns and suggesting modern replacements with before/after examples sourced from 113 patterns across 11 categories (Java 7 through Java 25).

Procedures

Step 1: Determine Upgrade Scope

  1. Identify the target JDK version for the project. Check pom.xml, build.gradle, or .java-version for the configured source/target level. If unspecified, ask the user.
  2. Identify which categories are relevant to the task:
  • language — var, records, sealed classes, pattern matching, switch expressions, text blocks
  • collections — immutable factories, sequenced collections, unmodifiable collectors
  • strings — isBlank, strip, repeat, lines, formatted, text blocks
  • streams — toList, mapMulti, gatherers, takeWhile/dropWhile, optional improvements
  • concurrency — virtual threads, structured concurrency, scoped values, stable values
  • io — HTTP client, Files API, Path.of, transferTo, memory-mapped files
  • errors — helpful NPE, multi-catch, optional chaining, null-in-switch
  • datetime — java.time API, Duration/Period, HexFormat, Math.clamp
  • security — PEM encoding, KDF, strong random, TLS defaults
  • tooling — JShell, single-file execution, JFR, AOT preloading
  • enterprise — EJB to CDI, Servlet to JAX-RS, JDBC to JPA/jOOQ, SOAP to REST, Spring modernization
  1. If performing a full codebase scan, proceed to Step 2. If upgrading specific code, skip to Step 3.

Step 2: Scan for Legacy Patterns

  1. Read references/detection-patterns.md to load the detection signature database.
  2. For each relevant category, search the codebase for the detection signatures listed:
  • Use grep/search for the specific code patterns documented (e.g., Collections.unmodifiableList, new Thread(, .trim().isEmpty())
  • Track each match with file path, line number, and matched pattern slug.
  1. Execute python3 scripts/find-pattern.py --data-dir references/ --category {cat} --max-jdk {target} --format full to retrieve the complete before/after transformation for each detected pattern.
  2. Group findings by priority:
  • Quick wins: beginner difficulty, drop-in replacements (e.g., var, List.of(), String.isBlank())
  • Moderate: intermediate difficulty, may require testing (e.g., records, sealed classes, virtual threads)
  • Significant: advanced difficulty, architectural changes (e.g., structured concurrency, enterprise migrations)
  1. Format results using assets/upgrade-report-template.md.

Step 3: Upgrade Specific Code

  1. Identify which legacy pattern the code uses. If unsure, read references/detection-patterns.md and match against the code.
  2. Look up the specific pattern by executing:

python3 scripts/find-pattern.py --data-dir references/ --keyword "{pattern_name}" --format full

  1. Read the relevant category reference file from references/{category}.md for the complete transformation including:
  • Before/after code examples
  • Explanation of why the modern approach is better
  • JDK version requirements
  • Related patterns to consider alongside
  1. Apply the transformation following the modern code example. Adapt to the specific codebase context — do not blindly copy-paste.
  2. Check for related patterns that often co-occur. The reference files list related patterns for each entry.

Step 4: Enterprise Migration Path

If the codebase involves Java EE or early Jakarta EE, read references/enterprise.md for the complete migration mappings:

  • EJB to CDI beans
  • Servlet to JAX-RS endpoints
  • JSF managed beans to CDI named beans
  • JNDI lookups to CDI injection
  • JPA EntityManager to Jakarta Data repositories
  • SOAP web services to Jakarta REST
  • Message-driven beans to reactive messaging
  • Manual transactions to declarative @Transactional
  • Spring XML configuration to annotation-driven
  • Spring null safety to JSpecify

Step 5: Validate Upgrades

  1. Verify the target JDK version supports all applied patterns. Each pattern specifies its minimum JDK version.
  2. Ensure no pattern requires a JDK version higher than the project target.
  3. Run the project's existing test suite to confirm no regressions.
  4. For patterns marked as preview features, verify the project enables preview: --enable-preview.

Quick Reference by JDK Version

| JDK | Key Patterns | |-----|-------------| | 7 | multi-catch, diamond operator | | 8 | default/static interface methods, streams, CompletableFuture, java.time | | 9 | List/Set/Map.of(), Optional.or/ifPresentOrElse, private interface methods, Stream.ofNullable/takeWhile/dropWhile, process API | | 10 | var, unmodifiable copy, Optional.orElseThrow | | 11 | String.isBlank/strip/repeat/lines, HTTP client, Path.of, single-file execution, Predicate.not | | 12 | String.indent/transform, Files.mismatch, Collectors.teeing | | 14 | switch expressions, helpful NPE | | 15 | text blocks, String.formatted | | 16 | records, Stream.toList, mapMulti, unmodifiable collectors, record-based errors, static members in inner classes | | 17 | sealed classes, RandomGenerator, HexFormat | | 18 | built-in HTTP server | | 19 | executor try-with-resources, Thread.sleep(Duration) | | 21 | virtual threads, pattern matching (instanceof + switch), sequenced collections, unnamed variables, guarded patterns, null-in-switch, Math.clamp | | 22 | unnamed variables, multi-file source, FFM API (call C from Java), file memory mapping | | 23 | markdown Javadoc | | 24 | stream gatherers | | 25 | structured concurrency, scoped values, stable values, flexible constructors, compact source files, module imports, primitive patterns, AOT preloading, PEM encoding, KDF, IO class |

Error Handling

  • If scripts/find-pattern.py fails with a file-not-found error, verify the --data-dir points to the references/ directory containing the category markdown files.
  • If a pattern requires a JDK version higher than the project target, flag it as "future upgrade" rather than applying it.
  • If the YAML data files are missing, the reference markdown files in references/ contain all pattern data and can be used directly without the script.
  • If a detection signature matches but the code context differs from the pattern (e.g., intentional use of old API), skip the suggestion and note why.

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.