Ohhnews

分类导航

Jetbrains Blog

Qodana入围2026年CODiE最佳DevOps工具奖最终提名

Qodana入围2026年CODiE奖 JetBrains的Qodana工具入围第40届CODiE奖“最佳DevOps工具”类别。Qodana通过自动化代码质量和安全检查,帮助DevOps团队在CI/CD中早期发现并修复问题,减少人工审查负担。它支持CI/CD集成、IDE插件、自定义检查、安全审计(SAST、依赖扫描)及合规性监控。Qodana提供组织级仪表盘、质量门禁和报告,确保团队在快速交付的同时保持高质量与安全性。
#qodana#devops#代码质量#安全#自动化
$ more
foojay

无需Dockerfile构建Java容器:Azul Zulu与Paketo Buildpacks

本文是Azul Zulu Docker官方镜像系列的第五篇,介绍了如何使用Paketo Buildpacks(云原生构建包)无需编写Dockerfile即可构建生产就绪的Java容器。Paketo Buildpacks实现了Cloud Native Buildpacks规范,自动检测应用需求并组装OCI镜像,其中JVM层由Paketo Buildpack for Azul Zulu提供。文章以Spring Boot Maven插件为例,展示了如何通过spring-boot:build-image命令构建镜像,并通过环境变量配置Java版本、JRE/JDK类型、启用jlink生成最小化JRE(可将镜像从272 MB降至136 MB),以及开启远程调试、JMX、Java Flight Recorder等可观测性功能。同时演示了使用pack CLI独立构建非Spring Boot应用的方法,并对比了不同构建方式下的容器大小。最后指出Paketo适用于需要自动内存调优和无需维护Dockerfile的场景,而Dockerfile则提供更细粒度的控制。示例代码托管于GitHub仓库。
#云原生构建包#azul zulu#java容器化#jlink定制#spring boot集成
$ more
foojay

OpenAPI、ORM、SVG与Lottie

本文介绍了Codename One框架新引入的构建时代码生成管线,涵盖多个核心功能:OpenAPI 3.x客户端生成(从规范生成类型安全的Java代码)、基于JPA风格的SQLite ORM(声明式实体映射与DAO)、JSON/XML映射(支持Jackson和JAXB注解)、组件绑定与验证(声明式数据绑定并支持多种校验注解)、构建时SVG和Lottie转码(矢量图像保持清晰,并支持毫米单位尺寸控制),以及声明式路由和深度链接API(注解路由路径,统一处理冷启动和热启动的URL)。所有这些能力均通过同一Maven插件在编译时生成字节码,避免运行时反射,提升性能和可靠性。文章详细阐述了每个组件的用法、设计思路以及与现有框架的集成方式,并提供了开发指南链接和社区反馈渠道。
#openapi#orm#svg#lottie#构建时代码生成
$ more
Spring Blog

一个优雅的播客:DaShaun Carter谈补丁管理、Spring Boot 4.1与AI安全

本期播客节目中,主持人邀请到好友DaShaun Carter,共同探讨了软件补丁管理、Spring Boot 4.1版本特性以及人工智能领域的安全问题。对话涵盖了从基础概念到实际应用的多个层面,为Spring社区开发者提供了最新技术动态和安全实践建议。
#spring boot#补丁管理#ai安全#播客访谈
$ more
DZone Java

OpenAPI、ORM、SVG 和 Lottie

本文是 Codename One 发布系列的第三篇跟进。介绍了多项新功能:OpenAPI 客户端生成器,可从 OpenAPI 3.x 规范生成类型安全的 Java 客户端代码;SQLite ORM,支持 @Entity、@Id 等注解生成 DAO,无需反射;JSON/XML 映射,基于 @Mapped 和 Jackson/JAXB 注解,提供序列化与反序列化;组件绑定与验证,通过 @Bindable 和 @Required 等注解自动绑定表单字段并校验;构建时 SVG 和 Lottie 转码器,将 SVG 和 Lottie 文件转换为矢量图像,支持毫米级大小控制,保持清晰;以及声明式路由与深度链接。所有功能均基于一个构建时代码生成管道(Maven 插件),在编译时读取注解生成类型化的 Java 代码,集成到应用中。
#openapi#sqlite orm#svg#lottie#构建时代码生成
$ more
Jetbrains Blog

JetBrains Marketplace 生态系统安全更新:应对恶意第三方AI插件

