开发者平台
联系我们
当前位置:主页 > 开发者平台 >

开发者平台

关于Java9的特性、改进的地方、模块、市场反馈你知道几个?

作者:918Õ    发布时间: 2018-09-28

关于Java9的特性、改进的地方、模块、市场反馈你知道几个?

导读:2017年9月21日,历经曲折的 Java 9 终于发布了! 离现在也有一段时间了,那么关于Java9的特性、改进的地方、模块、市场反馈。你知道那几个?Java9可以说是一个庞大的系统工程。Jav
2017年9月21日,历经曲折的 Java 9 终于发布了! 离现在也有一段时间了,那么关于Java9的特性、改进的地方、模块、市场反馈。你知道那几个?

Java9可以说是一个庞大的系统工程。Java 的方方面面,包括 JDK 编译工具,运行时,Java 公共 API 和私有代码等等,完全做了一个整体改变。

首先:聊聊,对于人们Java 9误解的有哪些地方?

误解一:Maven不适用于Java 9

Apache Maven的主席Robert Scholte宣布所有Maven版本3.0及以上版本都能够在Java 9上运行。某些插件可能仍存在一些问题,但在大多数情况下都可以正常运行。

误解二:程序员依赖的工具、库以及框架都不能在Java 9上运行

有许多工具和框架都可以在Java 9上使用,如:

· Maven 3.0.0

· TestNG 6.11

· Log4J 2.8.2

· Clojure 1.8.0 *

· JUnit 4.12 5.0.0-M4

· IntelliJ 2017.2

· Spring Boot 1.5.3 Spring Framework 4.3.8等

Oracle的开发团队向程序员推荐了以上的工具和框架,这些可以确保Java 9的兼容性和访问权限。

误解三:类似于OSGi的模块在Java 9根本不能运行

这个理解是错误的。只要不使用内部API,OSGi这一类的模块仍然会按照预期方式使用类路径,Java 9并没有阻止使用第三方模块系统。

误解四:Java 9中类路径的代码不能使用某些模块导致Java社区分解

这种想法过于偏激了。类路径上的代码可以读取所有公共以及受保护类型的解析模块,这允许较大系统逐渐迁移。此外,一个可以被a.JAR文件运输的库或者框架可以被转化成一个模块。

误解五:强封装是Java 9被接受的唯一障碍

强封装绝对不是Java 9使用的唯一障碍,人们依赖的内部API现在已经被隐藏了,但是这个版本中还有很多不兼容的东西。Rt.jar已经被一种新的更可靠的格式取代,系统图像的布局也不同,一系列系统类有待提高安全性,这就意味着它们由类加载器加载,但是与引导类加载不同,版本字符串格式被改变了。

误解六:sun.misc.Unsafe不会在Java 9中,所有的东西都会被中断

这个担心可能是多余的。sun.misc.Unsafe的API和其他常用内部API一样仍可在Java 9中进行访问。

前面说到,Jigsaw的强封装会让我们以前依赖的许多的内部API无法访问。虽然强封装不是唯一的障碍,但也会造成一定的问题。为了解决这个问题,Reinhold提出处理这些API的步骤:

1、 如果在JDK 8中有支持替换—— API封装到JDK 9中。

2、 如果在JDK 8中无支持替换—— API不封装到JDK 9,仍可被外部代码访问。

3、 如果在JDK 9中有支持替换—— 抛弃,然后API封装到JDK 9中,而且很有可能在JDK 10中删除。

这个计划针对的是允许非法访问最常用的内部API,直到新的更换标准API引入平台。

误解七:Jigsaw将修复多版本问题

这个计划好像还没有开始实行,虽然Java社区的一部分人都希望Java 9能够以允许方便快捷的加载给定名称的多个不同模块。相反,来自甲骨文的Alan Bateman建议应该从构建工具和容器入手,来解决同一模块的多版本问题。

误解八:Jigsaw无法修复多版本问题,压根不能用

关于多版本的解决有两个主要的含义:

1、 用类加载器以任何方式工作的API将以不兼容的方式发生变化。任何对类加载器关系做出假设的代码都不会像以前那样工作。

2、 构建工具需要重新优化支持多版本

Jigsaw团队正在努力的解决这些问题。

误解九:现有系统模块化很容易

JDK模块化花了9年的时间,任何大型系统都需要话费大量时间和资源才能从上一个版本转化到下一个版本,而且最终获得的成品可能还会不尽人意。在模块化现有系统之前,权衡成本和收益是必须要考虑的问题。如果你正在构建一个新的项目,那一定要使用模块AAAAAAAA>温馨提示:所学的知识点没有系统化,很难在技术领域继续突破的可以加Java高级架构进阶群:671017482

