杭州Java培训
达内杭州Java培训中心

15268258619

热门课程

JavaOne 2015主题演讲

  • 时间:2015-12-01
  • 发布:杭州java培训
  • 来源:OPEN资讯


    达内java培训专家获悉,JavaOne 2015主题演讲上,甲骨文公司Java平台开发部的负责人Georges Saab、Mark Reinhold、Brian Goetz等人,谈论Java20年来的发展历程。

    这次演讲中,Brian Goetz谈论了为Java 虚拟机和Java语言带来重大进展的Valhalla项目和 Panama项目。

    一、Valhalla项目

    Goetz提到Valhalla项目包括了一些Java语言和Java虚拟机的特色,这些特色用于与纯数据共同协作,而这些纯数据不包含对象强加的所有开销。

    举例:有一个简单的域对象 Point Class:

class Point {
 final int x;
 final int y;
}

    一个X-Y的实例数组会伴随着150%的内存开销,只为表示数据的两个词;一个两个词的对象头(通常用于所有的对象)及其元素,作为Point对象的引用,再加上每一个Point对象的头:

    值类型

    如果Point类不可改,我们就不要求它的身份;我们可以将Point类以数值类的形式定义为一个纯数据类型的Point。

value class Point {
 final int x;
 final int y;
}

    这样的数值类型将不存在间接引用。因此,我们拥有一个友好的高速缓存布局,而这个布局不仅可以高效地使用内存,还具有更好的局域性。

    特化泛型

    数值类型如今可以向基元类型那样装箱了,泛型被支持的程度最终也将超过所有数值类型。 

    Goetz认为,即便你工作时用的是:ArrayList<Integer>但实际上你想要的是:ArrayList<int>

    因此现阶段核心Java库中,这是一个问题。但当你指定ArrayList<Integer>其内存控制和内存开销的低效性与之前x-y Point类数组的例子十分相似。

    如果指定:T为整型,对T进行装箱(Box<T> for T=int),并对值类型进行扩展,开发者就会实现之前数值类型的那个例子中说的巨大的成本效益。

    二、Panama项目

    Goetz继续讨论Panama项目,该项目旨在为本地数据和本机代码以更快、更加可信和更加安全的方式提供Java虚拟机的访问权限。

    在Panama项目中,名为jextract的本地头文件输入工具会提取布局元数据,并生成Java接口去调用本地方法或访问本地结构。在运行时期间,Java虚拟机会生成与用户可能编写的JNI代码相似的代码。

    我们采用jextract来解析头文件,同时也会得到机器类型的信息。所得到的jar文件具有结构的定义和方法的声明。



上一篇:Java开发:byte转int的方式
下一篇:给Java开发者推荐的一些书籍

恭喜达内获得《产学合作协同育人项目合作伙伴奖》

中传学子参加达内Java培训,转身成为Java工程师月薪12.5K

达内教育总裁韩少云受邀出席GIE国际教育峰会做主题演讲

学员参加达内网络营销培训,获10万年薪入职微众传媒

选择城市和中心
贵州省

广西省

海南省