原文  http://www.infoq.com/cn/news/2016/02/javaee-microservices

进入2016年时间还不是很长,让我们回顾下去年年底的一个预言。去年12月,来自C2B2的Steve Millidge 预测 ,2016年将会成为Java
EE微服务年。在一定程度上,这是基于 Steve在JavaOne上的演讲 ,他在演讲中详细地讨论了这个主题。此外,Steve还是 Payara 的联合创始人,Payara的目标用户也是对微服务感兴趣的Java
EE开发人员。Steve还认为,SOA和微服务之间的差别很小,这种观点我们以前听说并且报道过。他在视频中指出:

“微服务与SOA没什么不同。它还是关于SOA”。

当然,现在还存在争论,因为他的背景和当前的工作重心,Steve可能会发现自己很难保持客观的态度。不过,早在2014年,微服务还处于起步阶段,Adam Bien就描述了 理想的Java
EE微服务
 :

[...]理想的Java EE微服务是一个单[实体控制边界]组件,在一个WAR包中,部署在单台服务器/域中。在这种情况下,开发人员可以单独地发布和重新部署单个组件(又称微服务)。WAR包之间不可能直接调用方法,因此,WAR包将不得不使用比如JAX-RS来彼此通信。

我们在去年年底就微服务、DevOps和Java EE相关内容采访了Markus Eisele,他详细论述了自己为什么认为 Java
EE将会在微服务生态圈的发展中扮演重要的角色
 。还有一些其他使用Java EE编写微服务的方法,包括 TomEE 和 WildFly 。 KumuluzEE是JavaOne
2015 Duke选择奖的其中一个 获奖者 ,该框架是一个Java
EE微服务框架。该框架的联合创建者Matjaz Juric解释说:

KumuluzEE是第一个使用标准Java API的微服务框架。微服务架构的重点是将应用程序开发成服务并将这些服务单独部署;没有一个框架提供自动化部署和配置,是不可能使用Java EE实现真正的微服务架构的。

让我们看一些人们如何看待微服务和Java EE的其他例子,这会非常有趣,因为有些人严格来讲并不属于传统的Java EE领域。例如,早在2014年,Alex Soto就论述了为什么 Java
EE和RxJava
 是一个很棒的方案。不过,并不是每个人都认可使用Java EE能使开发人员采用微服务。正如 Rick
Hightower
 所说的那样:

如果你将一个WAR文件部署到一个Java EE容器,那么你很可能不是在做微服务开发。如果你在一个容器或EAR文件中包含超过一个WAR文件,那么你肯定不是在做微服务开发。如果你将服务部署为AMI或Docker容器,而且你的微服务有一个main方法,那么你可能是在编写微服务。

而且,Rick也不认为微服务与SOA相同:

事实上,它们在许多方面是完全相反的。例如,SOA往往采用WSDL,后者是一种非常严格的、强类型的服务端点定义方式。WSDL和XML模式中所有的未知量都来自XML。

当然,我们已经多次讨论过,SOA和Web Service常常没有关系。不过,Rick及其他一些人确信,Java EE太过臃肿或者说笨拙,以其为基础构建微服务并不合适。 Jeppe
Cramon
 认为,Java EE之所以是一个糟糕的基础还有更为根本的原因:

如果我们将两路(同步)通信与小/微服务结合使用,并根据比如“1个类=1个服务”的原则,那么我们实际上回到了使用Corba、J2EE和分布式对象的20世纪90年代。遗憾的是,新生代的开发人员没有使用分布式对象的经验,因此也就没有认识到这个主意多么糟糕,他们正试图重复历史,只是这次使用了新技术,比如用HTTP取代了RMI或IIOP。

如果微服务和SOA密切相关,那么可能会有一种观点,就是微服务可以像SOA那样采用一种技术无关的方式。你认为呢?2016年会成为Java EE微服务年吗?如果有的话,Java EE会在微服务中扮演什么角色?

查看英文原文: Java
EE and Microservices in 2016?

