Oracle欲放手Java EE,谁有望接手?

近日,Oracle在其官方博客上宣称,随着Java EE 8的可喜进展,Oracle接下来在考虑如何让Java EE更开放、更加贴近开源社区。言下之意,Oracle要让出Java EE的主导权,希望开源社区有更多的力量共同促进Java EE的发展。

Java EE 8的规范工作已接近尾声,参考实现也预计会在今夏末交付。一直以来,Oracle不遗余力地引领Java EE,让它成为业界的标杆,而如今是时候重新思考如何让它变得“更加敏捷,能够更及时地响应业界的技术需求”。

Oracle在博客中说道:

Java EE已经取得巨大的成功,各种实现占据了强有力的市场份额,各种技术被广泛采用,拥有着一个庞大的框架和工具生态系统,无数个应用程序正在给企业和个人带来价值……尽管Java EE已经处于开源模式,并由Java EE社区在主导开发,但整个流程仍然不够敏捷和灵活,或者说不够开放,如果跟其他的开源社区相比,还有很大差距。我们希望做得更好。

Oracle认为,将Java EE技术向更广大的社区开放会是个正确的决定,因为这样可以“让流程更加敏捷,实现更灵活的许可,并改变监管制度”。Oracle计划从开发者社区、许可证持有者以及一些开源基金中挑选候选继任者,尽管Oracle并未做出最后的决定,不过Apache软件基金会和Eclipse基金会似乎更有可能成为继任者。早前,Oracle将OpenOffice和NetBeans IDE贡献给了Apache,将Hudson集成服务器贡献给了Eclipse基金会。虽然不能据此认定Oracle对这两个开源基金会偏爱有加,但也不能排除这种可能。

Eclipse基金会的执行董事Mike Milinkovich说:

我们相信,将Java EE交给与产商无关的开源基金会对于平台和社区来说都是一件好事。如果我们有幸成为继任者,我们将竭诚为整个社区和平台提供最好的服务。

作为Eclipse MicroProfile社区成员的Red Hat对Oracle此举也是赞赏有加。Red Hat高级产品主管Rich Sharples说:

Red Hat希望能够与Oracle和广大的Java EE社区展开进一步合作,让Oracle的这次倡议与MicroProfile的初衷相契合。

不过,虽说Oracle想让出Java EE的主导权,但这并非意味着Oracle就会从此对Java EE不理不睬,相反,Oracle仍然会参与促进Java EE技术演化的工作。

我们相信,一个更加开放、不依赖所谓的平台主导者的单个厂商的流程将会促进更好的创新,这对整个社区来说才是最有益的。

Java的另一个版本SE早已通过OpenJDK实行开源,IBM和Red Hat也参与了Java SE的开发工作,不过Oracle仍然在主导着这个项目。所以说,虽然Oracle即将卸下Java EE的重担,但其手中仍然掌握着Java SE的大权。


感谢郭蕾对本文的审校。

给InfoQ中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ@丁晓昀),微信(微信号:InfoQChina)关注我们。

该文章由WP-AutoPost插件自动采集发布

原文地址:http://www.infoq.com/cn/news/2017/08/Oracle-Java-EE-who-take-over?utm_source=news_about_java&utm_medium=link&utm_campaign=java

Java依旧排名第一,然而变化几何?

2017年8月的TIOBE编程语言排行榜显示Java在流行程度上是世界上排名第一的编程语言。然而,纵观榜上前20名的编程语言,大多数编程语言都呈下降的趋势。因此,开发者们该何去何从?TIOBE显示,有几种新的编程语言填补了这些空缺并且获得了程序员们的青睐。

Java的流行指数依旧是排行榜上第二名有力竞争者C语言的两倍,但是这两种编程语言较去年的受欢迎程度都有显著的下降。榜上前20名中的另外12种编程语言也有所下降,然而前20名中剩余的6种编程语言(Visual Basic、.NET、R、Go、MATLAB、Scratch和Dart)增长比率的总和也才不过1.34%,远低于Java一门编程语言6.05%的下降比率。

