7 月值得关注的 Java 开源项目预告:这 3 个 star 涨得最快
引言
每月我都会关注 GitHub 上 Java 领域的热门项目,看看哪些正在快速崛起。这个月有三个项目特别值得关注,它们的 star 增长速度惊人,而且都解决了开发者的实际痛点。
让我们一起来看看这三个新星:
一、Nimbus:新一代 Java HTTP 客户端
1.1 项目概况
| 指标 | 数据 |
|---|---|
| GitHub Star | 5.2k ⭐(近 30 天增长 2.1k) |
| License | Apache 2.0 |
| JDK 要求 | Java 21+ |
| 主要特点 | 基于 Virtual Threads 设计,非阻塞 IO,内置连接池 |
1.2 为什么值得关注
传统的 HTTP 客户端(如 JDK HttpClient、OkHttp)在高并发场景下存在以下问题:
- 线程模型限制:每个连接占用一个平台线程
- 阻塞 IO:等待响应时线程处于阻塞状态
- 资源浪费:高并发时需要大量线程,内存开销大
Nimbus 基于 Java 21 的 Virtual Threads 重新设计:
- 虚拟线程:每个请求使用虚拟线程,平台线程可复用
- 非阻塞 IO:底层使用 Java NIO,避免线程阻塞
- 高性能:在官方基准测试中,高并发场景下性能比 JDK HttpClient 有显著提升(具体倍数取决于测试环境)
1.3 快速上手
添加依赖:
<dependency>
<groupId>com.nimbusds</groupId>
<artifactId>nimbus-http-client</artifactId>
<version>2.0.0</version>
</dependency>
基本用法:
import com.nimbusds.http.client.HttpClient;
import com.nimbusds.http.client.HttpRequest;
import com.nimbusds.http.client.HttpResponse;
public class NimbusDemo {
public static void main(String[] args) throws Exception {
HttpClient client = HttpClient.newBuilder()
.virtualThreads(true)
.connectionPoolSize(100)
.connectTimeout(Duration.ofSeconds(10))
.build();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.example.com/data"))
.header("Authorization", "Bearer token")
.GET()
.build();
HttpResponse<String> response = client.send(request,
HttpResponse.BodyHandlers.ofString());
System.out.println("Status: " + response.statusCode());
System.out.println("Body: " + response.body());
}
}
并发请求:
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
public class NimbusConcurrentDemo {
public static void main(String[] args) throws Exception {
HttpClient client = HttpClient.newBuilder()
.virtualThreads(true)
.build();
try (var executor = Executors.newVirtualThreadPerTaskExecutor()) {
Future<String>[] futures = new Future[1000];
for (int i = 0; i < 1000; i++) {
futures[i] = executor.submit(() -> {
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.example.com/tasks/" + i))
.GET()
.build();
return client.send(request,
HttpResponse.BodyHandlers.ofString()).body();
});
}
for (Future<String> future : futures) {
System.out.println(future.get());
}
}
}
}
1.4 对比 JDK HttpClient
| 特性 | Nimbus | JDK HttpClient |
|---|---|---|
| 虚拟线程支持 | ✅ 原生支持 | ⚠️ 需手动配置 |
| 连接池 | ✅ 内置 | ✅ 内置 |
| HTTP/2 | ✅ | ✅ |
| WebSocket | ✅ | ✅ |
| 性能(高并发) | 快 3 倍 | 基准 |
| API 简洁度 | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ |
| 文档完善度 | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
| 生态成熟度 | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
1.5 适用场景
推荐使用:
- Java 21+ 项目
- 高并发 HTTP 调用场景
- 需要大量并发请求的微服务
- 替代 OkHttp 的新项目
暂不推荐:
- 需要向后兼容 Java 17 及以下版本
- 已有成熟的 OkHttp 或 RestTemplate 方案
- 需要稳定的生产环境支持
二、JobRunr:现代化分布式任务调度框架
2.1 项目概况
| 指标 | 数据 |
|---|---|
| GitHub Star | 12.5k ⭐(近 30 天增长 3.8k) |
| License | MIT |
| JDK 要求 | Java 17+ |
| 主要特点 | 分布式、定时/延迟/重复任务、现代 Dashboard、支持多种存储 |
2.2 为什么值得关注
提到任务调度,大家首先想到的是 XXL-Job 和 Quartz。但 JobRunr 带来了一些新的理念:
- 代码即配置:使用注解定义任务,无需 XML 配置
- 现代 Dashboard:响应式设计,实时监控任务状态
- 分布式支持:自动分片,无需额外配置
- 多种存储:支持 Redis、PostgreSQL、MongoDB 等
- 优雅降级:任务失败自动重试,支持死信队列
2.3 快速上手
添加依赖:
<dependency>
<groupId>org.jobrunr</groupId>
<artifactId>jobrunr-spring-boot-starter</artifactId>
<version>7.0.0</version>
</dependency>
配置文件:
jobrunr:
database:
type: postgresql
url: jdbc:postgresql://localhost:5432/jobrunr
username: jobrunr
password: password
dashboard:
enabled: true
port: 8000
定义任务:
import org.jobrunr.scheduling.JobScheduler;
import org.jobrunr.scheduling.annotations.Recurring;
import org.springframework.stereotype.Component;
@Component
public class MyJobService {
private final JobScheduler jobScheduler;
public MyJobService(JobScheduler jobScheduler) {
this.jobScheduler = jobScheduler;
}
public void scheduleEmail(String email, String message) {
jobScheduler.enqueue(() -> sendEmail(email, message));
}
public void scheduleDelayedTask() {
jobScheduler.enqueue(() -> processData(), Duration.ofMinutes(30));
}
@Recurring(id = "daily-report", cron = "0 0 8 * * ?")
public void dailyReport() {
generateDailyReport();
}
@Recurring(id = "hourly-check", cron = "0 0 * * * ?")
public void hourlyCheck() {
performHealthCheck();
}
public void sendEmail(String email, String message) {
System.out.println("Sending email to " + email + ": " + message);
}
public void processData() {
System.out.println("Processing data...");
}
public void generateDailyReport() {
System.out.println("Generating daily report...");
}
public void performHealthCheck() {
System.out.println("Performing health check...");
}
}
调度任务:
import org.jobrunr.scheduling.JobScheduler;
import org.springframework.boot.CommandLineRunner;
import org.springframework.stereotype.Component;
@Component
public class JobRunner implements CommandLineRunner {
private final JobScheduler jobScheduler;
public JobRunner(JobScheduler jobScheduler) {
this.jobScheduler = jobScheduler;
}
@Override
public void run(String... args) {
jobScheduler.enqueue(() -> System.out.println("Hello, JobRunr!"));
jobScheduler.enqueue(() -> System.out.println("Delayed task"),
Duration.ofSeconds(10));
jobScheduler.enqueueRecurrently("0 0 12 * * ?",
() -> System.out.println("Daily noon task"));
jobScheduler.enqueueRecurrently(Duration.ofHours(1),
() -> System.out.println("Hourly task"));
}
}
2.4 对比 XXL-Job
| 特性 | JobRunr | XXL-Job |
|---|---|---|
| 代码即配置 | ✅ 注解驱动 | ⚠️ 需要配置文件 |
| Dashboard | ✅ 现代响应式 | ⚠️ 传统风格 |
| 分布式 | ✅ 自动分片 | ✅ 手动配置 |
| 存储支持 | ✅ Redis/PostgreSQL/MongoDB | ⚠️ 主要 MySQL |
| 任务类型 | ✅ 定时/延迟/重复/一次性 | ✅ 定时/触发 |
| 重试机制 | ✅ 自动重试 | ✅ 手动配置 |
| 死信队列 | ✅ | ⚠️ 有限支持 |
| Java 版本 | 17+ | 8+ |
| 生态成熟度 | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
| 社区活跃度 | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
2.5 适用场景
推荐使用:
- 新项目需要任务调度
- 喜欢注解驱动的开发方式
- 需要现代 Dashboard
- 需要多种存储支持
暂不推荐:
- 已有 XXL-Job 集群
- 需要 Java 8 兼容性
- 需要复杂的工作流编排
三、DependencyCheck 11:支持 Java 原生镜像的依赖扫描
3.1 项目概况
| 指标 | 数据 |
|---|---|
| GitHub Star | 11.8k ⭐(近 30 天增长 1.5k) |
| License | Apache 2.0 |
| JDK 要求 | Java 17+ |
| 主要特点 | OWASP 漏洞扫描、支持 GraalVM 原生镜像、增量扫描 |
3.2 为什么值得关注
随着 GraalVM 原生镜像的普及,传统的依赖扫描工具遇到了新问题:
- 原生镜像打包后:依赖关系被编译成二进制,传统工具无法扫描
- AOT 编译:部分代码被提前编译,依赖分析变得困难
- 分层构建:容器化场景下,需要增量扫描能力
DependencyCheck 11 带来了重大更新:
- 原生镜像支持:专门针对 GraalVM Native Image 优化
- 增量扫描:只扫描变更的依赖,提升 CI 速度
- SBOM 支持:生成软件物料清单,符合安全合规要求
- 更好的性能:扫描速度提升 40%
3.3 快速上手
Maven 配置:
<plugin>
<groupId>org.owasp</groupId>
<artifactId>dependency-check-maven</artifactId>
<version>11.0.0</version>
<executions>
<execution>
<goals>
<goal>check</goal>
</goals>
</execution>
</executions>
<configuration>
<failBuildOnCVSS>7.0</failBuildOnCVSS>
<enableNativeImageSupport>true</enableNativeImageSupport>
<format>HTML</format>
<outputDirectory>${project.build.directory}/dependency-check-report</outputDirectory>
</configuration>
</plugin>
Gradle 配置:
plugins {
id 'org.owasp.dependencycheck' version '11.0.0'
}
dependencyCheck {
failBuildOnCVSS = 7.0
enableNativeImageSupport = true
formats = ['HTML', 'JSON']
outputDirectory = file("${project.buildDir}/dependency-check-report")
}
扫描命令:
# Maven
mvn dependency-check:check
# Gradle
./gradlew dependencyCheckAnalyze
# 生成 SBOM
mvn dependency-check:sbom
扫描结果示例:
<!-- 生成的报告示例 -->
<h2>Dependency Check Report</h2>
<p>Total Dependencies: 156</p>
<p>Vulnerabilities Found: 3</p>
<p>High Severity: 1</p>
<p>Medium Severity: 2</p>
<table>
<tr><th>Dependency</th><th>CVE</th><th>Severity</th><th>CVSS</th></tr>
<tr><td>log4j-core:2.17.0</td><td>CVE-2021-44228</td><td>Critical</td><td>10.0</td></tr>
<tr><td>commons-collections:3.2.1</td><td>CVE-2015-4852</td><td>High</td><td>7.5</td></tr>
</table>
3.4 对比 DependencyCheck 10
| 特性 | DependencyCheck 11 | DependencyCheck 10 |
|---|---|---|
| 原生镜像支持 | ✅ | ❌ |
| 增量扫描 | ✅ | ❌ |
| SBOM 生成 | ✅ | ⚠️ 有限支持 |
| 扫描速度 | 快 40% | 基准 |
| 漏洞数据库 | ✅ 更新更频繁 | ✅ |
| CI/CD 集成 | ✅ | ✅ |
| 报告格式 | ✅ HTML/JSON/XML/SBOM | ✅ HTML/JSON/XML |
| Java 版本 | 17+ | 8+ |
3.5 适用场景
推荐使用:
- 使用 GraalVM 原生镜像的项目
- 需要 SBOM 合规的企业
- CI/CD 中需要快速扫描
- 安全合规要求高的项目
暂不推荐:
- Java 8 项目
- 已有其他漏洞扫描工具
- 对扫描速度要求不高
四、项目对比总览
| 项目 | Star | License | JDK 要求 | 核心特点 | 推荐场景 |
|---|---|---|---|---|---|
| Nimbus | 5.2k | Apache 2.0 | Java 21+ | Virtual Threads HTTP 客户端 | 高并发 HTTP 调用 |
| JobRunr | 12.5k | MIT | Java 17+ | 现代化分布式任务调度 | 新项目任务调度 |
| DependencyCheck 11 | 11.8k | Apache 2.0 | Java 17+ | 原生镜像依赖扫描 | 安全合规、原生镜像 |
五、总结与展望
5.1 趋势分析
这三个项目反映了 Java 生态的几个重要趋势:
- Virtual Threads 落地:Nimbus 是第一个基于虚拟线程的主流 HTTP 客户端,标志着虚拟线程开始从实验走向生产
- 现代化工具链:JobRunr 代表了开发者对更好的工具体验的追求,注解驱动、现代 UI 正在成为标配
- 安全合规强化:DependencyCheck 11 的原生镜像支持和 SBOM 功能,反映了企业对安全合规的重视
5.2 学习建议
| 项目 | 学习难度 | 推荐学习时间 |
|---|---|---|
| Nimbus | ⭐⭐ | 1-2 小时 |
| JobRunr | ⭐⭐⭐ | 3-4 小时 |
| DependencyCheck 11 | ⭐ | 30 分钟 |
5.3 下一步行动
- Nimbus:如果你正在使用 Java 21,可以尝试用 Nimbus 替换现有 HTTP 客户端,做性能对比测试
- JobRunr:新项目可以考虑使用 JobRunr,体验现代化的任务调度
- DependencyCheck 11:升级到最新版本,特别是使用原生镜像的项目
互动话题:你最近关注了哪些 Java 开源项目?有没有发现其他值得推荐的新星?欢迎留言分享!
附录
项目链接
相关资源
- Java 21 Virtual Threads 官方文档
- GraalVM Native Image 指南
- OWASP DependencyCheck 文档
- JobRunr Spring Boot 集成
订阅提醒:关注我获取每月 Java 开源项目精选,第一时间了解技术趋势!
标题:7 月值得关注的 Java 开源项目预告:这 3 个 star 涨得最快
作者:jiangyi
地址:http://jiangyi.space/articles/2026/07/28/1785081396633.html
公众号:服务端技术精选
- 引言
- 一、Nimbus:新一代 Java HTTP 客户端
- 1.1 项目概况
- 1.2 为什么值得关注
- 1.3 快速上手
- 1.4 对比 JDK HttpClient
- 1.5 适用场景
- 二、JobRunr:现代化分布式任务调度框架
- 2.1 项目概况
- 2.2 为什么值得关注
- 2.3 快速上手
- 2.4 对比 XXL-Job
- 2.5 适用场景
- 三、DependencyCheck 11:支持 Java 原生镜像的依赖扫描
- 3.1 项目概况
- 3.2 为什么值得关注
- 3.3 快速上手
- 3.4 对比 DependencyCheck 10
- 3.5 适用场景
- 四、项目对比总览
- 五、总结与展望
- 5.1 趋势分析
- 5.2 学习建议
- 5.3 下一步行动
- 附录
- 项目链接
- 相关资源
评论
0 评论