事件概述 JetBrains 于 2026 年 6 月 17 日披露了一起针对其 Marketplace 的恶意第三方 AI 插件攻击事件,15 个伪装成合法 AI 工具的插件被用于窃取开发者的 AI 服务 API 密钥。 攻击手法 插件在用户输入并应用 API 密钥后,后台安装全局 X509TrustManager 以禁用 TLS 警告,并通过未加密的 HTTP 将密钥明文发送至硬编码的 C2 IP 地址。 由于核心 API 调用看似正常,现有验证工具未能及时发现异常。 响应措施 所有恶意插件已被彻底移除,7 个关联发布者账户永久封禁。 通过远程 kill‑switch 机制,IDE 下次重启后自动禁用相关插件。 确认 JetBrains 内部系统未受波及。 用户建议 手动检查并清理已安装的插件。 立即撤销在此类插件中使用的所有 API 密钥,并重新生成。 检查 AI 提供商的用量日志,排查异常访问。 在网络层面封锁 C2 地址 39.107.60[.]51。 使用最小权限原则创建 API 凭证,避免使用根密钥。 扫描仓库确保令牌未泄露。 长期改进 JetBrains 强化了插件收录流水线,增加对未加密端点、自定义 TLS 弱化、云端密钥配置处理等行为的自动检测规则,并推荐开发者采用 ACP 协议注册安全代理。
#jetbrains marketplace#插件安全#api密钥窃取#人工智能#供应链攻击
$ more
foojay

Mac原生构建、实时协议与开放问题数降至350以下

本周,Codename One项目取得了多个重要进展。开放问题数量从约500个降至350以下,创历史新低。主要新功能包括:应用程序可零移植成本生成本地Mac应用,支持原生标题栏、菜单栏和通知;WebSocket成为核心框架的一部分,无需额外库;新增从GraphQL模式生成类型化客户端的工具,以及无需protoc即可生成gRPC客户端的功能;全新插件式广告API支持多种格式,集成GDPR和ATT;后台执行和推送通知采用基于约束的调度方式。此外,项目引入了AI辅助工具,通过截图对比评估UI一致性,并重构了Initializr以降低入门门槛。还有多项小修复,如cubic-bezier动画匹配CSS、双轴拉伸、验证即时显示等。项目已停止接受社区PR,但欢迎继续提交问题报告。
#mac原生构建#websocket#grpc#graphql#广告api
$ more
DZone Java

设备调试与JUnit 5

Codename One 发布新版本,引入了两个核心工作流改进:设备上调试和 JUnit 5 集成。 设备调试:支持在真实 iOS 和 Android 设备上通过标准 JDWP 协议进行 Java 调试。开发者可直接在 IDE(如 IntelliJ IDEA)中设置断点、检查变量和调用栈。iOS 端借助 CN1 调试代理完成翻译;Android 端直接通过 ADB 的 JDWP 转发。支持无线调试,且无需 Mac 即可调试真实 iPhone。 JUnit 5 集成:在 JavaSE 模拟器中运行标准 JUnit Jupiter 测试,支持依赖注入、Mockito、AssertJ 等现代工具。通过 @CodenameOneTest 和 @RunOnEdt 注解简化 UI 测试,并可模拟显示模式、主题、屏幕方向等环境变量。两种测试方式(旧版 AbstractTest 和新 JUnit 5)可共存于同一项目。 该更新大幅提升了开发调试效率,尤其针对平台特定问题的排查。
#设备调试#junit 5#跨平台开发#移动应用测试#调试工具
$ more
Jetbrains Blog

你的JetBrains IDE专业技能,现在可以在LinkedIn上展示了

概述 JetBrains与LinkedIn合作推出免费插件,允许开发者将IDE使用情况自动生成技能陈述并展示在LinkedIn个人资料上。该功能基于实际工具使用数据,非手动添加,且数据仅本地处理。当前支持IntelliJ IDEA、PyCharm、WebStorm等9款IDE,DataGrip支持即将到来。插件可展示编码、调试、版本控制及AI辅助工作流等不同熟练程度,并随使用自动更新。此举旨在为招聘提供更真实的技能凭证。
#jetbrains ide#linkedin#专业技能展示#职业网络#插件
$ more
foojay

BoxLang 1.14.0: BoxSet来了,BoxLang的一等集合类型

概述 BoxLang 1.14.0 正式引入了一等集合类型 BoxSet,它作为 java.util.Set 的封装,提供原生语言集成。BoxSet 支持三种变体:HashSet(默认,最快查找)、LinkedHashSet(保持插入顺序)和 TreeSet(自然排序)。创建方式包括 setNew()、setOf() 以及字面量语法 set{...},并可从数组或字符串转换。 核心特性 集合代数运算:支持并集(+)、交集(*)、差集(-)和对称差集(^),操作数可接受数组、范围等松散类型。 函数式管道:支持 map、filter、reduce、every、some 等方法,可链式调用。 实际场景:可用于角色权限控制、标签去重、数据集变更检测、URL 去重爬虫等。 互操作性:直接包装 Java 的 Set,能与 Java 库无缝集成;支持 JSON 序列化,序列化为数组。 其他 BoxSet 默认对字符串不区分大小写,可通过 caseSensitive 参数启用区分;数值 1、1.0、1L 视为同一元素。提供 toUnmodifiable() 创建不可变集合,修改时抛出异常。详情见官方文档。
#boxlang#boxset#集合类型#数据处理#jvm语言
$ more