Ohhnews

分类导航

InfoQ Java

无消息代理的分布式Spring Batch:用共享数据库作为协调平面

文章介绍一种不依赖消息代理的分布式Spring Batch分区方案:把Spring Batch本就必需的共享关系型数据库同时用作协调平面,无需Kafka、RabbitMQ等中间件。设计上用BATCH_NODES节点注册表、BATCH_PARTITIONS分区表和BATCH_JOB_COORDINATION协调表承载全部集群状态,按存活节点数动态决定分区规模;由启动作业的节点担任该次执行的master,不存在常驻协调者;worker通过带状态与节点条件的compare-and-set更新领取并推进分区,避免重复执行;节点故障依靠心跳做两阶段处理,先标记不可达,超过宽限期后移除并重新分配其未完成的可转移分区。正确性以契约为准:可转移任务保证至少一次、须幂等,不可转移任务至多一次、失败即中止,分区永不静默丢失。该方案适用于约2到20个节点的中小集群,瓶颈是数据库竞争,超大规模或亚秒级延迟需求仍应选用消息代理。
#spring batch#分布式批处理#数据库协调#容错机制#任务分区
$ more
InfoQ Java

TornadoVM 7 使 Java 应用能够运行 GPU 原生工作负载

TornadoVM 是一个面向 Java 的开源异构编程框架,已发布 7.0 版本。它可在多核 CPU 和 GPU 上自动加速 Java 程序,并提供丰富的 Java GPU 编程生态,可兼容 Temurin、Red Hat OpenJDK、Corretto、Oracle、GraalVM 和 Zulu 等主流 JDK 发行版。
#tornadovm#java#gpu计算#开源框架#异构计算
$ more
foojay

Java Stream Gatherers:从内置模式到自定义管道机制

文章介绍Java Stream Gatherers(JEP 485)这一在JDK 24定稿的Stream API新特性,它允许开发者创建有状态的自定义中间操作,弥补map、filter、flatMap等内置操作在分组、滑动窗口、累计扫描和并发映射等场景的不足。文章演示windowFixed、windowSliding、scan、fold和mapConcurrent等内置Gatherer的用法,并讲解Gatherer<T,A,R>的组成、initializer、integrator、combiner、finisher四个构建块、andThen组合方式及自定义distinctBy实现。最后讨论并行流下的combiner、贪婪与短路integrator、状态管理和线程安全,并对比Gatherer与Collector的定位差异。
#java#stream gatherers#jdk 24#自定义中间操作#并行处理
$ more
foojay

BxPlaywright 1.0发布:真实浏览器、流畅BoxLang,专为AI智能体打造

Ortus Solutions发布bx-playwright 1.0,这是基于Microsoft Playwright、面向BoxLang的流畅浏览器自动化与测试工具,并与TestBox 7.2、ColdBox 8.3同步推出,将真实浏览器测试引入现有测试规格。它支持Chromium、Firefox和WebKit,可执行完整用户旅程、生成PDF和截图,并让AI智能体通过真实浏览器验证其构建的BoxLang应用。核心特性包括链式API、智能选择器、自动重试断言、设备配置、网络拦截与API模拟、视觉回归、WCAG无障碍审计、页面对象、渲染、自动化脚本及CLI。面向AI智能体提供紧凑快照与元素引用、BoxLang AI工具集、Playwright MCP、Agent Skills、内联API帮助和结构化错误。项目采用Apache 2.0开源许可,要求BoxLang 1.17+和Java 21+。
#bxplaywright#boxlang#浏览器自动化#ai智能体#软件测试
$ more
foojay

BoxLang 1.18.0 发布:面向多云、集群节点与AI智能体

BoxLang 1.18.0 发布,新增 Azure Functions 运行时,使同一套处理程序契约可部署到 AWS Lambda、Google Cloud Functions 和 Azure,降低跨云锁定风险。该版本为集群定时任务引入服务器固定与分布式锁,确保任务在单个节点执行,并增强崩溃恢复与可观测性。CLI 支持项目级配置发现和 JSON 格式调度报告,更便于自动化脚本与 AI 智能体使用。此外还改进无服务器路由、生命周期拦截点,纳入全部 1.17.x 热修复,并更新面向开发者与 AI 智能体的文档和技能资源。
#boxlang#azure functions#无服务器#集群调度#ai智能体
$ more
Jetbrains Blog

