background image

两种平台主流的开发语言

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 中查找已注册服务;