Ohhnews

分类导航

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
DZone Java

事务应该在何处结束?分布式Java系统中的一致性边界设计

微服务并未消除事务,而是迫使架构师明确事务边界。文章主张先识别必须同时成立的业务不变量,再据此划分事务与服务边界,而非先拆服务后补一致性。分布式工作流通常包含三类边界:本地ACID事务保护的原子核心;通过事务性发件箱实现已提交状态的持久交接;跨服务后各自提交、最终收敛的工作流。事件跨越服务后不再原子,必须明确允许的中间状态、超时、补偿、幂等与状态归属,不能把最终一致性当作模糊借口。应把工作流建模为持久状态而非同步调用链,区分确定失败与结果未知并引入对账。数据库按服务划分只是指导原则,若数据共享不变量且频繁一起变更,过早拆分反而增加耦合。架构的核心是放置保证:最小状态用本地事务,已提交状态需持久交接,多服务协作用显式工作流,补偿仅在业务真正支持时使用。
#分布式系统#事务边界#业务不变量#微服务#java
$ more
Jetbrains Blog

编程智能体基准测试应与真实用户任务流相匹配

JetBrains Research 分析了软件开发者在 IDE 中与编程智能体的 4,782 个会话,并与三个公开对话数据集及 SWE-Bench Pro 对比。结果显示,SWE-Bench Pro 中 93.8% 的任务是新增功能或修复缺陷,且每个任务仅以一条完整消息给出;而真实会话中这两类请求不足一半,其余包括代码库问答、规划、代码审查、重构与命令执行。作者据此认为不存在通用的真实基准,基准应针对特定用户群体的实测数据校准。为此他们提出 SWE-TaskFlow:在保留仓库、环境、测试与原始需求的前提下,把 issue 拆成三个顺序请求,并插入基于仓库代码的问答,用 TaskFlow 对齐分数优化序列,使分数从 59.6 提升至 77.8。在 700 个任务的试验中,拆分使每个任务成本上升 2.0 至 2.6 倍,解决率小幅下降 4 至 5 个百分点,问答准确率在 69.8% 至 83.0% 之间。作者也指出,规划、代码审查等类型仍缺少生成器与验证方法,且消息在运行前固定,无法评估智能体对用户反馈的响应。
#智能体#基准测试#任务流#软件工程#swe-bench pro
$ more
Jetbrains Blog

为什么我们仍然需要IDE:AI智能体时代的开发驾驶舱

文章认为,编码智能体正在改变开发流程,但完全依赖终端或聊天窗口并不适合所有人。IDE如同开发驾驶舱,能提供代码导航、依赖分析、类型检查、测试和审查上下文,帮助开发者理解、验证并为智能体生成的代码负责。IDE的工具也应开放给智能体,使其在任务中即时检查类型、运行测试并减少猜测。作者还强调应通过ACP和BYOK避免被单一模型供应商锁定,让开发者自由选择智能体和模型。最终结论不是用智能体取代IDE,而是将两者结合,用工具解决实际问题。
#ide#ai智能体#软件开发#开发工具#人机协作
$ more
Spring Blog

Spring周报:2026年10月20日

本期Spring周报汇总了Spring生态的最新文章、视频与播客,内容包括Craig Walls关于使用Spring和JBang构建MCP服务的文章、将答案拆解为声明以进行事实核查的Spring AI实践、Andrew Lombardi讨论Java能否超越Rust的播客、Spring Boot 4.1服务端请求伪造防护视频,以及使用.env文件、Mise配置开发环境、模块化单体与微服务选择等话题。
#spring#java#ai#微服务#开发环境
$ more
foojay

从 Java 21 升级到 Java 25:真正会出问题的地方

文章梳理了 Java 21 到 Java 25 之间七类会导致构建失败、启动失败或行为改变的变更,每项均在 JDK 21.0.7 与 JDK 25.0.3 上实测验证。一是自 JDK 23 起 javac 默认不再自动运行类路径上的注解处理器,编译静默成功却缺少生成的代码,需在 Maven 中显式声明 annotationProcessorPaths 或设置 proc=full。二是安全管理器被 JDK 24 永久禁用,-Djava.security.manager=allow 会导致 JVM 无法启动,Subject.getSubject 也改为抛出异常。三是 Thread.suspend/resume 等方法被移除,旧依赖 JAR 会抛 NoSuchMethodError,catch 无法捕获。四是 COMPAT 区域数据被删除,同一代码的日期格式与解析结果改变。五是 sun.misc.Unsafe 内存访问与 JNI 会打印警告,未来将直接失败,建议用严格开关跑测试。六是 -Xfuture、-Xnoagent 等启动参数会导致 JVM 拒绝启动,-XX:-ZGenerational 被忽略,ZGC 默认转为分代模式。七是 Windows 上 File.delete() 不再删除只读文件,TLS 默认算法更严格。文末给出用 jdeprscan、jdeps、检索启动参数和阅读发行说明等排查清单。
#java#jdk升级#向后兼容#注解处理器#api移除
$ more
InfoQ Java

Java新闻综述:JDK 28相关JEP、Azul Payara、Gatherers4j、Google ADK、Yupiik及Apache Camel漏洞

本周Java新闻综述(2026年10月12日)重点包括:三项面向JDK 28的OpenJDK JEP;Azul Payara 2026年10月版本;Gatherers4j、Yupiik Fusion、Google ADK for Java及Google ADK for Kotlin的点版本发布;Apache Camel修复38个CVE漏洞。作者:Michael Redlich。
#java#jdk 28#apache camel#安全漏洞#开源生态
$ more