valhalla 插件

我对Valhalla项目的进度一直很感兴趣,但是Brian Goetz最近的信息“ Valhalla项目:目标 ”提高了我的兴趣。 我经常喜欢Goetz的作品,因为他结合了我最想成为技术作者的两个特征:他比他所写的内容更了解他所写的主题,而且还能够以可接近的水平介绍这些概念。向我们其他人缺乏他在该领域知识的深度。 邮件“ Valhalla项目:目标 ”在许多方面都具有重要意义,并且很容易接近; 任何对Valh​​alla项目为何如此激动感兴趣的人都应直接阅读该书。 尽管我建议阅读原始的,易于理解的消息 ,但我通过阅读本文中的此消息收集了一些意见。

在我的软件开发人员职业生涯中,无论我使用哪种编程语言,我通常都会发现大多数软件开发都需要一系列权衡取舍 。 遇到性能最好的代码比慢代码的可读性差的地方很常见。 实际上,这种权衡是导致过早优化的原因 。 过早优化的危险在于它是“过早的”,因为实际上并不需要通过可读性较低的代码获得的性能提升,因此人们正在有效地交换“更危险”或“更昂贵”的代码以获得不必要的性能优势。

在Java中,通常在使用对象时进行这种折衷。 对象通常更易于使用,并且是与高度使用的标准Java集合一起使用所必需的,但是对象的开销在内存和开销方面可能会非常昂贵。 Goetz在“ Valhalla项目:目标”中指出,Valhalla项目有可能成为相对罕见的情况之一,在这种情况下,可以实现“安全性,抽象性,封装性,表达性和[和]可维护性”。

Goetz提供了与对象和维护对象标识相关的成本的简要摘要。 从对不需要的情况下保持对象身份的缺点的简要说明中,Goetz转向了现在期望的Java值类型如何解决此问题的描述。 除了简要描述值类型的优点外,Goetz还为值类型提供了一些备用名称和短语,可能有助于更好地理解它们:

  • “像Java类一样的聚合放弃了它们的身份”
  • “代码就像一个类,就像一个整数一样工作”
  • “更快的对象”
  • “可编程原语”
  • “便宜的东西”
  • “更丰富的原语”

关于值类型,Goetz写道:“我们不必强迫用户在抽象/封装/安全性和性能之间进行选择。 我们可以同时拥有。” 我们不是每天都有蛋糕也可以吃 。

在“ Valhalla项目:目标”中,Goetz还讨论了“扩展泛型以允许对所有类型进行抽象的目标,包括基本类型,值甚至void”。 他使用了JDK的示例,该示例需要在其API中提供多种方法来涵盖非引用类型但必须由API支持的项,因为“泛型目前仅限于仅对引用类型进行抽象。” Goetz指出,即使自动装箱允许在API中使用原语并期望与该原语相对应的引用类型(例如,将int参数自动装箱为Integer引用),这种装箱也会降低性能。 在对问题进行了适当的解释之后,Goetz总结道:“如果我们可以一次编写一个通用类或方法,并且抽象所有可能的数据类型,而不仅仅是引用类型,那么对每个人来说都会更好。” 他补充说:“能够一次编写东西……意味着更简单,更富表现力,更常规,更可测试,更可组合的库在处理原始数据和值时不会像今天的拳击那样失去性能。”

Goetz在声明“ Valhalla:目标”时总结说:“ Valhalla可能是出于性能方面的考虑,但是将其视为增强抽象性,封装性,安全性,可表达性和可维护性的一种更好的方法-“不放弃”性能。 从这个角度来看,我真的很喜欢Valhalla项目:我们可以获得使用对象和引用类型的许多好处,同时又不放弃使用基元的性能好处。

Valhalla项目:目标为您提供了许多要以简洁易懂的方式进行思考的方法。 读这篇文章增加了我对Valhalla项目的未来的兴趣,我希望我们可以在JDK中看到它。

翻译自: https://www.javacodegeeks.com/2016/10/value-project-valhalla.html

valhalla 插件