JetBrains插件开发者大会2026:AI、新API及更多

JetBrains将于2026年11月10日UTC下午1点在线举办插件开发者大会2026,活动免费参加。大会议程涵盖AI辅助插件开发、基于LSP的语言支持、IntelliJ平台新工具与API,以及插件构建与维护的实践经验。演讲内容包括主题演讲、Dependency Assistant插件、原生LSP API语言插件、Web性能分析器集成、插件集成架构和EelApi等。活动提供技术演讲、真实案例和现场问答,直播将在YouTube进行,会后可回看。
#jetbrains#插件开发#人工智能#api#开发者大会
$ more
DZone Java

双引擎,一次查询:在Neo4j中嵌入DuckDB

文章介绍如何通过自定义Java过程将DuckDB以进程内方式嵌入Neo4j。由于Neo4j不像Postgres那样支持底层扩展,作者利用Neo4j的Java过程接口和DuckDB官方JDBC驱动,构建可从Cypher调用的duckdb.query过程。该方案可读取CSV、Parquet和JSON文件,在DuckDB内完成连接与聚合,并与Neo4j图数据联合查询。文章还讨论类型映射、空值处理、并发安全等实现细节,并提供12项测试。作者强调当前仍是概念验证,生产使用前需完善连接池、持久化和错误处理。
#duckdb#neo4j#图数据库#java#数据库集成
$ more
Jetbrains Blog

Fitia CTO谈如何借助JetBrains工具与AI实现每月一项重大功能

JetBrains Startup Program访谈Fitia联合创始人兼CTO Ulises Olave。Fitia是2019年在秘鲁创立的AI膳食规划与卡路里追踪应用,获Y Combinator支持,在拉美拥有超1000万用户,并正拓展美国市场。随着业务增长,每月超3000万条食物记录及体重、睡眠、步数、饮水等数据分散在PostgreSQL、BigQuery、Azure和Redis中,管理难度加大。团队用DataGrip集中管理多类数据库,并借助内置AI将复杂查询从数小时缩短至数秒;使用GoLand后,Go微服务开发速度约翻倍,发布速度快三倍,稳定实现每月一项重大功能。未来Fitia将基于大模型和自有社区数据开发个性化营养功能,并持续提升开发者效率。
#fitia#jetbrains#datagrip#goland#ai
$ more
DZone Java

用Kotlin测试Java与Spring应用:低风险的渐进引入路径

团队在考虑采用Kotlin时,常把迁移规划为逐个微服务的重写,但这类计划往往在产出实际代码前就停滞。Netflix、Adobe、DoorDash等公司选择在现有JVM系统旁渐进式引入Kotlin。风险最低的切入点是测试代码:测试源集与生产构建产物隔离,无需在生产运行时引入Kotlin,Java服务保持完全不变。文章介绍了在既有Java与Spring Boot项目中仅为测试源添加Kotlin的具体做法,包括配置Gradle或Maven、编写JUnit 5测试、用MockK进行Kotlin风格Mock、使用Kotest断言提升可读性,并展示了测试数据DSL、Reactor响应式代码测试以及借助@MockkBean完成Spring集成测试的示例。作者认为,通过测试引入Kotlin是已被业界验证的渐进策略,能让团队在边界清晰、无风险的场景中先熟悉语言特性,进而由开发者自发推动更广泛的采用。
#kotlin#java#spring boot#单元测试#渐进式迁移
$ more
DZone Java

Java虚拟线程在高负载下的三大生产限制

文章围绕Java虚拟线程在高负载下的生产限制展开,提出三个关键问题:如何控制请求准入、哪些逻辑应放入锁内、如何终止被放弃的任务。作者用JDK 25示例对比无界与有界准入、宽锁与窄锁、仅超时与超时后取消,说明虚拟线程虽能降低等待成本,但仍需限制队列、缩短锁范围,并将超时与协作式取消和清理绑定,避免资源泄漏和任务滞留。
#java#虚拟线程#并发控制#限流#资源管理
$ more