Ohhnews

分类导航

DZone Java

全面拥抱JVM 25虚拟线程

AngularAndSpring项目已从Spring Reactor重构为使用JDK 25和虚拟线程的Spring阻塞式API。旧架构采用Reactor是为了在高负载下高效利用操作系统线程和内存,但响应式编程风格随复杂度增加而难以阅读,堆栈跟踪也难以排查错误。JDK 25虚拟线程改变了权衡:操作系统线程仅在需要时使用,虚拟线程可从OS线程卸载,内存占用极低,少量OS线程即可支撑大量虚拟线程,且synchronized支持问题已修复,使JVM原生具备响应式框架的可扩展性和效率。新架构使用Spring WebMVC提供阻塞式REST端点,Spring RestClient调用外部REST服务,Spring Data MongoDB访问数据库,并通过spring.threads.virtual.enabled=true启用虚拟线程。REST端点直接返回预期类型,不再使用Reactor包装类型;长时间重算小时和日线报价时使用独立的虚拟线程池,避免阻塞用户请求。结论是,许多使用响应式编程的理由已消失,阻塞式模型更易实现和调试,Spring Data MongoDB也让数据库访问更简单。
#jdk 25#虚拟线程#spring#响应式编程#阻塞式api
$ more
Jetbrains Blog

提升流水线效率:Qodana 六大 CI/CD 集成方案

JetBrains 发布文章介绍 Qodana 与主流 CI/CD 平台的六大集成方案,包括 GitHub Actions、GitLab、TeamCity、Jenkins、Azure Pipelines 和 CircleCI。文章指出,将静态代码分析嵌入 CI/CD 流水线可实践“左移”策略,在提交和合并请求阶段自动发现代码质量问题,并设置质量门禁,避免问题代码进入生产环境。各集成方式分别提供原生组件、Docker 或插件支持,优缺点涉及配置复杂度、成本、平台兼容性与报告能力。Qodana 将 IntelliJ IDEA 的检查能力扩展至流水线,帮助团队在不改变现有工作流的情况下统一代码标准并持续跟踪质量趋势。
#qodana#ci/cd#静态代码分析#代码质量#jetbrains
$ more
Jetbrains Blog

JetBrains Air云端Agent沙箱机制解析

JetBrains Air发布云端Agent预览版,允许在JetBrains托管的云环境中远程运行AI Agent,使其在不依赖本地机器的情况下获得隔离的工作空间,目前面向组织用户开放。文章阐述Agent沙箱的意义:现代AI Agent能够执行代码、调用工具并自主行动,若无限制地访问宿主系统、网络和敏感数据,可能造成意外的系统改动、数据泄露或被利用的风险,因此需要通过最小权限、资源限制与审计追踪划定安全边界。文中归纳了五种运行方式——本地工作区、Git工作树、SSH、Docker与云端,并对比其默认隔离性和配置成本。Air采用与Docker Sandboxes类似的思路:每个任务在云端启动独立VM,Agent运行于其中的Docker容器内,VM视为不可信且不在任务间复用,容器所有连接经由VM内的代理转发,默认仅允许访问预先设定的可信源码管理与包仓库域名,也可按需增删域名或完全断网。密钥加密存储并以环境变量形式注入,团队成员可使用共享密钥而无需看到其值,任务始终遵循开发者自身的仓库权限。
#jetbrains air#ai代理#沙箱隔离#云端执行#安全防护
$ more
Jetbrains Blog

KotlinConf回顾:Verifone架构师谈Kotlin在关键支付系统中的可靠性实践

在KotlinConf 2026上,Verifone架构师Yuri Geronimus分享了如何利用Kotlin的类型系统提升关键支付系统的可靠性。其核心方法是用监管和卡组织规范中的原始词汇编写代码,并让编译器强制检查,而非依赖工程师纪律。文章列举了支付领域因字段缺失、可空性、敏感数据泄露、状态误用等引发的真实事故,并给出十种模式:值类区分ID、边界校验工厂、非空类型、默认脱敏、状态类、不可变与命名转换、删除else分支、选择合适的协程作用域、将超时建模为领域结果、以及用DSL编写监管可读的认证测试。实践效果包括开发速度提升2.7倍、认证首次通过且仅一个缺陷、代码库缩小约30%、新人更快上手。迁移方面,他反对重写,主张并行推进优化现有代码、验收测试驱动、适应度函数和增量迁移。企业采用需作为投资决策,并配套运营模式。
#kotlin#支付系统#类型安全#编译器#金融科技
$ more
Jetbrains Blog

Lauterbach与JetBrains宣布在CLion IDE中集成TRACE32调试工具

2026年10月14日,德国Hoehenkirchen与荷兰阿姆斯特丹消息,Lauterbach与JetBrains宣布将TRACE32调试工具集成至JetBrains旗下专业C/C++开发工具CLion。该集成基于调试适配器协议(DAP),通过TRACE32 Debug Adapter将CLion与TRACE32相连,使嵌入式开发者可直接在CLion中控制程序执行、单步调试和查看变量,由TRACE32负责与目标硬件的通信,从而将代码编辑、导航与硬件调试统一到同一工作流中。集成支持两种使用方式:可从CLion启动新的TRACE32 PowerView会话,并通过脚本配置连接与初始化目标;也可附加到已有的TRACE32实例。使用条件为CLion 2026.2.4或更高版本、TRACE32 PowerView 09.2026(或内部版本195402)以及TRACE32 Debug Adapter 0.1.2或更高版本,详细配置示例见Lauterbach知识库。Lauterbach的TRACE32产品组合覆盖从流片前开发、原型验证到测试与现场分析的完整产品生命周期,结合PowerView调试与跟踪软件及PowerDebug、PowerTrace硬件模块,帮助工程师分析系统行为、评估性能并测量代码覆盖率。双方表示,该集成让开发者能在编写代码的同一环境中定位问题并验证修改。JetBrains与Lauterbach将于2026年10月27日14:00(中欧时间)联合举办免费网络研讨会,演示该集成功能。
#trace32#clion#嵌入式开发#硬件调试#jetbrains
$ more
foojay

