- 写在前面的话
- 引言
- 第 1 章 对象入门
- 第 2 章 一切都是对象
- 第 3 章 控制程序流程
- 第 4 章 初始化和清除
- 第 5 章 隐藏实施过程
- 第 6 章 类再生
- 第 7 章 多形性
- 第 8 章 对象的容纳
- 第 9 章 违例差错控制
- 第 10 章 Java IO 系统
- 第 11 章 运行期类型鉴定
- 第 12 章 传递和返回对象
- 第 十三 章 创建窗口和程序片
- 第 14 章 多线程
- 第 15 章 网络编程
- 第 16 章 设计范式
- 第 17 章 项目
- 附录 A 使用非 JAVA 代码
- 附录 B 对比 C++和 Java
- 附录 C Java 编程规则
- 附录 D 性能
- 附录 E 关于垃圾收集的一些话
- 附录 F 推荐读物
1.13 Java 还是 C++?
Java 特别象 C++;由此很自然地会得出一个结论:C++似乎会被 Java 取代。但我对这个逻辑存有一些疑问。无论如何,C++仍有一些特性是 Java 没有的。而且尽管已有大量保证,声称 Java 有一天会达到或超过 C++的速度。但这个突破迄今仍未实现(尽管 Java 的速度确实在稳步提高,但仍未达到 C++的速度)。此外,许多领域都存在为数众多的 C++爱好者,所以我并不认为那种语言很快就会被另一种语言替代(爱好者的力量是容忽视的。比如在我主持的一次“中/高级 Java 研讨会”上,Allen Holub 声称两种最常用的语言是 Rexx 和 COBOL)。
我感觉 Java 强大之处反映在与 C++稍有不同的领域。C++是一种绝对不会试图迎合某个模子的语言。特别是它的形式可以变化多端,以解决不同类型的问题。这主要反映在象 Microsoft Visual C++和 Borland C++ Builder(我最喜欢这个)那样的工具身上。它们将库、组件模型以及代码生成工具等合成到一起,以开发视窗化的末端用户应用(用于 Microsoft Windows 操作系统)。但在另一方面,Windows 开发人员最常用的是什么呢?是微软的 Visual Basic(VB)。当然,我们在这儿暂且不提 VB 的语法极易使人迷惑的事实——即使一个只有几页长度的程序,产生的代码也十分难于管理。从语言设计的角度看,尽管 VB 是那样成功和流行,但仍然存在不少的缺点。最好能够同时拥有 VB 那样的强大功能和易用性,同时不要产生难于管理的代码。而这正是 Java 最吸引人的地方:作为“下一代的 VB”。无论你听到这种主张后有什么感觉,请无论如何都仔细想一想:人们对 Java 做了大量的工作,使它能方便程序员解决应用级问题(如连网和跨平台 UI 等),所以它在本质上允许人们创建非常大型和灵活的代码主体。同时,考虑到 Java 还拥有我迄今为止尚未在其他任何一种语言里见到的最“健壮”的类型检查及错误控制系统,所以 Java 确实能大大提高我们的编程效率。这一点是勿庸置疑的!
但对于自己某个特定的项目,真的可以不假思索地将 C++换成 Java 吗?除了 Web 程序片,还有两个问题需要考虑。首先,假如要使用大量现有的库(这样肯定可以提高不少的效率),或者已经有了一个坚实的 C 或 C++代码库,那么换成 Java 后,反映会阻碍开发进度,而不是加快它的速度。但若想从头开始构建自己的所有代码,那么 Java 的简单易用就能有效地缩短开发时间。
最大的问题是速度。在原始的 Java 解释器中,解释过的 Java 会比 C 慢上 20 到 50 倍。尽管经过长时间的发展,这个速度有一定程度的提高,但和 C 比起来仍然很悬殊。计算机最注重的就是速度;假如在一台计算机上不能明显较快地干活,那么还不如用手做(有人建议在开发期间使用 Java,以缩短开发时间。然后用一个工具和支撑库将代码转换成 C++,这样可获得更快的执行速度)。
为使 Java 适用于大多数 Web 开发项目,关键在于速度上的改善。此时要用到人们称为“刚好及时”(Just-In Time,或 JIT)的编译器,甚至考虑更低级的代码编译器(写作本书时,也有两款问世)。当然,低级代码编译器会使编译好的程序不能跨平台执行,但同时也带来了速度上的提升。这个速度甚至接近 C 和 C++。而且 Java 中的程序交叉编译应当比 C 和 C++中简单得多(理论上只需重编译即可,但实际仍较难实现;其他语言也曾作出类似的保证)。
在本书附录,大家可找到与 Java/C++比较.对 Java 现状的观察以及编码规则有关的内容。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论