2天时间,聊今年最热的 Agent、上下文工程、AI 产品创新等话题。2025 年最后一场~ 了解详情
写点什么

Qi4j 提出面向组合编程思想

  • 2007-11-20
  • 本文字数:1073 字

    阅读完需:约 4 分钟

本周Rickard Oberg 在oredev 上宣布推出Qi4j,并宣称“类已死,接口万岁”。 Qi4j 带来了面向组合编程的新思想,提出类中不再放有任何的行为,取而代之的是,类成为混入(mixins)的‘组合’,并在类中使用标注定义接口。 Qi4j 本身是一个提供给所有 java 开发者使用的面向组合编程的 Java 框架。尽管面向组合编程需要较大的思想转变,但是面向组合编程不需要单独的工具、语言或 XML。Qi4j 的应用程序可以在 Spring 应用软件、Web 应用容器、OSGi 和其他地方运行。Qi4j 大量使用了标注,以此摆脱框架特定的知识,让开发者更关注业务规则。项目创始人 Rickard Öberg 和 Niclas Hedhman 在新闻稿中这样描述:

Niclas Hedhman 说:“Qi4j 是一个以领域为中心的应用开发框架,融入了从面向方面编程、依赖注入和领域驱动设计演化而来的思想,利用了 Java 5 平台和其生态系统”。Niclas Hedhman 是长期从事于 Java 框架的开发者,并且现在是 Apache 的活跃成员。

Rickard Öberg 说:“我需要一个能使领域模型和业务规则再度成为关注焦点、让领域专家和开发者能够清晰沟通的系统” 。Rickard Öberg 是以前 JBoss、Webwork 和 XDoclet 的创始人。

由于这仅仅只是框架和范型最初的展示,文档和例子还比较少。但是,面向组合编程的目标是完成从对象思考到组合思考的转变。组合由可复用的片段(fragments)组成。片段是Qi4j 的组成块 。片段携带组合成员的状态(在 mixins(混入)中)、验证和约束它们的使用(在约束(constraints)中)、处理横切点(在关注点(concerns)中)、并提供通知、缓存和撤销管理,以及其他异步需求(在副作用中)。编程范型的转变并不是件容易的事情。Oberg 这样描述对面向组合编程的反应:

人们一贯有两种反应:一是试图从脑海中扫除源于旧有经验的坏主意而头疼欲裂,一是理解我们所提思想的潜力而发出心领神会的微笑。

Qi4j 仍在更新,并且不稳定。此时,他们仍在致力于稳定框架,同时将面向组合编程思想推介给社区, 希望借此获得继续发展。他们也承认目前还没有充分准备好让大家深入到这个框架中,并建议大家在未来数个月中先侧重于概念理解。

查看英文原文: Qi4j introduces Composite Oriented Programming - - - - - -

译者简介:王军,长期从事软件开发工作,实际项目偏重于 JBOSS 平台上构建网管软件。对于性能测试工具有较多的关注,关心软件技术和相关工具的动态,将其中相对成熟的技术和工具应用到实际的项目之中。长期担任技术管理和项目管理工作,一直关心开源软件的发展动态以及软件过程和敏捷开发的实践探索。参与 InfoQ 中文站内容建设,请邮件至 china-editorial@infoq.com

2007-11-20 01:173438

评论

发布
暂无评论
发现更多内容

避免创建不必要的对象

李子捌

28天写作 12月日更

Git 报错:fatal: destination path ‘.‘ already exists and is not an empty directory.

liuzhen007

28天写作 12月日更

Kubernetes 为何称为 K8s?

Ethereal

Kubernetes k8s 运维工程师

围棋

圣迪

AI 数学 围棋 中国象棋 解空间

反序列化漏洞原理详解

网络安全学海

网络安全 信息安全 渗透测试 WEB安全 安全漏洞

【docker 总结】第六篇 - DockerCompose

Brave

Docker 12月日更

明道云APaaS实践将GTD方法落地

明道云

元宇宙100讲-0x006

hackstoic

元宇宙

C#中如何使用Dapper

喵叔

28天写作 12月日更

家具电商

张老蔫

如何在 Linux 中使用 apt 命令管理包

Ethereal

Linux 运维 apt 网络技术联盟站

语音信号处理4:语音信号的产生之语音的发音器官

轻口味

28天写作 12月日更

RocksDB 相关资料

Joseph295

存储 RocksDB LSM树 KV存储引擎

IM会话阅读回执

superman

IM 已读未读 阅读回执

48 K8S之Ingress控制器部署

穿过生命散发芬芳

k8s 28天写作 12月日更

Prometheus Exporter (三十)IPMI Exporter

耳东@Erdong

Prometheus 28天写作 exporter 12月日更 IPMI

网络安全2.0主动防御体系有哪些新思路?

喀拉峻

网络安全 安全 渗透测试 渗透

☕【Java深层系列】「技术盲区」让我们一起去挑战一下如何读取一个较大或者超大的文件数据!

码界西柚

Mmap 12月日更 MappedByteBuffer FileChannel

17《重学JAVA》--JAVA异常(一)

杨鹏Geek

Java 25 周年 28天写作 12月日更

一个简单的socket小工具

为自己带盐

socket dotnet 28天写作 12月日更

为什么要“除夕”,原来是内存爆了

悟空聊架构

JVM 内存 28天写作 悟空聊架构 12月日更

起、承、转、合全赋能:华为应用生态为开发者带来了什么?

脑极体

架构实战营模块二作业

曾竞超

架构实战营 「架构实战营」

[架构实战营] 模块二作业

Geek_0ed632

架构实战营

无快不破,在本地 docker 运行 IDEA 里面的项目?

秦怀杂货店

Java 后端 springboot dcoker

CSS之选择器(十)<label> 和 <input>

Augus

CSS 12月日更

JVM学习笔记

Changing Lin

12月日更

下班之后的生活

卢卡多多

28天写作 12月日更

跟着动画学Go数据结构之冒泡排序

宇宙之一粟

golang 数据结构 算法 12月日更

营销思维:新消费品牌如何做营销

石云升

营销 28天写作 新消费 12月日更

架构实战 模块二作业

mj4ever

架构实战

Qi4j提出面向组合编程思想_Java_Rob Thornton_InfoQ精选文章