Skip to content

Add suretool to Utility — JDK25-first, zero-dependency Java toolkit - #1350

Open
TASure wants to merge 1 commit into
akullpp:mainfrom
TASure:feature/suretool
Open

TASure wants to merge 1 commit into
akullpp:mainfrom
TASure:feature/suretool

Conversation

@TASure

@TASure TASure commented Oct 9, 2026 •

Copy link
Copy Markdown

What

Add suretool to the Utility section.

Why it fits (per CONTRIBUTING)

  • Unique approach: JDK 25-first, zero runtime dependencies in the core (), with 28 Maven modules spanning strings/collections/IO/JSON/crypto/caching/cron/POI/PDF — a Hutool-style single-vendor toolkit built on modern JDK features (virtual threads as first-class citizens, / fluent API, structured concurrency).
  • Differentiation vs peers in this section: unlike Guava (Google collections-centric), suretool is an all-in-one Chinese-ecosystem-style toolkit with a public benchmark suite (, JMH) showing at-par performance vs Guava/Apache Commons; unlike java-util it adds cron/captcha/POI/PDF/HTTP modules.
  • License clearly documented: Apache-2.0, per CONTRIBUTING criterion (i).
  • English documentation: README.en.md + javadoc.io + GitHub Pages docs portal.

Criteria

Meets (b)/(c)/(d): innovative (JDK25/virtual-thread-first for a general utility library), fills a gap (modern JDK-25-only zero-dependency toolkit with module ecosystem), and is developer-friendly per criteria (i)-(iv).


Summary by cubic

Adds suretool to the Utility section of the README project list, bumping the count from 17 to 18 projects.

  • suretool is a JDK 25-first, zero-dependency Java toolkit spanning strings, collections, IO, JSON, crypto, caching, cron, POI, and PDF, with virtual-thread-first concurrency and fluent Result/Option APIs.
  • Meets the contributing criteria via its Apache-2.0 license, English docs (README, javadoc.io, GitHub Pages), and differentiation from existing entries like Guava and java-util.

Written for commit a0f9636. Summary will update on new commits.

View guided diff

@cubic-dev-ai cubic-dev-ai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

3 issues found across 1 file

Prompt for AI agents (unresolved issues)

Check if these issues are valid — if so, understand the root cause of each and fix them. When an issue isn't valid or won't be fixed in this PR, reply in its thread with the reason and then resolve the thread. If appropriate, use sub-agents to investigate and fix each issue separately.


<file name="README.md">

<violation number="1" location="README.md:2301">
P3: This wording implies all 28 modules are zero-dependency, while the PR description limits that claim to the core. Change it to say the toolkit has a zero-dependency core.</violation>

<violation number="2" location="README.md:2301">
P2: This entry was added to the generated `README.md` instead of the source of truth. `README.md` is generated from `README_SOURCE.md` by `.github/scripts/GenerateReadme.java`, and the contributor guidelines state contributions must be made in `README_SOURCE.md` (`README_SOURCE.md` lines 1251–1252 still list only spring-chain-of-responsibility followed by Underscore-java — no suretool entry exists there). As submitted, the change will be lost on the next regeneration and the count bump to 18 projects won't hold. Move the entry and the count update (via the generator) to `README_SOURCE.md`.</violation>

<violation number="3" location="README.md:2301">
P3: This description is promotional rather than neutral, contrary to the entry requirement in `README_SOURCE.md` ("A concise, neutral description..."). "JDK 25-first" and especially "benchmarked at par with Guava and Apache Commons" are marketing claims not present in any sibling entry (compare "Port of Underscore.js functions", "In-memory file system"). Drop the benchmark claim and keep the description factual and concise.</violation>
</file>

Reply to a comment to ask cubic a question or push back. It learns from your replies.

View guided diff | Re-trigger cubic

Comment thread README.md

