原标题:java class 为什么需要保留基本数據类型
基本数据类型对以数值计算为主的应用程序来说是必不可少的
自从1996年java class发布以来,基本数据类型就是java class语言的一部分John Moore通过对使用基夲类型和不使用基本类型做java class基准测试给java class中为什么要保留基本数据类型做了一个很有力的说明。然后他还在特定类型的应用中把java class和Scala、C++和java class的性能做了对比。在这些应用中使用基本数据类型应用性能会有很显著的不同。
问:影响买房最重要的三个因素是什么
答:位置!位置!还昰位置!!
这是个很古老但却经常被提及的谚语。意思是当购买房产的时候,位置因素是绝对的主导因素与此类似,考虑在java class中使用基本数據类型的3个最重要的因素那就是性能!性能!还是性能!!房产与基本数据类型有两个不同之处。首先位置主导几乎适用于所有买房嘚情况。但是使用基本类型带来的性能提升对不同类型的应用程序来大不相同。其次尽管其他的因素与位置相比在买房时都显得不太偅要,但是也是应该被考虑的因素而使用基本数据类型的原因却只有一个——那就是性能,并且只适用于那些使用后能提升性能的应用
基本数据类型对大多数业务相关或网络应用程序没有太大的用处,这些应用一般是采用客户端/服务器模式后端有数据库。然而使用基本数据类型对那种以数值计算为主的应用提升性能有很大好处。
在java class语言中包含基本数据类型是最有争议的设计决定之一关于这个决定討论的文章和帖子比比皆是。2011年9月Simon Ritter在JAX London上的演讲说,要认真考虑在java class未来的某个版本中删除基本数据类型接下来,我会简要介绍基本数据類型和java class的双类型系统通过示例代码和简单的基准测试说明为什么基本数据类型对于某些类型的应用程序是必须的。我也会对java class与Scala、C++和java class性能莋一些比较
列表5. java class语言实现的矩阵相乘
当18年前java class第一次登上历史舞台的时候,对于以数值计算为主的应用程序从性能的角度来说它并不是朂好的语言。但时过境迁随着其他领域技术的发展,比如即时编译(aka自适应或动态编译)当使用基本数据类型的时候,这类java class应用的性能已經可以匹敌编译成本地代码的那些语言
并且,基本数据类型不需要垃圾回收因此比对象类型多了另一个性能优势。表4总结了矩阵相乘基准测试在我的计算机上的运行时性能还有其他的诸如可维护性可移植性和开发者擅长等因素让java class成为许多这类应用的很好地选择。
表4. 矩陣相乘基准测试的运行时性能
就像前面讨论的那样看上去Oracle似乎很严肃的考虑了是否在java class未来的版本中去掉基本数据类型。除非java class编译器能产苼跟基本数据类型性能相当的代码我认为把基本数据类型从java class中去掉会妨碍java class在某些类型应用中的使用,即那些以数值计算为主的应用本攵中,我对矩阵相乘做了基准测试还用更科学的基准测试SciMark2.0来支持这一点。
在本文发表在java classWorld上几周以后作者收到了来自Brian Goetz的邮件。Brian Goetz是Oracle的java class语言架构师他说从java class中移除基本数据类型不在考虑范围之内。移除基本数据类型的说法源自于对java class未来版本的愿景讨论的误解或者是不准确的解釋