valhalla 插件_Valhalla项目的价值相关推荐

  1. valhalla 插件_Java 15:密封类使Valhalla更加接近

    valhalla 插件 在Java 14发布之后,考虑到当前的状况,9月似乎还有很长的路要走. 在此处随时了解我们的Java 15新闻更新. JDK 15新闻 对于Java来说,这是繁忙的一周:已确认 ...

  2. server 2008 mysql 报错 0xc000007b_docker插件部署项目,volumes报错invalid volume specification...

    关于idea使用docker插件部署项目,volumes报错invalid volume specification 观察volumes那行,没写错的.但是........ 使用docker-comp ...

  3. 使用Tomcat Maven插件进行项目部署

    使用Tomcat Maven插件进行项目部署 一.使用插件原因 IDEA中使用关联本地Tomcat进行项目部署,步骤比较繁琐. 因此可以直接使用Maven中的Tomcat插件来部署项目. 二.部署步骤 ...

  4. maven-shade-plugin插件将项目打成可执行的jar包

    使用maven-shade-plugin插件将项目打成可执行的jar包 1.在pom.xml文件中添加maven-shade-plugin插件 全部文件: <build><plugi ...

  5. 使用Maven插件对项目进行打包

    问题描述: 使用Maven插件对项目进行打包时,控制台输入以下警告: [WARNING] Using platform encoding (UTF-8 actually) to copy filter ...

  6. 案例答疑:如何评估项目的价值?

    关于:价值评估 读者@岳岳-Lydia 项目在排列优先级的时候主要也是按照预估商业价值来排序.这就有个问题,功能开发出来之后并不完美,需要小的完善,但是运营人员通过手动处理又可以解决,于是这种优化功能 ...

  7. IDEA集成Docker插件实现项目打包镜像一键部署与Docker CA加密认证

    IDEA集成Docker插件实现项目打包镜像一键部署与Docker CA加密认证 Docker开启远程访问 修改该Docker服务文件 加载配置与重启 验证是否开启成功 IDEA配置docker 编写 ...

  8. 区块链项目的价值评估关键词:数据|筱静观察2019第3期

    从2008年到2018年的第一个十年,区块链技术的发展主要集中在虚拟货币和金融领域,接下来的第二个十年,我们可以预期区块链技术与产业结合的成果,也就是区块链的应用数量会不断增长. 本期筱静观察重点关注 ...

  9. fileinput.js php,bootstrap fileinput 插件使用项目总结

    基础的定义及使用方法网上有很多不再概述,这儿主要写本人所使用项目时碰到的一些问题及解决方案 注:本人使用此插件主要用来上传图片之用,插件其他上传文件没有涉及 一.上传最小数量问题 通过查阅其他资料可知 ...

最新文章

  1. scrapy分布式去重组件源码及其实现过程
  2. 开源自制6通道航模遥控器,Arduino Pro Mini NRF24L01模块
  3. [转载]2000/XP下删除隐藏旧网卡方法
  4. 使用parted给大于2T的磁盘分区
  5. Windows 7/8/8.1 硬盘安装法实现 ubuntu 14.04 双系统
  6. java stream中Collectors的用法
  7. prometheus python client
  8. 计算机网络作业6,计算机网络作业 6
  9. c语言输入成绩求不及格,输入一个学生信息,可以输出,不及格那个输出狗后会有程序停止运行...
  10. iPhone砍单后 分析师称苹果也将削减AirPods 3产量
  11. 干货:实现数据可视化的几个工具选择(工具+编程语言)
  12. shell 脚本执行报错/bin/bash^M: bad interpreter: No such file or directory
  13. VRay 2.0 for SketchUp高级室内渲染教程锌
  14. 测向交叉定位matlab,一种三维多站测向交叉定位算法
  15. 教你如何在电脑上建一个绝密文件夹
  16. 计算机硬盘170gb,假的:《最终幻想15》PC推荐配置GTX1080Ti+170GB硬盘为误传
  17. C语言坐标旋转,c语言矩阵的顺、逆时针旋转
  18. ux和ui_UI和UX设计人员的47个关键课程
  19. 2011-12-21的告别信
  20. python学习之爬取ts流电影

热门文章

  1. ybtoj洛谷P4406三角形面积并(扫描线)
  2. YbtOJ#791-子集最值【三维偏序】
  3. P2114-[NOI2014]起床困难综合症【位运算】
  4. 【SPFA】【最短路/次短路】GF打Dota
  5. Java 并发总结——AQS
  6. SpringCloud Consul自定义服务注册
  7. Mybatis生成器插件扩展,定制方法生成,list参数生成
  8. 阿里面试,为什么Kafka不支持读写分离
  9. Java进阶学习路线
  10. Java中线程池,你真的会用吗