我所理解的计算机(四) 之 一网情深下篇

来源:互联网 发布:夏普网络扫描设置 编辑:程序博客网 时间:2024/04/29 11:38
             在说其他东西前,应该先谈谈Java,免得让人说跟不上流行趋势。
            Java的发明者Sun的初衷是作为一种吸收了面向对象特性的介于脚本语言和高级语言之间的一种东西,针对的是受限的计算环境,比如嵌入式环境和浏览器环境。Java虚拟机(JVM)就是对这些受限的计算环境的抽象,因而使用了堆栈式汇编。Java程序被编译成字节码在JVM上解释执行,字节码程序可以和unicode文本兼容,并能动态下载程序、动态链接。为了预定的网络语言目标,Java尤其注意字节码在执行时的安全验证。
             有心栽的花开得怎么样倒是没人关心,因为别的地方早已经柳树成阴。由于Java语言采用了更简洁、更纯粹的面向对象概念,并且率先开始对容器等基本数据结构在语言级进行支持,更吸引C程序员的是动态分配的内存可以由JVM自动回收,Java语言在程序员中间迅速流行起来。而Java跨平台执行的特性则吸引了饱受操作系统兼容性之苦的各大公司的注意力,使用Java可以减少维护众多程序版本所带来的成本。Java久为诟病的速度慢的问题,也随着JIT技术的发展,而越来越不成为问题。Java语言本身成为了整个Java计划中最成功的一部分,也成了近年来最流行的开发语言。
              Java语言的1.2版,也就是通常说的Java2,引入并完善了反射、远程调用接口RMI等语言的高级特性,根据程序员的反馈大幅度改写了基本容器类等原有类库支持,并且为大型企业应用中非常常用的异步消息、分布事务等等定义了Java的接口。这正式宣布Java成为了一个重磅炸弹。现在的Java已经广泛侵入到各个程序开发领域。原来占统治性地位的C/C++,除了仍旧守住系统级开发的阵地,正在被Java逐渐的替代中,尤其是对于大型企业应用开发。
              以Java2作为基础,Sun定义了一个称为J2EE的企业应用框架,其实用白话说就是一个用Java开发大型企业应用程序的建议。其实和大大小小的应用程序框架一样,J2EE试图把企业应用开发种具有相当共性的东西提取出来,比如消息队列、分布式事务、链接管理、对象持久化等等。其实这些思路本身还都是平平无奇的,它还是沾了Java语言的光,能够利用Java语言特性简单而又精准的实现容器和组件概念。在J2EE里鼓动程序员们都按照EJB,Servlet这些组件的模式写程序,然后在容器里运行这些组件。就是因J2EE的推广,人们才把容器的实现提升到应用服务器这个比较高深的说法。
             实际上,企业应用大多都天然具有分布计算、数据集成和应用集成的特点。在解决这些共性问题过程中,程序员们因为不同的背景走上了不同的道路。其中重要的,其实我也只知道这两个,就是下面要聊聊的CORBA和.NET。

             CORBA(Common Objectrequest broker architecture)全称叫公共对象请求代理架构。它充分阐述了分布对象这个概念,并且非常实用。如果你理解了CORBA,掌握J2EE和.NET那些东西就容易多了。CORBA使用一种叫IDL的接口描述语言来对分布对象的接口进行抽象的描述,IDL并不涉及到分布对象的实现,并且IDL和真正实现分布对象的程序语言也是无关的。在CORBA的网络环境下,定位和访问的基本单位都变成了由IDL描述的分布对象。通常网络编程时使用的定位主机和进程的方法、使用的类似文件操作的socket接口,都被CORBA中对象引用、对象适配这些东西所替代,或者说被它们所封装。像面向对象语言中的对象一样,CORBA的分布对象也具有多态等特性,虽然比本地内存中的对象要难用一些。从IDL到常用的编程语言都分别有一个映射规则,比如C/C++、Java,程序员可以使用这些不同的语言来开发和使用CORBA对象,使用的方式也非常类似于面向对象语言中本地内存对象。这也是CORBA成功的一个重要的原因,它具备语言无关的特性,在应用程序集成时是一个非常好的粘合剂或者封装器。

              拿我的鼠目来看,CORBA在应用集成上是一个不可多得的利器。但是CORBA的本身过于复杂,就算有CASE工具的帮助下,能用好CORBA的程序员实在太少,更何况为CORBA提供好的工具支持并不是一个热门。因此如果是新开发一个应用程序,选择使用CORBA的人不多,J2EE和.NET也许更让人容易接受。还有若干CORBA阵线的牛人不满意CORBA,认为它太复杂了,造出了一个ICE(InternetCommunications Engine),可以说是简化版的CORBA。在腹背受敌的情况下,CORBA很可能会成为一项边缘技术。

              微软从COM、COM+和DCOM到.NET跨度显得非常大,看来是花了血本的,在宣传上也不断称.NET是崭新的技术。.NET差不多是在CORBA和J2EE的中间选出来的路线,它像CORBA一样支持多种开发语言,不像J2EE只能用Java语言,但是这个多语言是微软控制下的多语言,这些语言的编译器都是它的自家货色;它又不像CORBA那么开放,给竞争对手的RMI或者SOAP这样的协议都提供桥接的方案;比起J2EE实现和推广时,多家厂商乱哄哄的局面,微软一手操办.NET定义、实现和推广,尤显实力不俗,也不知道这是好事还是坏事。

             在.NET的实现方式上,微软的选择更亲近Java,各种开发语言的实现都会编译成中间代码,并且在运行时一次完成链接和优化。中间代码跑在CLR(Commonlanguage runtime)的一个平台上,而且它也是语言无关的。如果你把它实现在其他各种操作系统上,它也就成了平台无关的,不过好像微软自己不会干这种事。有了CLR这个间接层,微软还是在安全、易用、可移植性方面取得了不小的进步。那些标识出.NET的编程语言的语法都产生了很大的变化。

            微软的.NET也好,WebService也好,抛开技术不谈,进军大型企业应用开发还需要假以时日。在桌面系统和小型服务器上的成功经验,并不一定能照搬到这个领域,毕竟Windows操作系统在服务器领域并不是那么过硬的东西。不过,求乎其上得之中,微软技术进步的速度还是非常快,在桌面系统上,还有谁能对抗它呢。
原创粉丝点击