在TIOBE上我们看到了大家对一批新兴语言的兴趣高涨,尤其是Crystal、Kotlin、Conjure、Hack和Julia。它们在整体比例中的份额很小(都低于1%),但是它们增长的速度足以引起大家的注意。Ruby的兄弟语言Crystal在一个月内从第60位跃升至第32位。Crystal的倡导者Santiago Palladino发推特说,他并不感到惊讶,现在越来越多的公司将Crystal应用于他们的生产环境中

Jetbrains的Kotlin JVM语言兴起的一个因素可能是今年五月份Google对其作为Android的开发语言进行了采用和宣传。Google趋势搜索显示了在那段时间前后Kotlin的激增。Spring框架在一月份也宣称支持Kotlin。

Jetbrains的Hadi Hariri同意了在这件事上Google对Kotlin的影响,但是他还表示说,Kotlin在Google的消息公布之前就在持续稳定地上升。他告诉InfoQ说:

我们假定Kotlin在TIOBE上指数的峰值与Google I/O的公告有关。抛开这些不谈,我们也看到了Kotlin从一年以前发布以来的采用量一直在增加,并且从1.0版本到1.1版本(今年二月份发布的)GitHub上Kotlin项目的代码量增加了8倍。

在我们看到了Kotlin在TIOBE排行榜上排名的一些相关性的同时,Hadi最终强调说:“Kotlin采用量的持续增长才是更重要的。”

每月发布的TIOBE编程社区排行(TIOBE Programming Community Index,这是给出的官方名称)反映了编程语言的相对受欢迎的程度。它使用从主要搜索引擎中收集到的数据,利用全世界范围内工程师使用的数量、课程数量和第三方供应商的数量来进行排名。这个月发布的版本包含对过去12个月趋势的额外分析。被包含在内的编程语言必须是图灵完备的。

查看英文原文:Java Still Number One, but What’s Taking Over?


感谢冬雨对本文的审校。

给InfoQ中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ@丁晓昀),微信(微信号:InfoQChina)关注我们。

该文章由WP-AutoPost插件自动采集发布

原文地址:http://www.infoq.com/cn/news/2017/08/Java-Still-One-Tiobe?utm_source=news_about_java&utm_medium=link&utm_campaign=java

使用Spring Cloud Function框架进行面向函数的编程

Spring Cloud Function是来自Pivotal的Spring团队的新项目,它致力于促进函数作为主要的开发单元。该项目提供了一个通用的模型,用于在各种平台上部署基于函数的软件,包括像Amazon AWS Lambda这样的FaaS(函数即服务,function as a service)平台。

与其他的serverless模式类似,该项目致力于将函数变成开发人员所使用的主要理念。这个项目第二个重要的元素就是将业务逻辑从部署profile中解耦出来。尽管业务逻辑以函数的方式实现,但是相同的代码可以通过一个部署profile将函数暴露为RESTful服务、流处理应用(比如Spring Cloud Data Flow)或有限的(finite)任务。这意味着相同的单个函数可以部署为独立的应用,也可以部署到FaaS平台上。到目前为止,团队已经提供了针对AWS LambdaApache OpenWhisk的适配器,而对于像Google Cloud Functions和Azure Functions这样的serverless平台,只要它们提供对Java的支持,该项目就承诺会支持。

AWS Lambda这样的平台凭借整洁的抽象和明显的成本优势,对很多开发人员都非常具有吸引力,但是有个重要的顾虑,尤其是对企业级用户来说更是如此,那就是因为在源码中包含了框架特定的代码就会导致锁定到该厂商上面。

就像serverless专家Mike Roberts在Martin Fowler的站点上所描述的:

通过依赖于环境,[serverless FaaS系统]能够明显减少运维成本和复杂性,但代价就是厂商依赖以及(此时)尚不成熟的支持服务。

Spring Cloud Function能够改善这种状况,它在交付管道(pipeline)的打包阶段引入了部署平台依赖。这意味着,开发人员可以以隔离的状态实现函数(包括创建单元测试),只需关心逻辑以及函数的输入输出参数。然后,函数会基于这些依赖进行打包,这些依赖就能让函数运行到目标平台上。

