- 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);
}
您可能关注的文档
- 离心压缩机闭式叶轮电解加工方法的研究.PDF
- 种PID参数整定的粒子群优化算法-计算机工程与应用.PDF
- 种基于偏振信息的恒星白天观测方法.PDF
- 科尔摩根AKD驱动器系列-Kollmorgen.PDF
- 稀疏表示算法在GPU的优化OptimizationofSparseRepresentation.PDF
- 程序和证据规则-ICCLegalTools.PDF
- 程序设计教材规划对课程建设的指导性研究-DPIProceedings.PDF
- 程控电源知识.doc
- 稻米表观直链淀粉含量由两对非等位基因控制-中国水稻科学.PDF
- 突发公共卫生系统操作手册-信用信息.doc
- 25-26学年政治(部编版)选择性必修第二册课件:第1单元 周清1 民法中的人身权及财产权.pptx
- 25-26学年政治(部编版)选择性必修第二册课件:1.4.1 权利保障 于法有据.pptx
- 2025北京丰台区高二(上)期中地理(A卷)含答案.docx
- 2025北京三帆中学初三(上)开学考英语试题含答案.docx
- 2025北京一零一中初三9月月考语文试题含答案.docx
- 2025北京海淀区初三(上)期中道法试题含答案.docx
- 2025北京丰台区高一(上)期中政治(A卷)含答案.docx
- 25-26学年政治统编版必修4课件:3.3 唯物辩证法的实质与核心.pptx
- 25-26学年政治统编版必修4课件:7.2 正确认识中华传统文化.pptx
- 湖北省部分高中2026届高三上学期二模联考 历史试卷.docx
最近下载
- J B-T 8577-2015 内燃机水散热器技术条件.pdf VIP
- 王明新数学物理方程习题解答.pdf VIP
- 云网融合的多云网络架构.pdf VIP
- 20220301电缆行业SAP解决方案.pptx VIP
- 【精选】0深圳生态规划0深圳生态规划.pdf VIP
- KA_T 22.1-2024 矿山隐蔽致灾因素普查规范 第1部分:总则.docx VIP
- GDBD-2025-12 输变电工程环保水保监测与验收费用计列指导意见.pdf VIP
- 手把手教你做应付票据审计底稿.pdf VIP
- 《商务英语:职场进阶》教师用书 完整版.pdf VIP
- 深度:短期看新车型销量及FSD,中期看能源,长期看Optimus.pdf VIP
原创力文档

文档评论(0)