2016年会成为Java EE微服务年吗?的更多相关文章

  1. Apache发布支持Java EE微服务的Meecrowave服务器

    Apache OpenWebBeans团队希望通过使服务器适应用户来消除复杂性.所以,该团队发布了Apache Meecrowave项目1.0版. Apache Meecrowave是一款小型服务器, ...

  2. 如何使用 Java 构建微服务?

    [编者按]微服务背后的大理念是将大型.复杂且历时长久的应用在架构上设计为内聚的服务,这些服务能够随着时间的流逝而演化.本文主要介绍了利用 Java 生态系统构建微服务的多种方法,并分析了每种方法的利弊 ...

  3. 2016年,谁是最受欢迎的 Java EE 服务器?

    [编者按]本文作者为性能监控工具 Plumbr 创始人 Nikita Salnikov-tarnovski,主要介绍2016年度最广为使用的 Java EE 容器及其排名变化情况.本文系国内 ITOM ...

  4. 微服务:Java EE的拯救者还是掘墓人?

    有人认为,微服务的大行其道是在给Java EE下达死刑判决书.也有人认为,Java EE已死的论调可笑至极.读者朋友,你们怎么看? 引言 有人说,Java确实过于臃肿,经常“小题大做”.但PHP.No ...

  5. KumuluzEE - Java EE的微服务框架

    KumuluzEE - Java EE的微服务架构 https://www.jdon.com/soa/kumuluzEE.html

  6. Java EE中的容器和注入分析,历史与未来

    Java EE中的容器和注入分析,历史与未来 java中的容器 java中的注入 容器和注入的历史和展望 一.java中的容器 java EE中的注入,使我们定义的对象能够获取对资源和其他依赖项的引用 ...

  7. Ed Burns谈HTTP/2和Java EE Servlet 4规范

    在2015年JavaLand大会上,Ed Burns展示了Java EE Servlet 4.0规范(JSR 369)的概要,演讲的重点在于Java EE平台对HTTP/2的支持.HTTP/2旨在解决 ...

  8. Java EE的未来

    http://www.infoq.com/cn/articles/enterprise-Java-opinion 作为InfoQ下一年编辑关注点审核工作的一部分,我们挑选了Java作为深入探讨的主题. ...

  9. Java SE和Java EE应用的性能调优

    凡事预则立,不预则废,和很多事情一样.Java性能调优的成功.离不开行动计划.方法或策略以及特定的领域背景知识.为了在Java性能调优工作中有所成就.你得超越"花似雾中看"的状态, ...

随机推荐

  1. BZOJ 4143 The Lawyer

           这道题看起来很吓人,但事实上看懂后会发现,其根本没有任何技术含量,做这道题其实要考虑的就是每天最早结束的一场的结束时间以及最晚开始的一场的开始时间,如果结束时间早于开始时间,那么OK就这 ...

  2. C#调用Java方法

    C#调用Java方法(详细实例) 阅读目录 C#调用c++ C#调用JAVA方法 C#可以直接引用C++的DLL和转换JAVA写好的程序.最近由于工作原因接触这方面比较多,根据实际需求,我们通过一个具 ...

  3. querySelector和querySelectorAll方法介绍

    module dom { [Supplemental, NoInterfaceObject] interface NodeSelector { Element querySelector(in DOM ...

  4. 依赖和用jar包得区别

    有个项目,需要用到第三方开发的一个jar文件,我先是把生成的jar文件直接拷贝到我的项目的libs目录下,项目自动加载了引用的jar包,在java文件中使用也没有问题,但是由于引用的jar文件中有自定 ...

  5. linux中grep的用法

    http://www.9usb.net/200902/linux-grep.html http://blog.51yip.com/linux/1008.html http://blog.csdn.ne ...

  6. 1294 - Positive Negative Sign(规律)

    1294 - Positive Negative Sign   PDF (English) Statistics Forum Time Limit: 2 second(s) Memory Limit: ...

  7. android -- 蓝牙 bluetooth (一) 入门

    前段时间在 网上看了一些关于android蓝牙的文章,发现大部分是基于老版本(4.1以前含4.1)的源码,虽然无碍了解蓝牙的基本原理和工作流程,但对着4.2.2的代码看起来总是有些遗憾.所以针对4.2 ...

  8. 从零开始学C++之IO流类库(四):输出流格式化(以操纵子方式格式化 以ios类成员函数方式格式化)

    一.以操纵子方式格式化 数据输入输出的格式控制使用系统头文件<iomanip>中提供的操纵符.把它们作为插入操作符<<的输出对象即可.如setiosflags.setw.set ...

  9. A. Case of the Zeros and Ones----解题报告

    A. Case of the Zeros and Ones Description Andrewid the Android is a galaxy-famous detective. In his ...

  10. Hibernate MySQL 数据库 使用别名 报 Column * Not Found

    使用Hibernate 查询MySQL数据表的时候报 Column Not Found ,原因是MySQL的驱动不支持别名, 解决方案如下,在连接参数中加上 useOldAliasMetadataBe ...