Emily Jiang:Java 是静态类型的语言,一次编译,处处运行,我们可以借助 IntelliJ 或 NetBeans 等 IDE,让 Java 编程变得更容易,比如,它们可以自动帮你完成代码。
与 Java 不同,Python 是一门动态类型语言,这就导致智能代码完成变成了一个巨大的挑战。Python 的动态特性让它简单易写,阅读起来也不是很难,但是分析起来却不容易。
Go 是一门比较有趣的新语言。即使在语言层面上,它也不是 Java 的替代品。Go 是系统编程模型,而 Java 是应用程序编程模型。
时至今日,Java 已经走过了二十多个年头,它很实用并且被广泛使用。现在 Oracle 每六个月就会发布一个新版本,Java 开发者可以非常频繁地采用它的新特性。
因此,我相信在未来的很多年里,Java 依旧会是最流行的语言之一。
Emily Jiang:Java EE 是许多应用服务器所采用的标准,比如——
IBM WebSphere Liberty (https://developer.ibm.com/wasdev/)
Open Liberty (https://openliberty.io/)
Red Hat Thorntail (https://thorntail.io/)
Payara (https://www.payara.fish/)
TomEE (http://tomee.apache.org/)
Java EE 优于 Spring 的有这两点:标准和轻量。
Java EE 是标准的。如前所述,许多应用程序服务器都支持该标准,这意味着使用 Java EE 编写的应用程序是可移植的,可以在应用程序服务器之间切换,避免了供应商的锁定策略。
使用 Java EE 的应用是轻量级的,因为服务器运行时提供 API 实现。这样一来,应用程序易于编写且仅包含业务逻辑类,而 Spring 应用程序必须将 spring libs 与业务逻辑类一起打包。在快速迭代的开发模式中,大体量 JAR 包是有问题的。
Emily Jiang:Java EE 的移交对 Java 社区来说意义重大。目前,Eclipse 基金会已将 Java EE 改名为 Jakarta EE,移交工作已经取得了良好的进展。为了 Jakarta EE 8 的诞生,许多公司都参与了进来,并作出了巨大贡献,比如 IBM、Red Hat、Payara、Tomitribe 等等。Jakarta EE 是社区驱动的,它开源,透明。我的意思是,在这里,所有的 spec doc,API ,乃至 TCKs 都是开源的。要知道,TCKs 在 Java EE 中是闭源的,它的开源过程着实艰难。
Jakarta EE 开源并且完全透明,受到了 Java 社区的青睐。我们鼓励每个人都参与到 Jakarta EE 中来,这将使得 Jakarta EE 更加专注于社区需求,加速更新迭代。
Emily Jiang:具体项目移交进度可以查阅 Eclipse 基金会官方网站,如你所见,许多工程的完成度达到了 100%。2019 年 1 月 29 日,Eclipse Glassfish 5.1 通过了 Java EE 8 TCKs。Jakarta EE 社区目前正致力于使 Glassfish 5.2 通过 Jakarta EE 8 TCKs。虽然 Jakarta EE 8 的时间表尚不能确定,但可以告诉大家的是,项目正在稳步推进,我希望今年能听到好消息。
EE4J 项目状态:
X 轴是完成百分比:
20%——项目提案社区评审阶段;
40%——已分配项目提交者和资源;
60%——为 Eclipse IP 团队提供的初始贡献;
80%——推送到 Git 库的初始贡献;
100%——项目进入第一次发布评审阶段。
Eclipse 基金会官方网站:
https://www.eclipse.org/ee4j/status.php
Emily Jiang:CDI 是 Jakarta EE 规范的核心存在。相当一部分 Java EE 规范,譬如 JAX-RS、JMS、Bean Validation、Transaction、JPA、JSF 和 EE security,可与 CDI 协同工作。我希望,未来它们与 CDI 在 Jakarta EE 中的协作更加紧密。举个例子,JAX-RS 应该依赖 CDI 以管理资源生命周期,从而摆脱古老的 JAX-RS DI 技术。CDI 为松散耦合提供了一个很好的框架。未来的 Jakarta EE 规范应该优先考虑 CDI。
MicroProfile 便是优先使用 CDI,这使得规范非常简单易用。因此,我鼓励每个规范都可以在适当的时候与 CDI 保持一致。
Emily Jiang:2019 年 2 月,我们发布了 MicroProfile 2.2,包含了 Fault Tolerance 2.0、Rest Client 1.2,、Open API 1.1 和 Open Tracing 1.3。与此同时,MicroProfile Reactive Streams Operator 1.0 也作为独立规范发布。MicroProfile 的路线是在其他规范仍在更新的同时,将更多的精力放在 reactive 上。目前,GraphQL 上的原型实现正在进行中。我们也希望今年发布 Reactive Messaging。虽然在独立规范方面取得了进展,但我并没有忘记 MicroProfile 和 Istio 集成。因此我领导了相关规范工作,以确保 MicroProfile 能满足微服务和云原生应用的开发需求,比如 Service Mesh。
Emily Jiang:Jakarta EE 和 MicroProfile 是相辅相成的,它们一起工作的时候将会变得非常强大。而大多数应用程序服务器都支持这个组合。例如,Open Liberty 拥有 Docker Image 镜像 MicroProfile 2, 包含了最新的 MicroProfile 2.x 和 Java EE runtime。Open Liberty 支持 MicroProfile 和 Java EE 特性的组合使用。
至于 Jakarta EE 和 MicroProfile 的关系,我想我们可以把 MicroProfile 看作跑车,把 Jakarta EE 看作小巴。Jakarta EE 可能会采用 MicroProfile 的一些规范,反之亦然。这里我举个例子,MicroProfile 使用了 CDI、JAX-RS、JSON-B 和 JSON-P。
更详细的有关信息,请阅读 JAXenter 发布的访谈:
https://jaxenter.com/understanding-jakarta-ee-series-ibm-148922.html
Emily Jiang:能成为 Java Champion,我感到非常高兴,也非常荣幸。这个称号含金量十足,因为只有非常有影响力和才华的 Java 开发人员才能被授予。
至于女性开发者的优势,很多人说,在细节思维上,女性开发者是强于男性开发者的,她们往往会从一个不同的角度出发去思考问题。
对我来说,我并没有考虑过这一点,因为我不会用性别来区分开发人员。但是有一点我想强调,我们应该拥有更为平衡的团队。根据研究,单一性别开发人员组成的团队表现不如混合性别组。我鼓励每个团队都应该男女搭配。
Emily Jiang:我记得我曾经遇到过这样一个挑战,我要在一个产品中实现一个功能,但是我对那项技术没有任何经验。我的解决办法是,首先,你不能消极,你得相信自己,这是第一步,也是很重要的一步。之后,我花了大部分时间去 debug,去理解它是如何工作的。然后,我向我的团队分享了我的经验。虽然时间非常紧张,但最后我们还是成功地完成了这个任务,我认为,这离不开乐观进取的态度和快速学习的技能。
Emily Jiang:跳出舒适区,不安于现状,勇于迎接挑战,这是非常重要的技能。请记住,永远都不要停止学习,你停止一分钟,你就落后一分钟。这些建议并不单单适用于女性开发人员,也适用于在座的各位。
Emily Jiang,现就职于 IBM,MicroProfile 和 CDI 首席架构师。作为 IBM 的 Hursley 实验室成员之一,Emily 自 2006 年以来一直从事于 WebSphere Application Server 的研发工作,并大量参与 WebSphere Application Server 版本中的 Java EE 实现。她是 MicroProfile 和 CDI 专家组的重要成员,领导着 MicroProfile 配置管理和容错的规范。同时,Emily 也是 Config JSR 合作规范的领导者。今年 2 月,Emily Jiang 被 Java 社区接纳成为 Java Champion。
5 月 6-8 日,Emily Jiang 将在 QCon 北京 2019 “Java 生态系统”专题为我们详解 MicroProfile 和 Jakarta EE 的相关进展及战略蓝图。该专题还有来自 Red Hat、阿里巴巴、永源中间件等公司的技术大咖与你分享 Java 语言和 Java 平台生态技术的实践,内容涵盖 Shenandoah:Your Next Garbage Collector、Seata 在微服务一致性中的探索、Java 容器化部署等热点话题。
更多精彩内容请点击 「 阅读原文 」或识别二维码查看。大会报名现已进入倒计时,团购可享折扣优惠!席位有限,马上联系票务小姐姐 Ring 吧!电话:13269076283 微信:qcon-0410
1、头条易读遵循行业规范,任何转载的稿件都会明确标注作者和来源;
2、本文内容来自“InfoQ”微信公众号,文章版权归InfoQ公众号所有。