第14章多语言编程.PDFVIP

  • 1
  • 0
  • 约1.02万字
  • 约 7页
  • 2019-08-18 发布于北京
  • 举报
第14章多语言编程.PDF

第14 章 多语言编程 计算机语言就像鲨鱼,要是保持静止就会死。和现实生活中的语言一样,计算机语言也在不断发展 演化(不过幸运的是,青少年还不会往计算机语言里添加各种俚语──起码不会像英语里的俚语出现 得那么快)。语言的变迁是为了适应周遭环境的变化。譬如说,Java 最近加上了泛型(generic )和 注解(annotation ),这应该归功于它与.NET 之间永无休止的军备竞赛。不过,在某些时候,语言的 变迁也可能反而阻碍了生产力。看看从前的一些语言(Algol 68 或是Ada ),你就会发现:语言的发 展是有界限的,要是走得太远,它就会变得笨重,最终不堪重负轰然倒下。Java 已经接近自己的界 限了吗?如果是,我们这些Java 程序员的出路在哪儿? 本章将向读者介绍多语言编程的概念──在我看来这将是Java 和.NET 平台未来的出路,也是所有热 爱这两个平台的程序员的出路。不过在深入进去之前,我们应该看看历史和现状:Java 怎么了?多 语言编程又能带来什么帮助? 历史与现状 如今在企业应用和其他很多软件开发领域里,Java 已经成为无庸置疑的主流语言。像我这样曾经在 那个人们听到“Java”时只会想到一个印尼小岛或者一种咖啡的年代里生活过的人,能亲眼见证Java 的发展确实激动人心。但流行并不等价于完美:Java 也有它自己的问题,大多是为了历史包袱的原 因(有趣的是,Java 在一开始是作为一种全新的语言被发明出来的,并没有任何向后兼容的需 求)。现在我们就来看看Java 如今是什么样子,以及它是如何走到如今这一步的。 Java 的身世家教 在那遥远的过去, 一位传说中的神人 (我们称他为James )需要为电烤箱和有线电视机顶盒发明一 种新的编程语言。他不想使用那些众人皆知深受喜爱的语言(C 和C++ ),因为──就连真心喜欢这 些语言的人们也承认──这些语言不适合这类用途。由于内存管理的问题每天重启几次计算机似乎还 能忍受,但要是有线电视也得这么用就太烦人了。 于是有一天,James 决定发明一种新语言,用来填补那些深受喜爱的旧语言力所不及的空缺。他创造 了Oak ,也就是后来的Java。(好吧,我是跳过了这段传奇中的一些情节。)Java 确实解决了C 和 C++的很多问题,而且恰好又赶上了第一波互联网浪潮。Bruce Tate 把Java 的流行称作“完美风暴” : 一切条件在那时齐聚,才让Java 如同超新星爆发一般迅速风靡全球。 在Java 诞生之初,互联网和浏览器让所有人着迷。Java 运行在那个年代的硬件和操作系统上还有些 慢,但它有一点无可比拟的优势:它能以applet 的形式在浏览器里运行。虽然如今看来有些怪异, 但确实是applet 让Java 进入了人们的视野。当然了,历史总在轮回:我们仍然编写能在浏览器里运 行的富客户端应用,不过改为使用JavaScript──现在JavaScript 也快要焕发第二春了,这可真是够讽 刺的。 当所有人都意识到“在浏览器里跑一个巨大的企业应用”不是什么好主意时,服务器端的Java 就粉墨 登场了,于是人们的字典里又加上了“servlet”和“Tomcat”等字眼。 Java 的 暗面 阴 出现在恰当的时间和地点并不代表Java 就是一个完美的解决方案。Java 有一些有趣的包袱;考虑到 作为一种全新的语言它原本不必有任何包袱,这些包袱就更显得有趣。在你学Java 的时候,你经常 会自言自语:“你在玩我吗──这也能行?怎么回事?”这些令人费解的东西就是Java 的包袱。也许你 已经忘了大部分这样的时刻,因为Java 就是这样的。不过现在,让我们来回想几件这样的事吧。 那是什么时候的事? 想想Java 程序初始化的顺序。初始化是构造函数的职责,对吗?呃……对,又不对。你还可以创建 静态初始化块(static initializer )或是实例初始化块(instance initializer )。静态初始化块在构造函数 之前执行,实例初始化块则在构造函数执行过程中的某个时刻执行。而且初始化块你想写多少就可 以写多少。噢,对了,你还可以在声明对象的同时调用其构造函数。那么,谁先来:静态初始化 块,实例初始化块,还是被声明(同时被构造)的对象的初始化逻辑?还没明白?那就看下面这个 例子: public class LoadEmUp { private Parent _parent = new Parent(); { System.out.println(Told you so); }

文档评论(0)

1亿VIP精品文档

相关文档