NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

2016 年会成为 Java EE 微服务年吗?

  • 2016-02-15
  • 本文字数:1444 字

    阅读完需:约 5 分钟

进入 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-02-15 18:005145
用户头像

发布了 1008 篇内容, 共 374.7 次阅读, 收获喜欢 341 次。

关注

评论

发布
暂无评论
发现更多内容

Android VideoPlayer

android 程序员 移动开发

Android _ 从 Dagger2 到 Hilt 玩转依赖注入(一)

android 程序员 移动开发

Android 三类框架的理解以及MVVM框架的使用

android 程序员 移动开发

Android Switch控件修改样式

android 程序员 移动开发

Android 主流通用常用框架汇总(持续更新)

android 程序员 移动开发

android 五大应用开发框架

android 程序员 移动开发

Android O 新特性:自适应图标(Adaptive Icons)

android 程序员 移动开发

Android P 适配指南

android 程序员 移动开发

Android Studio 插件

android 程序员 移动开发

Android C++系列:JNI基本操作

轻口味

android 11月日更

【译】TypeScript的Record类型说明

废材壶

typescript

Android Zygote 从何而来?揭开Android系统启动的面纱

android 程序员 移动开发

android okhttp异步请求使用详解 (2)

android 程序员 移动开发

Android OpenCV(三十七):轮廓外接多边形

android 程序员 移动开发

Android View 绘制流程

android 程序员 移动开发

Android 使用讯飞语音SDK

android 程序员 移动开发

Android Studio 4

android 程序员 移动开发

Android Studio 教程:入门开发第一个程序

android 程序员 移动开发

Android TextView的属性与应用

android 程序员 移动开发

Android WebView常见问题

android 程序员 移动开发

android 中DrawerLayout实现抽屉

android 程序员 移动开发

在Electron中简单实现拖拽功能

废材壶

node.js 大前端 Electron

Android SDK 网络模块解析

android 程序员 移动开发

Nebula 分布式图数据库介绍

Se7en

Android SDK 网络模块解析(1)

android 程序员 移动开发

android 三级级联筛选列表

android 程序员 移动开发

Android UI--ViewPager扩展Tab标签指示

android 程序员 移动开发

Android 中高级核心复习面试题整理,备战年后金三银四!

android 程序员 移动开发

Android SpannableString详细解析

android 程序员 移动开发

[ CloudWeGo 微服务实践 - 06 ] 服务发现(1)

baiyutang

golang 微服务 11月日更

Android Studio安装更新终极解决方式

android 程序员 移动开发

2016年会成为Java EE微服务年吗?_Java_Mark Little_InfoQ精选文章