Spring Cloud Function项目的主管Mark Fisher这样告诉InfoQ:

在serverless领域,我们希望提升Java开发人员的体验,毕竟可移植性和一致性是很大的挑战。

这个项目的核心是推动基于函数的编程模型,而不是Spring之前更为大家所熟悉的POJO模型。已经涉足serverless领域的人可能熟悉这种模型,在这种模型中,开发人员不用关心底层基础设施或框架,只需将关注点放到业务逻辑的实现上即可,而不是样板式的代码或其他“plumbing”代码。借助Spring Cloud Function,业务逻辑会使用java.util.function包中所定义的核心接口:FunctionConsumerSupplier的实现进行开发。

在这个非常简单的例子中,我们可以创建一个实现Function接口的类:

import java.util.function.Function;
 public class LengthCounter implements Function {
      @Override 
      public Integer apply(String name) {
          return new Integer(name.length());
      }
  }
然后,它的魔力会通过@FunctionScan注解所启用的类路径扫描发挥出来:
@FunctionScan
@SpringBootApplication
public class ExampleSpringFunctionApplication {
...

除此之外,函数还可以在类中声明,这里要通过添加@Bean注解实现:

@Bean
public Function lowercase() {
       return flux -> flux.map(value -> value.toLowerCase());
}

如果采用这种方式的话,就不需要使用@FunctionScan注解了。

函数会打包为Jar文件,这个文件会被必要的配置以及适配器包装起来,在包装的过程中就带上了目标部署平台的部署profile。

Mark Fisher告诉我们:

除了serverless以外,我们还希望提升函数作为开发单元的简洁性,以及跨各种部署平台的可移植性。

开发人员专注于业务函数的创建,可以使用Spring Boot生态系统所提供的工具、过程和辅助设施(例如自动化测试、自动配置、依赖注入以及系统指标),这些他们是非常熟悉的,而底层的传输细节、基础设施和部署框架已经抽象了出来。

这个项目还处于初期阶段,但是Spring的人员承诺会有更多的举措,比如与Fission和其他基于Kubernetes的serverless平台的集成,另外,与新版本Spring Cloud Data Flow的集成也会更加紧密。

查看英文原文Function-Oriented Programming with Spring Cloud Function Framework

该文章由WP-AutoPost插件自动采集发布

原文地址:http://www.infoq.com/cn/news/2017/08/Spring-Cloud-Function-Framework?utm_source=news_about_java&utm_medium=link&utm_campaign=java

JetBrains当选JCP执行委员会委员

在最近的特别选举中,JetBrains入选JCB执行委员会,填补Ericsson和TOTVS空出来的席位。JetBrains开发者和技术布道者Trishar GeeAnna Kozlova,将作为执行委员会的JetBrains代表。JetBrains将完成剩余的两年轮值期的工作,直到2018年结束。
 
JetBrains不能在JSR376原始投票中投票,因为他们在执行委员会的任期是从2017年5月15日开始的。但是他们能够在复议投票中投票,这有助于这一提案的通过。
 
Gee接受InfoQ采访,讲述了JetBrains这一里程碑事件和他们计划完成的目标、表达了对近期的JSR376投票的看法以及未来的开发计划等

 
InfoQ:为什么这个执行委员会的席位对JetBrains来说很重要?

Trisha Gee:这感觉非常棒,不仅仅是因为可以目睹Java的变化,更因为我们自己就可以影响Java的发展。多亏了包括EC的用户组在内的JCP成员,尤其是oracle,他们发现JCP需要具有比以往更加透明和开放的流程,而且着力推动使之成为现实。但是能检查规范并且给专家组做出反馈是一回事,能够通过投票的方式影响规范的发展又是另外一回事。如你在JSR376进展中看到的一样,如果执行委员会关注一个JSR中的某些问题,那么这些问题就需要在议案完成之前得到解决。但是JetBrains不仅仅想把重心向我们自己倾斜,当最终用户对这些Java规范有疑问时,我们更希望成为一个可以倾听他们心声的EC代表。

 
InfoQ:JetBrains是如何入围执行委员会候选人的?

Trisha Gee:EC有三种席位,即批准席位,标准席位,联合席位。作为Java大管家,由Oracle确定批准席位候选人资格,最后他们决定由ARM和JetBrains接替空出的席位。你可以找个Oracle的代表问问他们为什么选择JetBrains,我个人认为原因不外乎以下几点:JetBrains之前已经涉足了JCP,我们已经是专家组成员之一,贡献了不少的JSR;JetBrains不止是为Java和JVM开发者制作工具,也开发我们自己的JVM语言(Kotlin),我们对Java语言和Java平台的发展有着浓厚的兴趣;我们拥有一个和Java使用者沟通的双工通道,用户告诉我们他们对平台和工具的需求,我们则和Java社区不断沟通这些产自社区的技术的使用方法,这让我们能够传授使用者们关于JCP和能促使Java演进过程的知识;最后,我自己则在作为伦敦Java社区成员时就已经是一名EC代表,所以我清楚整体流程,社区也已经对我有所了解了。

 
InfoQ:JetBrains不能在2017年4月8日初始JSR376投票中投票。如果你们能在那时投票,你们将如何基于JSR376状态进行投票呢,原因是什么

Trisha Gee:我们能接受我们那时不能投票的事实,虽然这让人很沮丧。从我个人来说,我会投“同意”票,这是因为从一个Java开发者的角度来说,我们很希望Java9能尽快发布。我自己也在新项目中使用新的Java平台系统(JPMS),并且还在把之前的模块迁移到JPMS上。去年一年我目睹了Java的多项改进,开发者能够更明确的使用模块化、封装、关注点分离等技术并从中获益。JPMS不完美,有瑕疵,但我还是倾向于投“同意”票。

JetBrains中的其他人指出我的“赶快发布”的方法,是让某些环节很快被打通的主因。像JPMS影响力这么大的事件,不仅仅要需要精巧的设计和思考,同时也需要能够被社区所接受,只有这样才能达到最初的目标。考虑到我们在JetBrains没有使用JPMS(虽然我们在Intellij IDEA中对其有支持),我们对其在使用上还没有足够的经验,所以还无法判断它是否符合预期。我想我们也可能会投弃权票,这意味着我们不会阻碍事件的进展,但是我们时刻保持着对JSR的关注,尤其是对现有库、框架以及工具的影响。

InfoQ:你们将在2018年结束执行委员会的任期,任期结束后你们有何打算?

Trisha Gee:我希望我们可以再次当选。我们的目标是给EC带来价值,这样我们不仅仅可以获得批准席位,也可以再次当选执行委员会委员。

InfoQ:在任期内,你们希望达成什么目标?

Trisha Gee:我们的目标是协助建立对全世界Java开发者都有价值的规范,助力Java语言以一种让开发者更高效的方式演进。我们希望通过判断一个JSR能否有助于开发者完成特定任务的方式来评判其优劣。

当然,作为一个IDE供应商,为开发者提供符合Java规范的库和框架是我们的职责,如果我们做不到这一点,开发者使用起来就会非常困难。我们也从用户那里得到了很多反馈,例如他们希望Java可以帮助他们解决日常工作中的痛点(可以阅读我的这篇关于JCP选举公告的博客)。这让我们认清楚了开发任务的优先级,并着力推动我们认为重要的项目。

我很希望看到JCP中更多的开发者参与进来,伦敦Java社区这样的用户组就在这方面起了表率作用。但是有些开发者可能不知道有可以使用JSROpenJDK这回事,我们希望能够接触到他们,他们可以通过阅读我们的博客、关注我们的Twitter和新闻来了解Java在开发社区中的进展,而且他们也可以参与到其中,作为个体为Java的发展做出贡献。

InfoQ:JetBrains正在酝酿些什么,尤其是IntelliJ IDEA?

Trisha Gee:最近我们在为最新版的IntelliJ IDEA加班加点,计划发布2017.2版本。让我最高兴的是新版本针对Java9有很多更新,尤其是其中有些特性还是我提出的!除了IntelliJ IDEA,在Kotlin上我们也有诸多计划:

