1.2.9 高性能

1.2.9 高性能

翻译后的字节码的运行速度通常就足够了,不过有时候需要更高的运行速度。字节码可以实时(运行时)翻译成正在运行程序的特定CPU的机器码。

早期,用户并不同意“自己码的运行速度就足够了”这句话。今天,JIT编译器已经好用到爆了,这让Java代码能运行得跟传统的C编译器编译后的代码一样快,有时候甚至更快,因为它能获取关于程序的更多信息。例如,JIT编译器能够监视代码的执行频率并只是优化运行频率高的代码段。更牛X的优化是消除(内联)函数调用。JIT编译器知道哪些类已经被加载。如果基于当前已加载的类,这个函数没有被重写,它就可以使用内联来优化这个函数调用,而且能在必要时取消内联。

1.2.10 多线程

多线程的好处是更好的操作响应性和行为实时性

今天,我们比以往更关心并行性,因为摩尔定律走到了尽头。我们无法获得更快的处理器,只能使用更多的处理器并让它们同时工作。然而大多数编程语言都没有考虑这个问题。
Java遥遥领先于它的时代。它是第一个支持并发编程的主流语言。正如你从前文中的官方文档上看到的,当初支持并发编程的动机与现在稍微不同。那时候,多核处理器还很稀罕,而网络编程刚刚兴起,客户端的处理器花费了大量时间等待服务器的响应。所以当初的初衷是使用并发编程来让用户的界面不会定格在那里苦苦等待(而是可以进行其他的任务)。
并发编程并不简单,而Java做得很好,它让并发编程变得可以掌握。

1.2.11 动态性

在许多方面,Java比C或C++更具动态性。它在设计之初就是为了适应一个不断进化的环境。新方法和新的实例变量可以被自由地加入库中,而这种添加并不会影响库的使用者。在Java中,获取运行时类型信息非常简单直接。

在需要向使用中的程序添加代码的时候,这个特性尤为重要。一个例子就是从Internet上下载并在浏览器中运行的代码,在C/C++中,这确实是个挑战。不过Java的设计者很有先见之明,他们知道动态性的语言能使程序进化变得容易。他们的成就就是将动态性加入到了Java这样流行的语言中。

Note
Java刚刚取得成功不久,微软便发布了一款与Java基本上雷同的语言和虚拟机,名字叫J++。现在,微软已经放弃了J++,并推出了另一款语言——C#,它同样跟Java类似,不过运行于不同的虚拟机。本书不介绍J++和C#。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值