两种平台主流的开发语言
Java 和 C#在架构上有着惊人的相似:虚拟机技术,基于沙
箱的安全模型,分层的命名空间,垃圾回收等。所以从第一眼看上去,
C#简直就是 Java 的
克隆。但微软并不这样认为,微软的说明是:
“它集成了 C++,Java,Modula 2,C 和
Smalltalk 等多种语言的精华,对它们共同的核心思想象深度面向对象(deep object-
orientation),对象简化(object-simplification)等都一一做了参考。”一方面,C#的大多
数关键字来源于
C++,使它在书写上有别于 Java。但另一方面,C#的严格的类型转换等
概念却明显来自于
Java(当然,它的原始类型的定义更严格,并且据微软声称没有影响到
效率
.),使其在内涵上有克隆之嫌.但即是 Java,其有些特性也和 Smalltalk 颇有渊源.所
以评价一种开发语言的优劣不仅是看其外在的表现形式,更重要的是其实实在在的功效
.作
为一种新语言,
C#加入了基于 XML 的标记,可以被编译器用来直接生成文档,C#的另
一个特点
:一站式软件(one-stop-shopping software)强调了自解释( self-describing)
的编码方式,即头文件,
IDL(Interface Definition Language),GUID 和其他复杂的接
口无需再被引用
.也即是 C#,VB.NET 等代码片断可以任意的被加入到其他语言中.这无疑
在多种语言混合编程的模式中是一次飞跃,但是,其难维护性也是不言而喻的。
微软的
.NET 的平台提供了象 C#,VB.NET,COBOL 等多种开发语言,C#是新的,
而其他的每一种语言都是在原有的基础上改造而来
.这是微软煞费苦心并且也是不得以的要
为习惯于这些语言的程序员铺一条便捷之路
.但是,这些语言的改造与其说是整容到不如说
是一次开膛破肚的大手术
.首先是观念变了,Basic,Cobol 等语言先天的缺少面向对象的
内涵,现在却变成了面向对象的语言,这就不是要求其传统的程序员仅仅熟悉一些额外的
关键字那么简单的问题了
.基于面向对象的软件分析设计开发测试是完全不同于基于传统过
程性语言的质变,所以这一过程的转变对传统程序员来讲也是一个痛苦和漫长的过程
.在传
统程序员面前,微软看似提供了丰富多采的解决方法,但对于实际问题而言,却怕是有些
力不从心
.所以一个简单的办法是:直接使用 C#.对于独立软件开发商来讲,其转换成本不
容忽视
.其次,在一个软件项目中使用多种语言,开发商必须同时拥有多种语言专家和多个
独立的难以互相支援的开发小组,无疑的,这也使其软件的维护的成本已非线性的曲线增
长
.多样性是双韧剑,实施时需仔细斟酌.
跨平台是
J2EE 的最大卖点,也是至今为止还绊住微软的栅栏.当开发商完成了符合
J2EE 规范的软件时,其客户可以依据其喜好和实力来选择不同应用服务器.从基于 open
source 的免费软件到高端满足 B2B 需求的商业套件来搭建自己的平台.但是由于 J2EE 的
规范还不完善,各个
J2EE 服务器的提供商为了使其提供其各自理解的完整的功能,不得
不添加一些额外的特性
.这就使得使用了这些特别功能的应用软件,绑定到了特定的应用服
务器上
.随着 J2EE 规范的发展,这种差别会逐渐减小.
微软的跨平台解决方案是
Web services,它解决的是异种平台上不同应用之间的连
通性问题
.从技术角度讲,它除了以 XML 为介质之外没有什么新意.但它的重要意义在于:它
是微软这样一个重量级选手所推出的,前景不容小视
.构造和使用 Web services 的过程较
为简单
:
服务提供者用他所选择的语言构造服务
;
服务提供者用
WSDL(the Web Services Description Language)来定义该服
务
; )中注册该服务;
使用者的应用程序从
UDDI 中查找已注册服务;