  • 支持Java 9。
  • 增强Java的交互操作能力,使诸多场景(包括在Spring和Android)中的使用更加便捷。
  • Gradle Script Kotlin(新的Kotlin Gradle DSL)具有更好的IDE支持。

我们正在优化Kotlin协程工具和库的支持,包括一些很方便的调试器特性。关于未来,Kotlin侧重于寻找和Valhalla并行的价值点。

InfoQ:你在JetBrains工作多少年了?目前在公司的主要职责是什么?

Trisha Gee:我在JetBrains工作了两年半。我是一个Java倡导者,主要投入在IntelliJ IDEA(JVM/polyglot IDE)以及Upsource(代码检查工具)上。作为一个面向开发人员的倡导者,我的工作不是使用和售卖我们的工具,而是帮助开发者更加高效的完成工作,而如果他们在工作中使用的是IntelliJ IDEA,那就太棒了!但我其实更着重于帮助开发者“升级”,比如讨论Java 8的常用技巧或者给开发者展示Java 9的新特性等。

 
InfoQ:成为了JetBrains在执行委员会的代表,这对你目前的岗位有哪些影响?

Trisha Gee:这需要投入更多!但是其实委员会的代表工作和我目前的工作有很多交叉。例如,我需要站在Java演进的最前沿,这样我才能知道我的工作材料(演讲稿、博客、录屏以及每月的Java新闻稿) 是新鲜的和有相关性的,最好有很多先于开发者当前工作内容的话题,这些都会让今年Java9的发布备受关注。在执行委员会工作,确保我可以知晓Java的最新发展,当然不止Java这个语言本身(例如,最近的Jigsaw投票),还包括整个生态(例如Java EE)。所以作为EC的代表,并不会产生非常多额外的工作内容。具体工作的形式包括参与EC成员会议、研究当前的JSR,搞清楚怎么投票等,但是这些事情和我把最新的Java咨询带给开发者的初衷十分吻合。

但这些并非只有我一个人在做,在Java生态中不可能在所有领域都成为专家。在JetBrains内部,我们拥有一个具有不同领域背景,负责不同任务,具有不同经历的工作组,我们每个人都搜集我们擅长领域的JSR信息。这样的配备让我们能更好的服务于Java平台上的开发者。

 
InfoQ:IntelliJ非常成功,像Eclipse和NetBeans这些功能强大的工具都是免费的,这就让IntelliJ的发展更加困难。你们成功的秘密是什么呢?

Trisha Gee:对于很多Java开发人员来说,IntelliJ依然是免费的,这非常重要。在LMAX工作时,我自己用的就是社区版,该免费版仍然提供很多杀手级特性,例如重构、导航以及代码分析等。Ultimate这个付费版呢,则额外支持Java EE开发、Spring、UML图表以及多语种编程等。正因如此,常常是企业付费使用而不是个人,路子往往是这样:企业客户看到他们的开发者使用免费版可以更高效的工作,所以他们就会很乐意付费购买额外特性来支持企业发展。

在LMAX,我自己在和高级用户切磋后,从Eclipse转到了IntelliJ IDEA。之前我同时使用这两个IDE(职业生涯早期我也使用过Netbeans),对这两个IDE没有特殊偏好,因为所有IDE都符合我写代码的习惯。但是当我看到IntelliJ的重构工具的演示后,发现这款IDE可以在不发生编译错误的情况下重构我的代码,我被这个特性迷住了。其他IDE也有这项功能,但是从我个人与Eclipse和IntelliJ的高级用户共事的经历来看,IntelliJ IDEA可以做的更多,而且更加省事。工作中我和很多开发者交流时,发现他们有着和我类似的感受:当他们发现IntelliJ IDEA让工作更高效时,当他们发现IntelliJ IDEA是如何让他们立于不败之地时,他们就再也转不回其他IDE了。


感谢张卫滨对本文的审校。

给InfoQ中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ@丁晓昀),微信(微信号:InfoQChina)关注我们。

该文章由WP-AutoPost插件自动采集发布

原文地址:http://www.infoq.com/cn/news/2017/08/jetbrains-elected-to-jcp?utm_source=news_about_java&utm_medium=link&utm_campaign=java