平行世界: Java 和 XML 为何将成功

<script type="text/javascript"><!-- google_ad_client = "pub-2947489232296736"; /* 728x15, 创建于 08-4-23MSDN */ google_ad_slot = "3624277373"; google_ad_width = 728; google_ad_height = 15; //--> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
<script type="text/javascript"><!-- google_ad_client = "pub-2947489232296736"; /* 160x600, 创建于 08-4-23MSDN */ google_ad_slot = "4367022601"; google_ad_width = 160; google_ad_height = 600; //--> </script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
Simon Phipps
首席 XMLJava 传道士,IBM
1999 年 11 月

内容:Java/parallel/index.shtml#A new world">一个新世界Java/parallel/index.shtml#Co-dependency">互相依赖性Java/parallel/index.shtml#The new foundation">新基础Java/parallel/index.shtml#Technologies to audiences">技术到用户Java/parallel/index.shtml#Parallel worlds">平行世界Java/parallel/index.shtml#Java public property">Java:公共财产?Java/parallel/index.shtml#Conclusion">结束语 Java/parallel/index.shtml#resources">参考资料Java/parallel/index.shtml#author">关于作者

在过去几年中,计算的注意力已经逐渐远离原始技术,并且最近大多数已经在确定一个总体拥有成本 (TCO) 的解决方案上。但是什么构成 TCO 呢?本文讨论了一个典型计算机系统中的互连复杂性是如何影响 TCO 的。而这种互连复杂性正是 Java 技术和 XML 能够处理的。

什么构成了总体拥有成本 (TCO) 呢?这很难说,每个人都有不同的答案。通常取决于他们找到的最方便解决问题的方法。大多数人都同意 TCO 并不只是组成系统各零件价格的总和。最初是这样,但到最后大部分成本来自支持环境中的系统的成本。一种受欢迎的减少 TCO 的方法是尝试集中管理独立系统、客户台式机或这两者,但这也只是答案的一部分。最好将通信量减到最小,但实际上是什么导致需要管理呢?当然,答案是变更。但不在于它本身。孤立的变更只会影响变更本身。我们都知道变更系统的一部分会导致遍及整个系统的支持需要。

普通的计算机系统通常会导致“熵死亡”,即成本超过预期值,而有序的简易性会变成互连复杂性。治愈这种症状的方法可能是集中管理,实际弊病将避免具有依赖性的复杂网络放在首要位置。JavaXML 通过帮助排除系统、软件和数据之间的自动互相依赖性来避免这种情况的发生。

一个新世界
大多数支持和管理的需求来自由计算机上的软件交织成的具有依赖性的网络。要重新获得简易性,我们需要除去依赖性。依赖性都存在于何处呢?有以下几种分类:

软件对平台 软件对数据 软件对软件 平台对平台

要解除这些依赖性的束缚并不容易,但十年来逐渐发展起来的计算新世界最终日趋成熟并使之成为可能。

让我们首先考虑已经在忍受的计算模式。当计算处于起步阶段时,很容易做出选择。我可以获取任意一种有限范围的计算机,编写在这种计算机上运行的软件,并创建用来存储数据的文件格式。麻烦是软件和数据只能在这种计算机上工作,使用另一种计算机时,就必须使用另一种软件,或者在同一种计算机上使用另一种软件时,就不能使用相同的数据,而且必须了解新的用户界面。

通过两个标准化步骤可以解决许多问题:许多人开始使用 IBM PC,最初使用 DOS,然后使用 Microsoft Windows。一定程度的简易性回来了。但随着时间的流逝,却越来越清楚地发现许多范围的复杂性仍然悄悄地混了进来。特别是,对平台的认可并没有打破软件的平台依赖性;这恰恰意味着它完全是互相依赖的。因此当更新发生时,一切可能破裂!另外,数据世界的垄断力量并没有标准化。就像软件依赖于特定级别的平台,数据也与特定级别的特别品牌软件相关。于是就交织成具有依赖性的复杂网,在其中任何一点所做的更改都可能导致不稳定,也许还会引起整个网络的崩溃。

互相依赖性
计算的头号敌人是无心造成的互相依赖性。在构建计算机解决方案时,它们都涉及到软件、硬件、平台以及开发工具等之间的关系。它们之间都通过看不见的具有互相依赖性的连接线索连接起来。随着时间的推移,拥有任何解决方案的成本与所支持的各部分间的依赖性数量成正比。但因为有了许多无心创建的互相依赖性,成本将以指数级增长,而不是线性增长。其结果就是更多的互相依赖元素所引出的附加成本可能会不成比例地增加终身成本。这种不成比例增长的起始点叫做冲刺点,而冲刺点以上的情况就叫做熵死亡。在冲刺点之前,就已经通过选择具有互相依赖性的系统原理、系统中一部分对另一部分的无意依赖(可能是由其它元素引起的)为熵死亡打下了坚实的基础。最常见的无意互相依赖性存在于软件和其宣称的操作系统之间。

这并不是说可以或者应该避免所有互相依赖性;有一些互相依赖性是不可避免的。但在现代系统规范和设计中,应该用与其它成本驱动因素相同的方法来标识和调整它们,请注意图 1 中不仅显示了直接成本,还显示了连接到具有依赖性的网络的终身成本。通常,需要将软件与使用它的环境隔离开。在某些情况下,使用本机接口和二进制是不可避免的,但在这些情况中本机代码外围的平台无关的“封装器”几乎总是有价值的。

图 1. 成本 vs. 节点数量

例如,假设一家公司使用办公套件的宏语言作为办公自动化系统的基础。一天,公司的 IT 小组安装了另一套软件,并无意中更新了办公套件所使用的一个 DLL 文件。他们发现有一个宏不能使用了。经过了大量工作以后,他们设法使这个宏再次工作,但新版本要求使用电子表格程序的更新版本。为了使用该程序,他们不得不安装办公套件的全新级别,而在那以后所有宏都不起作用了!接着,他们逐个调试所有宏,更新并修复它们。在这些修复所涉及的其它部分中,他们发现需要使用一个数据库驱动程序的新版本。可悲的是,那需要使用最新版本的数据库。于是,他们升级了数据库,并且……,哎,您可以猜得出其余部分。

新基础
问题是由在将变更的影响从子系统到子系统传送引起的。大多数系统当前使用的集成计算基础可以充当传输媒体,它可以让某一处的更改影响其它地方。

如何避开这个陷阱?最关键的就是切断数据与平台上软件的连接,对所有这些使用基于标准的选择,以便版本变化所带来的影响有可能降到最低。要达到这一步,我们就将变更与传输媒体(底层平台)隔离,并防止变更影响引起成本的剧烈震荡;我们添加前面提到的隔离层。那么,理想的标准基础是什么呢?图 2 中显示的技术领域,这样的基础应该涵盖的是:

将系统连接到一起并提供访问的网络协议 给需要的用户带来解决方案的传递模型 用来创建解决方案的编程模型 解决方案所使用的信息的数据结构模型 允许合适的用户访问合适的数据和解决方案的安全性模型

图 2. 技术领域

十年来计算机界的变化主要是重新发现技术思想,并将它们制定成模型内的标准。图 3 中显示以下这些映射:

网络:TCP/IP
现在 TCP/IP 的使用是如此广泛,以至于它不再是谈论的主题。 传递:Web 模型无状态客户机/服务器
无状态客户机/服务器计算是许多商业计算机用户选择的传递机制,且使用的用户量不断增长。与创建全状态客户机相比,它不需要昂贵的维护和支持费用,状态并不在服务器上维护,而是将大部分状态“贷”给了客户机。 程序: 和 Beans
自发行以来只有 4 年,却已经将其本身确立为许多企业中新软件的标准,其 Beans 体系结构真正允许使用基于组件的开发。这并不是说所有代码都要用 语言编写;取得成功的是平台无关的 字节码二进制程序。如果这些不可行,那么至少用来将解决方案的其余部分与本机代码隔离开的 封装器是必不可少的。 数据: 和词汇表
显然是新出现的,它是简化的 SGML - 80% 的功能和 20% 的复杂性。计算机界得到普遍使用就已经取得了巨大成就,而种种迹象表明未来它将在数据格式方面占据主导地位。 安全性:公钥
由于不必再“以明文方式”发送全部密钥信息,基于公钥的安全性系统已经占据了主导地位,特别是在网上。

图 3. 已制定成标准的技术

从技术到用户
随着计算新世界对标准的认可,对商业解决方案的要求也起了变化。过去,都是根据想像中提出请求的客户来构建每个解决方案。关注的焦点在谁在使用解决方案,以及他们在哪里,例如内部网、外部网和因特网。然而,进展已表明现在焦点更多集中在所有数据建模和定义用户与数据的关系上。计算解决方案有一种倒置方法,焦点从技术和系统切换到信息和用户。

今天,定义新的解决方案涉及到定义用户与信息主体之间的关系。大多数情况下,一个给定的信息主体有多个用户。因此,对于一家网上商店,当客户查看信息时,通常只给他们对于某些特定数据的访问,并且可以用适合客户的方式来显示数据。当供应商的客户服务人员查看相同信息时,查看范围和显示方式都不同。从解决方案和用户的角度来看,这是一种转变,而它对当今的 IT 行业却是最大的挑战。用户能够放心地继续使用,因为新传统中的所有技术都确实是成熟和经过证实的,因此转变是重点和策略之一,而不是向未知技术的跳跃。


能够很好地掌握这五种基本技术可以带来另一个好处。对于许多用户,迁移到新的电子商务世界是进步的,但不是革命性的。他们能够完成最重要的转变,而不必放弃他们已经做的所有投资。因此,这个新世界实际上是一个,而不是交替世界。