> **[spring-chain-of-responsibility](https://github.com/evmetatron/spring-chain-of-responsibility)** <kbd>★ 3</kbd> <kbd>Apache-2.0</kbd> 🟢<br>Autowires Spring Boot beans into a Chain of Responsibility via `@Order` and `@ChainNext`, no manual wiring.

> **[suretool](https://github.com/TASure/suretool)** <kbd>★ 0</kbd> <kbd>Apache-2.0</kbd> 🟢<br>JDK 25-first, zero-dependency Java utility toolkit (28 modules) covering strings, collections, IO, JSON, crypto, caching, cron scheduling and POI documents — with virtual-thread-first concurrency and fluent Result/Option API, benchmarked at par with Guava and Apache Commons.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2: This entry was added to the generated README.md instead of the source of truth. README.md is generated from README_SOURCE.md by .github/scripts/GenerateReadme.java, and the contributor guidelines state contributions must be made in README_SOURCE.md (README_SOURCE.md lines 1251–1252 still list only spring-chain-of-responsibility followed by Underscore-java — no suretool entry exists there). As submitted, the change will be lost on the next regeneration and the count bump to 18 projects won't hold. Move the entry and the count update (via the generator) to README_SOURCE.md.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. When an issue isn't valid or won't be fixed in this PR, reply in its thread with the reason and then resolve the thread. At README.md, line 2301:

<comment>This entry was added to the generated `README.md` instead of the source of truth. `README.md` is generated from `README_SOURCE.md` by `.github/scripts/GenerateReadme.java`, and the contributor guidelines state contributions must be made in `README_SOURCE.md` (`README_SOURCE.md` lines 1251–1252 still list only spring-chain-of-responsibility followed by Underscore-java — no suretool entry exists there). As submitted, the change will be lost on the next regeneration and the count bump to 18 projects won't hold. Move the entry and the count update (via the generator) to `README_SOURCE.md`.</comment>

<file context>
@@ -2298,6 +2298,8 @@ _Libraries which provide general utility functions._
 
 > **[spring-chain-of-responsibility](https://github.com/evmetatron/spring-chain-of-responsibility)** <kbd>★ 3</kbd> <kbd>Apache-2.0</kbd> 🟢<br>Autowires Spring Boot beans into a Chain of Responsibility via `@Order` and `@ChainNext`, no manual wiring.
 
+> **[suretool](https://github.com/TASure/suretool)** <kbd>★ 0</kbd> <kbd>Apache-2.0</kbd> 🟢<br>JDK 25-first, zero-dependency Java utility toolkit (28 modules) covering strings, collections, IO, JSON, crypto, caching, cron scheduling and POI documents — with virtual-thread-first concurrency and fluent Result/Option API, benchmarked at par with Guava and Apache Commons.
+
 > **[Underscore-java](https://github.com/javadev/underscore-java)** <kbd>★ 551</kbd> <kbd>MIT</kbd> 🟢<br>Port of Underscore.js functions.
</file context>

Comment thread README.md

> **[spring-chain-of-responsibility](https://github.com/evmetatron/spring-chain-of-responsibility)** <kbd>★ 3</kbd> <kbd>Apache-2.0</kbd> 🟢<br>Autowires Spring Boot beans into a Chain of Responsibility via `@Order` and `@ChainNext`, no manual wiring.

> **[suretool](https://github.com/TASure/suretool)** <kbd>★ 0</kbd> <kbd>Apache-2.0</kbd> 🟢<br>JDK 25-first, zero-dependency Java utility toolkit (28 modules) covering strings, collections, IO, JSON, crypto, caching, cron scheduling and POI documents — with virtual-thread-first concurrency and fluent Result/Option API, benchmarked at par with Guava and Apache Commons.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P3: This wording implies all 28 modules are zero-dependency, while the PR description limits that claim to the core. Change it to say the toolkit has a zero-dependency core.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. When an issue isn't valid or won't be fixed in this PR, reply in its thread with the reason and then resolve the thread. At README.md, line 2301:

<comment>This wording implies all 28 modules are zero-dependency, while the PR description limits that claim to the core. Change it to say the toolkit has a zero-dependency core.</comment>

<file context>
@@ -2298,6 +2298,8 @@ _Libraries which provide general utility functions._
 
 > **[spring-chain-of-responsibility](https://github.com/evmetatron/spring-chain-of-responsibility)** <kbd>★ 3</kbd> <kbd>Apache-2.0</kbd> 🟢<br>Autowires Spring Boot beans into a Chain of Responsibility via `@Order` and `@ChainNext`, no manual wiring.
 
+> **[suretool](https://github.com/TASure/suretool)** <kbd>★ 0</kbd> <kbd>Apache-2.0</kbd> 🟢<br>JDK 25-first, zero-dependency Java utility toolkit (28 modules) covering strings, collections, IO, JSON, crypto, caching, cron scheduling and POI documents — with virtual-thread-first concurrency and fluent Result/Option API, benchmarked at par with Guava and Apache Commons.
+
 > **[Underscore-java](https://github.com/javadev/underscore-java)** <kbd>★ 551</kbd> <kbd>MIT</kbd> 🟢<br>Port of Underscore.js functions.
</file context>
Suggested change
> **[suretool](https://github.com/TASure/suretool)** <kbd>★ 0</kbd> <kbd>Apache-2.0</kbd> 🟢<br>JDK 25-first, zero-dependency Java utility toolkit (28 modules) covering strings, collections, IO, JSON, crypto, caching, cron scheduling and POI documents — with virtual-thread-first concurrency and fluent Result/Option API, benchmarked at par with Guava and Apache Commons.
> **[suretool](https://github.com/TASure/suretool)** <kbd>★ 0</kbd> <kbd>Apache-2.0</kbd> 🟢<br>JDK 25-first Java utility toolkit with a zero-dependency core (28 modules) covering strings, collections, IO, JSON, crypto, caching, cron scheduling and POI documents — with virtual-thread-first concurrency and fluent Result/Option API, benchmarked at par with Guava and Apache Commons.

Comment thread README.md

> **[spring-chain-of-responsibility](https://github.com/evmetatron/spring-chain-of-responsibility)** <kbd>★ 3</kbd> <kbd>Apache-2.0</kbd> 🟢<br>Autowires Spring Boot beans into a Chain of Responsibility via `@Order` and `@ChainNext`, no manual wiring.

> **[suretool](https://github.com/TASure/suretool)** <kbd>★ 0</kbd> <kbd>Apache-2.0</kbd> 🟢<br>JDK 25-first, zero-dependency Java utility toolkit (28 modules) covering strings, collections, IO, JSON, crypto, caching, cron scheduling and POI documents — with virtual-thread-first concurrency and fluent Result/Option API, benchmarked at par with Guava and Apache Commons.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P3: This description is promotional rather than neutral, contrary to the entry requirement in README_SOURCE.md ("A concise, neutral description..."). "JDK 25-first" and especially "benchmarked at par with Guava and Apache Commons" are marketing claims not present in any sibling entry (compare "Port of Underscore.js functions", "In-memory file system"). Drop the benchmark claim and keep the description factual and concise.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. When an issue isn't valid or won't be fixed in this PR, reply in its thread with the reason and then resolve the thread. At README.md, line 2301:

<comment>This description is promotional rather than neutral, contrary to the entry requirement in `README_SOURCE.md` ("A concise, neutral description..."). "JDK 25-first" and especially "benchmarked at par with Guava and Apache Commons" are marketing claims not present in any sibling entry (compare "Port of Underscore.js functions", "In-memory file system"). Drop the benchmark claim and keep the description factual and concise.</comment>

<file context>
@@ -2298,6 +2298,8 @@ _Libraries which provide general utility functions._
 
 > **[spring-chain-of-responsibility](https://github.com/evmetatron/spring-chain-of-responsibility)** <kbd>★ 3</kbd> <kbd>Apache-2.0</kbd> 🟢<br>Autowires Spring Boot beans into a Chain of Responsibility via `@Order` and `@ChainNext`, no manual wiring.
 
+> **[suretool](https://github.com/TASure/suretool)** <kbd>★ 0</kbd> <kbd>Apache-2.0</kbd> 🟢<br>JDK 25-first, zero-dependency Java utility toolkit (28 modules) covering strings, collections, IO, JSON, crypto, caching, cron scheduling and POI documents — with virtual-thread-first concurrency and fluent Result/Option API, benchmarked at par with Guava and Apache Commons.
+
 > **[Underscore-java](https://github.com/javadev/underscore-java)** <kbd>★ 551</kbd> <kbd>MIT</kbd> 🟢<br>Port of Underscore.js functions.
</file context>

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant