平台无关的双关语

2003年9月12日

关于模型驱动架构 (MDA) 的一个主要论点是,它允许您在平台无关模型 (PIM) 中开发系统,然后将其转换为针对 .NET 或 Java 等技术的平台特定模型 (PSM)。一个警觉的读者可能会对此说:“等等,Java 的核心价值不正是平台无关性吗?那么为什么我要使用一种生成另一种平台无关技术的平台无关技术呢?”

要思考平台无关性,您首先需要确定您对“平台”的定义。对于那些参与 Java 等技术的人来说,平台指的是您的硬件和操作系统。我可以将用 Java 编写的程序在我的 Windows 机器上运行,然后在几乎没有或根本没有问题的情况下在我的 Unix 机器上运行。这就是我习惯的平台无关性形式。

当 MDA 谈论平台无关性时,它将您的编程环境视为平台。但这完全是胡说八道。MDA 使用了一堆 OMG 标准(UML、MOF、XMI、CWM 等),这些标准与 Java 堆栈(或 .NET 堆栈)一样,都是平台。您所做的只是将一个(硬件/操作系统)平台无关的编程环境换成另一个。您并没有获得更多独立性。

事实上,可以说您反而更糟。让我们以任何程序员都必须编写的最简单的程序为例:Hello World。您如何在标准 OMG PIM 平台中做到这一点?您做不到,因为 OMG PIM 标准中没有定义任何 I/O 库。您要么调用一些平台特定的内容,要么必须自己编写库——这自然是非标准的。

现在,这本身并不意味着 MDA 是浪费时间。MDA 的信息还有其他潜在的好处。但平台无关性的论点毫无根据。