我们再来了解一下Java 9主要新特性

Java 9主要新特性

模块化——Jigsaw

交互式命令行——JShell

默认的垃圾回收器——G1

进程操作改进

竞争锁的性能优化

分段代码缓存

优化字符串占用空间

Java 9迎来了哪些强化?

作为甲骨文公司起草的JDK增强提议(简称JEP)之一,它包含了很多有趣的更新,目的是用于解决并行机制相关的问题。

根据这份提议,Java 9将迎来以下变更与更新:

各接口支持Reactive Streams发布的订阅框架。

CompletableFuture API将得到全面改进,包括支持支持延迟、超时、子类化和其它方法。

更多小型调整与javadoc规范修改。

这里我们主要分析两项核心内容。第一项内容是Java 9将支持Reactive Streams,这个提议来自Java技术社区提出的改进计划,目的是改进开发者的并行工作流程。其次是CompletableFuture API的修复性提升,可以让开发者回到Future T 。

其次:我们听一下别人对Java 9的状况有哪些回答和想法

一:Java 9延迟到9月份对你而言意味着什么? 你是否同意JCP执行委员会决定不批准JSR 376公开评论投票的做法?

Markus Eisele :我就没想到今年还能看到Java9,模块化JDK的明显优势是JVM本身,这对框架程序员造成了很大负担,甚至对实施应用程序的方式产生重大影响。我相信如果没有EC的改变和澄清,没人会用Java9,除了Oracle。

Marcus Biel :这个很难说,Jigsaw是一个很大的机会,可能短期内不被看好。但长远来看,程序员将从中受益。

Trisha Gee :我是JCP执行委员会的代表,我渴望尽快发布Java 9。程序员要知道,让一切走向正轨是需要时间的,委员会以及社区都将从用户处获得反馈,并不断改进。

Thorsten Heller:我完全同意JCP执行委员会对JSR 376投票的决定。对于介绍如此多的开放性问题或不清楚的话题规范绝对没有任何意义,所以推迟Java 9和修改规范是一个明智的决定。

Jake Wharton :不应该因为第一次投票结果不理想就否定委员会的努力,经历了两次投票之后,我相信一定有了不小的改进。

Quentin Adam :虽然Jigsaw对未来十年的Java平台至关重要,但对Java工具生态系统来说,一些决策太难了,而且有些工具需要时间来处理。延迟是一个很好的举措,因为它允许生态系统为Java 9用户做好准备,使得应用变得容易和快速。

二:很多程序员可能会在没有模块的情况下使用JDK 9,你对模块化生态系统怎么看?

Markus Eisele :优点不多,满屏缺点。个人认为模块化给程序员提供的价值太小。此外,可能将出现用于较小或专用设备的JVM,Oracle的产品也不是唯一的选择。

Marcus Biel :Jigsaw 是一个很大的机会,但需要大量的迁移工作,大多数公司可能会拖延。

Lukas Eder :我相信Georges。Jigsaw(和模块化)对JDK的发展至关重要。很久以前,社区就通过Maven和/或OSGi等工具发现了“足够好”的模块化解决方案。

Trisha Gee :我迁移了一个微服务应用程序来使用JPMS。我认为,模块化有助于程序员更加谨慎地应用封装或分离。Java中缺乏模块化导致程序员各自开发自己的解决方案(例如,我的项目使用了Gradle)。我对Java 9模块化的整体感觉是,新项目可能会考虑使用JPMS,但现有的大型代码库大都不会进行迁移。

Vlad Mihalcea :我对模块化不太感兴趣,我认为框架比应用程序更重要。

Jake Wharton :模块化是一个重要的长期概念,但它需要很多年才能被普及。它也是构建应用程序自定义小型JVM的重要工具。

Thorsten Heller :说实话,我对于模块系统和Java 9还是一个分裂的心态,将整个模块系统放在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 的进步需要持之以恒的耐心和持续的努力与投入。

最后, 我想说,想免费学习:源码分析、Spring 企业级开发前瞻,持久层,高性能/高并发,分布式协调技术 zookeeper 服务锁,Nosql,高可用性/可扩展,分布式架构介绍,服务调用,性能优化,JVM优化,数据库优化,服务器优化,双十一电商项目实战(用户认证系统,商品管理系统,订单系统,支付系统等等,

温馨提示:请加群号:671017482,只想提供一个学习平台,此群不是Java小白群。谢谢


更多行业资讯,请关注神马影院或添加微信号:http://www.sm94.cc/

本文源自: 揭秘环亚娱乐骗局