2026年10月Azul Payara版本发布:安全修复与社区版更新

Payara发布2026年10月更新,包含社区版7.2026.10以及Azul Payara Server和Micro 7.5.0、6.43.0、5.92.0、4.1.2.191.60。社区版不再要求SSH节点使用提升权限,新增delete-jvm-option和delete-system-properties命令,并修复域重启后应用部署失败、并发部署失败、REST Client部署、JAX-RS客户端泄漏等问题。Azul Payara各分支均修复三个安全问题:Eclipse GlassFish远程代码执行(CVE-2026-2587/2586)、JSFTemplating远程代码执行和管理控制台XSS。7.5.0引入CDI DevMode、SSH提供程序和Windows SSH支持;6.43.0继续Jakarta EE 10;5.92.0保留Jakarta EE 8和javax命名空间;4.1.2.191.60获得安全修复和并发部署修复。官方建议升级到各分支最新版本。
#payara#azul#安全更新#应用服务器#jakarta ee
$ more
foojay

我用Java与Spring Boot构建AI代码审查器的经验总结

本文介绍使用Java 17+和Spring Boot构建自托管AI代码审查应用CodeGuard AI的经验。该应用面向GitHub Pull Request,支持OpenAI、Gemini和Ollama。作者指出,真正的难点不是调用大模型,而是构建围绕模型的工作流:获取PR元数据、变更文件和diff,注入审查指令,解析模型输出为结构化发现,并按严重性、风险和置信度排序,最后将结果回写到GitHub。AI审查应作为初审而非最终决策,业务逻辑、安全、架构等仍需人工判断。Spring Boot负责集成、编排、持久化和API。自托管设计让开发者可在自有基础设施或本地运行模型。核心启示是:AI代码审查并非简单的PR→LLM→评审,工程化上下文、指令与结构化处理才能把AI响应变成可用的开发者工具。
#ai代码审查#java#spring boot#github#多ai提供商
$ more
foojay

每个职位一个还是两个嵌入?在Spring Boot招聘门户中评测语义搜索

作者在Spring Boot招聘门户中为每个职位存储了两种嵌入向量:完整职位描述与仅要求部分,并用288个合成职位、40条查询进行评测。结果显示,语义搜索的Precision@5远高于关键词搜索;在纯语义模式下,仅要求向量的Precision@5比完整描述高4.5个百分点,取两者最大值的MRR@10最好。但在实际采用的混合搜索中,关键词加分使两种策略差异几乎消失。作者还发现0.55相似度阈值并非真正 cutoff,无关查询最高可达0.744,提高到0.75虽能过滤无效结果,却严重损害召回。结论是:在Java/Spring Boot中也能实现并评测语义搜索;应测量嵌入内容,混合搜索会掩盖差异,相似度分数不是概率。
#语义搜索#文本嵌入#spring boot#招聘门户#向量检索
$ more
Jetbrains Blog

AGNTCon Europe见闻:AI智能体的信任、治理与审查瓶颈

JetBrains在阿姆斯特丹办公室举办Agentic AI Foundation社区聚会,为AGNTCon + MCPCon Europe预热,活动爆满并设候补名单。讨论聚焦开放基金会中谁来决定项目方向:赞助让项目存活,但决策权属于持续公开做事、赢得信任的人。GitLab的Nick Veenhof、VOLT Datacenters的Alessandro Vozza、JetBrains的Miguel Luna等参与。会议另一焦点是AI生成提案与代码带来的审查瓶颈。HumanLayer的Dexter Horthy在主题演讲中认为无人值守智能体代码会随时间恶化,团队仍需先规划、阅读代码,并把智能体代码审查和回归测试纳入流程。Nick Veenhof还分享13个专用智能体加一个编排器的失败经验:测试通过但底层接线损坏、后台任务停摆46天、智能体编造80个数据点。智能体连接、追踪和安全标准正在开放工作组中制定,需要更多人持续参与。JetBrains参与Agentic AI Foundation,并在会后发布JetBrains Air。
#ai智能体#开源治理#代码审查#jetbrains#开放基金会
$ more
DZone Java

“在我机器上能跑”是架构问题

文章认为,“在我机器上能跑”并非调试笑话,而是架构缺陷:系统的一部分行为存在于版本控制之外。源码相同,运行时版本、CPU架构、文件系统语义、语言区域、时区、原生库、证书、环境变量、依赖解析和构建工具等仍可不同;这些隐含输入让开发机成为未记录依赖,说明系统缺乏完整、可复现的构建运行条件定义。可复现构建要求源码与声明输入形成可独立验证的产物路径,机器本身也应视为输入。应显式声明时区、语言区域、编码等默认值,用锁定依赖、受控工具链、固定基础镜像摘要、多平台构建和沙箱/密封构建减少漂移。容器缩小环境边界但不消除差异。开发环境应纳入源码控制,运行时身份需记录并验证;通过CI测试支持的变量、移除不支持的变量,最终把环境假设声明、版本化、测试和可观测,使环境特定故障成为可追踪的工程缺陷。
#可复现构建#环境一致性#软件架构#依赖管理#容器化
$ more