提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
转帖|行业资讯|编辑:龚雪|2017-10-12 10:10:27.000|阅读 334 次
概述:在历经多次跳票之后,Java 9 终于在千呼万唤中正式发布。作为霸占编程语言排行榜鳌头多年的老牌语言,Java 9 中有哪些不得不说的新特性?Java 语言的未来又将如何?
# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>
MyEclipse超值折扣 限量 100 套!
【】
在历经多次跳票之后,Java 9 终于在千呼万唤中正式发布。从这个版本开始,Java 将每半年发布一个版本。作为霸占编程语言排行榜鳌头多年的老牌语言,Java 9 中有哪些不得不说的新特性?Java 语言的未来又将如何?
针对 Java 9 新特性的介绍已经非常多了,我这里不想再做一个百科全书一样的列表,希望从不同角度简要点评部分特性。
首先,谈到 Java 9 大家往往第一个想到的就是 Jigsaw 项目,这是一个雄心勃勃的项目。
大家知道,Java 已经发展超过 20 年(95 年最初发布),Java 和相关生态在不断丰富的同时也越来越暴露出一些问题,比如 Java 运行环境的膨胀和臃肿,各种类库和工具在提供强大功能的同时,也越来越复杂,不同版本的类库交叉依赖导致 Jar Hell 等让人头疼的问题,这些都阻碍了 Java 开发和运行效率的提升。
但是由于兼容性等各方面的掣肘,对 Java 进行大刀阔斧的革新越来越困难,Jigsaw 从 Java 7 阶段就开始筹备,Java 8 阶段进行了大量工作,终于在 Java 9 里落地,有种千呼万唤始出来的意味。
Jigsaw 项目的目标是改进 Java SE 平台,使其可以适应不同大小的计算设备;改进其安全性,可维护性,提高性能;简化各种类库和大型应用的开发和维护。
这个项目的工作量和难度大大超出了初始规划。JSR 376 Java 平台模块化系统(JPMS, Java Platform Module System)作为 Jigsaw 项目的核心, 其主体部分被分解成 6 个 JEP(JDK Enhancement Proposals)
可以看到这是一个庞大的系统工程,Java 的方方面面,包括 JDK 编译工具,运行时,Java 公共 API 和私有代码等等,完全是一个整体性的改变。
随着 Java 平台模块化系统的落地,开发人员无需再为不断膨胀的 Java 平台苦恼,例如,您可以使用 jlink 工具,根据需要定制运行时环境。这对于拥有大量镜像的容器应用场景或复杂依赖关系的大型应用等,都具有非常重要的意义。
从软件开发实践的角度,Java 语言层面提供对模块的支持,可以鼓励(当然在某种程度上也可以看作强制)更加规范的开发实践,利用业界在开发领域几十年的经验、教训总结出的最佳实践,促进 Java 生态的健康发展。比如,更加完善的隐藏实现细节,这不仅可以促进面向接口、约定的编程,也可以避免可能的安全风险等。
不过,换个角度来说,天下没有免费的午餐,由于 JPMS 是语言平台层面的支持,它并不是完全透明的,也就是说不管用户是否真的需要或从中收益,都会或多或少的受其影响。
对此,我们可以从 JPMS 评审中针对类似深度反射限制之类的激烈争吵中,深刻体会到。比如,针对反射访问控制,最终 Java 9 开发团队,采取了相对折中的办法,在反射领域默认保持 Java 8 的默认行为。Java 9 在兼容性方面,相比于过往的版本,采取了更大的容忍度。
不过,Java 9 的相当一部分特性仍然是对用户透明的。只要升级到 Java 9,不需要或者很少需要用户参与动作就能获益。比如,更加紧凑的字符串实现;改进的竞争锁机制;改进安全应用性能 ;利用特定 CPU 指令优化 GHASH 和 RSA 等等,这些都是开箱即用、触手可得的改进。
对于部分开发者来说,探究 Java 内部 API 或者平台底层能力是一件非常酷的事情,但这往往并不是非常容易,比如部分能力可能并没有在历史版本的公共 API 中暴露出来(比如 Unsafe 相关),或者需要特定领域的知识。在 Java 9 中,不要错过 JEP 193: Variable Handles 和 JEP 274: Enhanced Method Handles,JEP 259: Stack-Walking API,JEP 285: Spin-Wait Hints 等特性。
另外,Java 9 中还有很多承上启下的特性,为未来创新打下基础或者整合、规范现有碎片化的功能,我会介绍一些有代表性的新特性。
在 Java 虚拟机领域,JEP 271: Unified GC Logging 和 JEP 158:Unified JVM Logging,对各种 JVM 日志进行了统一,大家终于不用为各种碎片化的日志选项苦恼了。
Oracle 一直在努力提高 Java 启动和运行时性能,希望其能够在更广泛的场景达到或接近本地语言的性能。但是,直到今天,谈到 Java,很多 C/C++ 开发者还是会不屑地评价为启动慢,吃内存。
简单说,这主要是因为 Java 编译产生的类文件是 Java 虚拟机可以理解的二进制代码,而不是真正的可执行的本地代码,需要 Java 虚拟机进行解释和编译,这带来了额外的开销。
JIT(Just-in-time)编译器可以在运行时将热点编译成本地代码,但是实际应用可能非常庞大,大型 Java 应用的预热往往非常耗时,而且非热点代码可能根本没有机会被 JIT 编译。
在 JDK 9 中, AOT(JEP 295: Ahead-of-Time Compilation)作为实验特性被引入进来,开发者可以利用新的 jaotc 工具将重点代码转换成类似类库一样的文件,这样会大大降低启动开销。
另外 JVMCI (JEP 243: Java-Level JVM Compiler Interface)等特性,对于整个编程语言的发展,可能都具有非常重要的意义,虽然未必引起了广泛关注。目前 Graal Core API 已经被集成进入 Java 9,虽然还只是初始一小步,但是完全用 Java 语言来实现的可靠的、高性能的动态编译器,似乎不再是遥不可及,这是 Java 虚拟机开发工程师的福音。
与此同时,随着 Truffle 框架和 Substrate VM 的发展,已经让个别信心满满的工程师高呼“One VM to Rule Them All!”, 也许就在不远的将来 Ploygot 以一种另类的方式成为现实。
前面简短地谈了谈 Java 9 中的一些令人激动的特性,Java 9 在取得这些进步的同时,那么在其的研发过程中有哪些教训,当前和未来遇到了那些挑战呢?
首先,就是如何更加快速、敏捷地进行创新。在 Java 9 的开发过程中, 非常突出的一点就是,由于 Jigsaw 项目的延期,导致 Java 9 的发布一再推迟,这带来了很多负面影响。大批特性已经完成多时,却无法及时被实际应用采纳,开发者无法及时地从中获益,也很难尽早发现和反馈可能存在的问题或改进。这不禁让人反思 Java 传统的研发模式的局限性。
针对这些情况,Java 首席架构师 Mark Reinhold 已经发出倡议,建议从传统的以特性驱动的发布周期,转变为以时间驱动的(6 个月为周期)发布模式,并逐步的将 Oracle JDK 原有商业特性进行开源,Java Flight Recorder 等杀手级工具和特性,一定会大受开发者的欢迎。针对企业客户的需求,Oracle 将以三年为周期发布长期支持版本(long term support)。
第二,随着云计算和 AI 等技术浪潮,当前的计算模式和场景正在发生翻天覆地的变化,不仅对 Java 的发展速度提出了更高要求,也深刻影响着 Java 技术的发展方向。传统的大型企业或互联网应用,正在被云端,容器化应用、模块化的微服务甚至是函数(FaaS, Function-as-a-Service)所替代。
Java 需要在新的计算场景下,改进开发效率。这话说的有点笼统,我谈一些自己的体会,Java 代码虽然进行了一些类型推断等改进,更易用的集合 API 等,但仍然给开发者留下了过于刻板、形式主义的印象,这是一个长期的改进方向,例如,JEP 286: Local-Variable Type Inference;持续改进并发计算框架,Java 的并发特性非常强大和系统,但某种程度上过于复杂,在今年的 JVMLS 上,阿里巴巴 AJDK 组介绍了利用协程改进并发的实践,这是一个令人眼前一亮的创新;Java 非常需要更加友好的本地代码支持,相关的特性有很多好的想法和尝试,比如 Panama 项目;Value Types 和改进的泛型,有兴趣可以参考 Valhalla 项目。
最后,进一步改进启动和运行性能、优化计算资源使用。目前,相当一部分的 Java 类库和虚拟机特性都是针对长时间、大数据量、高并发等复杂任务进行的优化,但是在部分云计算场景中,比如越来越引起大家关注的 FaaS 应用,短时间、无状态的函数正在成为常见的计算单元。那么在这种场景下,Java 必须进行相应的改进和创新,才能保持和强化目前在软件开发领域的竞争力。比如,提高 Java 运行时启动速度,尤其是在容器环境的初始化表现;保证 CPU 等计算资源调度能力能够适应容器环境的新情况,最直接的就是 Java 平台需要支持基于 cgroup 等技术的资源管理;针对新场景下的 GC 优化;如何提高数据密度和计算效率等等。
以上很多方面往往不是孤立的,也不是非常简单就可以完成的,很多改进都是依赖于相关语言基础技术的进步和突破,Java 的进步需要持之以恒的耐心和持续的努力与投入。
最后,欢迎大家能够参与到 OpenJDK 社区,Java 是大家的,欢迎您向 OpenJDK 提供建议、意见或者直接提交自己的改进,在社区中听见越来越多的来自中国的声音是非常令人高兴的事情,让我们携手促进 Java 的创新和发展。
本文转载自杨晓峰
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@pclwef.cn
文章转载自:慧都控件网通过提供强大的3D CAD数据访问工具并适用于桌面、移动和Web的高级环境3D可视化发动机,HOOPS在提升造船设计和制造流程的效率方面发挥了重要作用。
HOOPS Luminate在汽车行业中的应用具有广泛的潜力和深远的影响。它通过提供高效的3D可视化、虚拟装配与拆解、性能分析、客户定制等功能,帮助汽车制造商在设计、生产和销售过程中提升效率、降低成本并提高产品质量。
在不断发展的软件开发世界中,使工具和框架与最新的平台版本保持同步至关重要,欢迎查阅~
全球航运业对国际贸易至关重要,全球 90% 以上的商品通过海运运输。准确监控和控制这些集装箱的移动对于维持高效的供应链至关重要。手动输入集装箱号码是这一程序的关键部分,它带来了相当大的挑战,例如人为错误和效率低下。
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@pclwef.cn
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