那么, 和 究竟为什么会成功呢?有以下几种原因:

已经证实的技术:新基础的全部五个部分都基于业内最老且经过最多次证实的思想。TCP/IP、“哑终端”虚拟机、标记语言、公钥系统 - 所有都经过数十年的使用,已得到充分的证明。 用户驱动:在最终分析中,向新基础移动是市场的需求和期望推动的,而不是某一个供应商或某个协会认可的。由于计算机技术的成本逐渐受到关注,而且由于更新换代所引起的熵死亡越来越明显,因此对于新基础的需求也就越来越强烈。 供应商支持:这五种技术几乎构成了所有供应商的新解决方案的基础。试图想要使用替代方法的供应商逐渐发现市场会对他们的选择提出疑问,并且会怀疑他们有专利锁定的企图。 平台无关:这五种技术互相独立,也独立于它们所处的平台。于是,只要将取决于它们的系统与互相依赖性隔离开,可以在任何地方执行它们。 供应商无关:这五种技术都不受任何一家供应商控制,投资不但免于供应商锁定的风险,而且免于开始升级竞争的任何一家供应商的设计选择。唯一可能的意外是 和公钥,值得花时间考虑在这样的环境中,为什么这两样都不是问题。Java public property">

Java:公共财产?
是否可以将一家供应商开发和明显控制的技术视为是开放的?这都取决于供应商的态度和行动。如果这五个域都依赖于这些新的计算基础,则主动权就从始发人转交“市场理念”控制了。例如,尽管公钥系统的核心思想由一家公司拥有,然而由于公开该技术可以带来的强大功能和核心专利拥有者的态度,业界希望所有加密和数字签名建立在这种技术的基础上。同样,Java 也已经成为当前受到保护的公共财产,而不是受核心技术所有者的危害,尽管向标准主体控制的转移是正面的。而且,其所有权并不像公钥系统那样稳固。如果整个业界都以不同方式实现 Java,那也就没有追索权可言了。但这种情况并没有发生,因为市场不会青睐那些破坏 Java 价值的公司。当然,Java 中标准化的基础是字节码的二进制格式而不是语言的事实是一大帮助。因此,如果我们感到将计算底层构架的关键部分建立在公钥系统上是安全的,那么感到使用 Java 安全的理由就更充分了。

结束语
我们应该考虑的关键问题不是“如何削减管理和支持的成本”,而应该是“如何减少必需消除的管理-支持的金额?”要反映这手边变更的概念,并且将考虑 TCO 的观念转化成考虑 TCP(总体购买成本),我们也许应该用另一个词来表达问题 - 终身拥有成本或 LCO。

本文的核心目的是新计算机系统的主要决定因素在系统的终身拥有成本:即根据 LCO 来决定 - 其范围包括软件、网络、客户机和服务器硬件,以及在生命周期内开发、部署、管理和影响的管理,还有后期迁移到替换系统。本文的主要建议是可以通过将由各种元素造成的网络的互相依赖复杂性降的最小来控制这个因素。要实现该控制,建议改变系统原理,而不是技术的临时变更。通过将未来的开发工作建立在一个坚固的标准基础上,可以避免熵死亡。这也就是 和 可能取得成功的原因,这些技术本身可能是很酷的!

参考资料
了解 /">

和相关标准、技术和技巧的详细信息。

关于作者
Simon Phipps 是 IBM 公司的首席 JavaXML 传道士。1995 年他曾是向 IBM 建议接受 Java 的小组一员,自那以后他向全世界宣传这个由 Web 和 Java 技术武装的新世界将席卷计算机界。他的最近工作集中在研究可扩展标记语言 (XML),他负有为 IBM 向全世界宣传 XML 的责任。Simon 拥有 20 多年在计算机界工作的经验,他在许多公司在各种环境下从事联网、数据通信和操作系统有关的工作,包括与 IBM 一起开发最早的商业合作会议软件。他在 1991 年进入 IBM 公司。他拥有电子工程的学位,并且是一名英国计算机协会的特许工程师和会员。

<script type="text/javascript"><!-- google_ad_client = "pub-2947489232296736"; /* 728x15, 创建于 08-4-23MSDN */ google_ad_slot = "3624277373"; google_ad_width = 728; google_ad_height = 15; //--> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
<script type="text/javascript"><!-- google_ad_client = "pub-2947489232296736"; /* 160x600, 创建于 08-4-23MSDN */ google_ad_slot = "4367022601"; google_ad_width = 160; google_ad_height = 600; //--> </script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
阅读更多
个人分类: java
想对作者说点什么? 我来说一句

java读取和写入xml文件

2017年02月27日 446KB 下载

javaxml串转换成Map类型

2016年09月08日 5KB 下载

最新全球国家和城市数据库和xml

2017年12月29日 136KB 下载

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