Java EE与Java SE:Oracle是否放弃了企业软件?

Java Enterprise Edition是全球Java社区中最大的困惑来源之一。 就像《星球大战》和《星际迷航 》之间的区别一样,对于“原力觉醒”是他们在这部电影中看过的第一部电影的人来说。

奇怪的是,即使您有使用EE进行开发的经验,但整个情况通常仍然很模糊。 在本文中,我们将收集所有最新消息,并在Java EE 8专家组的Werner Keil和前Oracle Java EE推广者和创始人Reza Rahman的帮助下,仔细研究Java EE以消除迷雾Java EE守护者。

Java EE与Java SE究竟有何不同?

首先,我们需要做出重要的区分。 Java EE构建在Java SE之上。 与Java SE不同,Java企业版正式“只是”一个规范,Oracle以及RedHat和IBM等其他供应商提供了实际的实现(例如Glassfish参考实现)。

SE的API提供了Java语言(java。*软件包)的标准核心功能,而EE的API(javax。*)提供了Java的扩展,这些扩展对于开发大型应用程序非常有用。 话虽如此,可能会有导致额外混乱的例外。 例如,Swing最初是作为扩展,而最终成为核心Java的一部分。 这不是防弹概念。

我们与Java EE 8专家组成员Werner Keil联系以获得进一步的见解。 Werner说:“最大的误解是API是否是规范的编码形式,还是其实现”。 “现在几乎每个Java EE项目都将其视为实现,因此,绝大多数Java代码的所有代码都受到越来越开放的许可证的保护。 除了技术兼容性套件(TCK)测试套件外,专有的封闭式TCK仍然存在很大的问题,只有Oracle和公司许可方才能使用。

附带说明,这些许可问题最终导致Apache软件基金会在2010年从Java Community Process执行委员会撤回其成员资格 。

那么,EE规范实际上包括什么?

实际上,Java EE是企业Java扩展的总体规范。 它的核心包括独立的功能,例如企业Java Bean(EJB),Java Servlet,Rest API(JAX-RS),上下文和依赖注入(CDI)等。

每个新版本都包括对单个技术的升级以及新功能。 例如,Java EE 8有望包括具有HTTP 2.0支持的Servlet 4.0规范。

由于Java是向后兼容的,因此您还可以在新的SE版本之上运行较旧的EE版本,并享受新的语言功能。 例如,在Java SE 8之上针对lambda和流的Java EE 7兼容实现,因此您无需等待Java EE 8即可使用它。

Servlet规范是Java EE的主要功能。 当前版本为v3.1,正在开发v4.0。 它最受欢迎的实现之一来自TomEE ,它是Tomcat的EE兼容版本。

重量级Java EE是一个神话

与流行的看法相反,Java EE 比看起来轻得多 。 工件大小,构建时间和部署时间等属性可能很小。 轻量级是设计决策,其他被认为是轻量级的框架可能会成为……重量级。

“关于Java EE的最常见的误解可能是它太大,太重或整体,并且不如Play!,Spring,Node.js或所有其他“ hip”以及新的或更旧的替代品那么灵活。 我们在Raspberry Pi上运行了整个Tomcat或Glassfish服务器” – Werner Keil

在生产中调试Java EE

分布式生产环境(尤其是微服务架构)经常遇到的问题是了解生产中发生的情况。 虽然不是特定于EE,但是始于一项服务的问题可能会在其他地方引起麻烦,然后您就独自探索日志,试图寻找甚至可能不存在的线索。

在塔基皮(Takipi),我们正在采用一种新的方法来解决此类问题。 每当发生异常,日志错误或警告时,我们都会提供所有必要的数据以找出其根本原因。 这包括错误栈跟踪中的所有相关源代码和状态,请参见此处 。

错误

Takipi的错误分析视图:源,堆栈和状态

Java EE与Java SE的发布周期

Java EE的工作在一个单一的Java规范请求( 这里是Java EE 8的请求)下进行管理,并等待SE完成以定义确切的规范。 下表总结了所有版本的发布日期:

发布日期

为什么在SE之后发布EE通常需要2年?

“我认为这在历史上是随着时间而演变的。 Werner Keil说,在Java于1995年正式启动两年多一点之后,1998年就出现了EJB之类的J2EE技术​​。 “一旦越来越多的公司和贡献者开始在JCP下帮助Java EE,企业技术自然会花一些时间来准备,测试和集成EE框架下的所有组件。”

Werner补充说:“我个人认为,即使对于大型公司用户,将Java EE版本X严格绑定到同一JDK版本X的需求也变得不那么重要。 默认情况下,已有多家供应商开始将其最新的Java EE 6或7兼容产品与Java SE 8捆绑在一起。”

“一旦Java EE 8准备就绪,我们有望看到Java SE 9及其Jigsaw模块化系统不仅最终,而且相对成熟。 企业服务器可能需要花费一些时间来应对这一巨大的步骤,但是一旦正确理解并采用了模块化,我发现EE可能比SE带来更大的收益。 相当数量的EE配置文件应该会增长,并利用基础平台可以提供的所有可选项和模块化。”

Java EE 8的当前状态是什么?

Java EE 8预计将于2017年上半年发布。看来我们预计还会遇到更多延迟。 Werner Keil详细阐述了这些问题:

“不幸的是,不仅是由于Java SE 9的延迟,而且Oracle内部资源的大量转移似乎是为了为其(私有)云客户提供服务,相反,几乎所有针对Java EE 8的Oracle领导的JSR都被延迟了。 ”

“即使Oracle担任联合规范主管的JCache似乎也没有真正的形状,只是将Java EE 8的企业功能的关键方面(例如事务)简单地丢进了Java EE 8中。”

“这些缺失的零件都由专有的供应商专有扩展涵盖,无论是Oracle(Coherence),Hazelcast还是其他供应商。 也许这实际上将是最终的结果。 “

“ Java EE社区中许多人普遍担心的是,Java EE和相关标准已变成了一个“无花果”,可以涵盖专有的,大多是封闭源代码的产品或服务,这些产品或服务在“云”中运行,而您只需租用并付费即可。对于。”

由于优先级看似不断变化,Oracle Java EE传播者Reza Rahman与Oracle分道扬and,创立了一个社区驱动的计划,即Java EE Guardians。 “公正地看待它,无非是Java EE的“采用JSR”。 尽管很少有人尝试让JUG或其成员通过Adopt-a-JSR程序采用Java EE JSR,但实际上,它仅限于Java SE或独立JSR,Oracle几乎所有活动和涉及的主要JUG都完全专注于采用OpenJDK。 在过去,企业部门一直被一些大型供应商(例如IBM,BEA / Oracle或JBoss)视为一件事情。 “

“让像TomiTribe或Payara这样的小公司在开源方面做出贡献,就像说JBoss甚至IBM押注大量由开源驱动的技术(如OpenStack或WebSphere Liberty Profile)一样,这意味着范式发生了巨大的变化,至少许多甲骨文的公司和法律人士都愿意这样做似乎还没有完全理解。”

Java EE Guardians

为了进一步了解新社区,我们已与Reza Rahman联系以获取更多详细信息。

“我们是一群热爱Java EE的人,他们非常关注Oracle对开放标准的承诺。 我们致力于尽一切努力使Java EE社区向前发展” – Reza Rahman

Reza继续说道:“ Oracle和Sun一直对Java EE的发展产生不健康的影响。 Oracle当前的不活动状态使这种现实的弊端更加明显。 从长远来看,我认为社区和其他供应商(如RedHat,IBM,Tomitribe和Payara)将更加积极地推动Java EE的正确答案。”

“ Java EE的当前状态令人担忧。 生态系统不断增强,并且比以往任何时候都充满活力,背后有许多热情的人。 尽管如此,Oracle主导的JSR上Oracle资源的活动却显着放缓。 除非Oracle的明显行为发生变化,社区大大提高了贡献或其他供应商弥补了因Oracle不活动而造成的进度差距,否则要满足当前的Java EE 8时间表将非常困难。

“ Java EE的发布时间是一个复杂的问题。 现实情况是,Java EE比Java SE或Spring做得多。 实际上,Spring直接受益于Java EE中完成的工作。”

“我相信,如果社区和其他供应商进一步参与进来,工作实际上会更快地进行。” – Reza Rahman

Java EE替代品

纵观更广泛的生态系统,我们看到其他解决方案以不同的向量更快地发展。 例如,Servlet容器Jetty不需要等待Se​​rvlet 4.0规范完成就已经支持HTTP 2.0。 总体而言,Spring从以前的规范中受益,可以与Java EE竞争。

最后的想法

再次感谢Werner Keil和Reza Rahman与我们分享了他们对这篇文章的见解! 我们很高兴看到您的评论,并了解您在Java EE方面的个人经验。

Werner Keil是一家领先的汽车供应商的DevOps Build Manager,曾在一家大型瑞士保险公司等公司工作过。 除了在大型公司工作外,他还经营着自己的创意人才公司Creative Arts&Technologies,并在业余时间管理和支持开源项目以及Java Community Process执行委员会的个人成员。

Reza Rahman是Java EE Guardians核心的一部分,并且在Oracle内外都参与Java EE很长时间了。 他是CapTech Consulting的长期顾问,并且是Oracle的官方Java技术专家。 经常发表演讲的人,作家以及JavaOne RockStar演讲者奖的获得者。 多年来,他还是Java EE,EJB和JMS专家组的成员。

翻译自: https://www.javacodegeeks.com/2016/04/java-ee-vs-java-se-oracle-given-enterprise-software.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/353035.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

约瑟夫环

约瑟夫环是一个数学的应用问题:已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列…

java链表的数据结构_Java数据结构 获取链表(LinkedList)的第一个和最后一个元素

Java数据结构 获取链表(LinkedList)的第一个和最后一个元素以下实例演示了如何使用 LinkedList 类的 linkedlistname.getFirst() 和 linkedlistname.getLast() 来获取链表的第一个和最后一个元素:Main.java 文件import java.util.LinkedList;public class Main {pub…

第二章:表单和模板

在第一章中,我们学习了使用Tornado创建一个Web应用的基础知识。包括处理函数、HTTP方法以及Tornado框架的总体结构。在这章中,我们将学习一些你在创建Web应用时经常会用到的更强大的功能。 和大多数Web框架一样,Tornado的一个重要目标就是帮助…

C语言main()函数详解

C的设计原则是把函数作为程序的构成模块。main()函数称之为主函数,一个C程序总是从main()函数开始执行的。一、main()函数的形式 在最新的 C99 标准中,只有以下两种定义方式是正确的:int main( void ) /* 无参数形式 */{...return 0;}int ma…

json套json_JSON –拯救杰克逊

json套json有时,您必须使用JavaScript从服务器中获取一些数据, JSON是完成此任务的不错选择。 让我们玩一下JPA揭秘(第1集)-OneToMany和ManyToOne映射中的Employer – Employee – Benefit示例。 我们将在基于Spring Framework的…

[洛谷P1951]收费站_NOI导刊2009提高(2)

题目大意:有一张$n$个点$m$条边的图,每个点有一个权值$w_i$,有边权,询问从$S$到$T$的路径中,边权和小于$s$,且$\max\limits_{路径经过k}\{w_i\}$最小,输出这个最小值,若到达不了&…

yii mysql 主从_mysql主从同步实践 YII

1、两台服务器互联master、slave 2、master配置: server-id 1 master端ID号 log-bin/data/logbin/mysql-bin 日志路径及文件名 #binlog-do-db cacti 同步cacti,此处关闭的话,就是除不允许的,其它的库均同步。 binlog-ignore-db …

性能与可靠性:Java应用为何像F1汽车

再想一想。 性能和可靠性相关吗? 还是这些东西相互排斥? 我认为是后者。 如今,现实是IT部门将应用程序的性能和可靠性视为同一事物,但这离事实还差得远。 让我们看看一级方程式车队如何管理性能和可靠性。 上赛季迈凯轮本田车队…

BZOJ[1051]受欢迎的牛

Description 每一头牛的愿望就是变成一头最受欢迎的牛。现在有N头牛,给你M对整数(A,B),表示牛A认为牛B受欢迎。 这种关系是具有传递性的,如果A认为B受欢迎,B认为C受欢迎,那么牛A也认为牛C受欢迎。你的任务是求出有多少…

C语言文件操作函数大全

clearerr&#xff08;清除文件流的错误旗标&#xff09; 相关函数 feof 表头文件 #include<stdio.h> 定义函数 void clearerr(FILE * stream); 函数说明 clearerr&#xff08;&#xff09;清除参数stream指定的文件流所使用的错误旗标。 返回值   fclose&#xff…

java模拟网易邮箱登录_求赐教:网易邮箱Web端模拟登录看信的加密参数_ntes_nnid、_ntes_nuid...

网易邮箱的模拟登录和收信都非常简单&#xff0c;在阅读邮件的时候需要两个参数&#xff1a;_ntes_nnid 和 _ntes_nuid_ntes_nnid21533f97b25070a31c249f59513ad20c,1492592485123_ntes_nuid21533f97b25070a31c249f59513ad20c32位的&#xff0c;看着像MD5加密。还请各位大神不吝…

18.8.20 考试总结

铁塔(tower.pas/c/cpp)题目描述Rainbow 和Freda 要在Poetic Island 市的一座山脚下盖房子定居了……盖房子需要钢材 &#xff0c;幸运的是&#xff0c;这里有排成一行的n 座废弃的铁塔&#xff0c;从左到右编号为1~n&#xff0c;其中第i 座的高度为h[i]。 Rainbow 和Freda 想盖…

va_start、va_end、va_list的使用

1:当无法列出传递函数的所有实参的类型和数目时,可用省略号指定参数表 void foo(...); void foo(parm_list,...); 2:函数参数的传递原理 函数参数是以数据结构:栈的形式存取,从右至左入栈.eg: #include <iostream> void fun(int a, ...) { int *temp &a; temp; f…

java 根据时间范围自动算间隔_Java根据开始时间结束时间计算时间间隔 x年x月x日...

最近项目中有这样的需求&#xff1a;根据租赁开始时间租赁结束时间计算租期x年x月x日&#xff0c;相同的需求还有根据出生日期计算年龄等等......例如&#xff1a;开始日期 2020年7月24日 结束日期 2021年9月3日 租期 1年1月11日&#xff1b;开始日期 2020年7月24日 结束日期…

会java的鸭子_鸭子在Java中打字? 好吧,不完全是

会java的鸭子根据维基百科&#xff0c;鸭子的打字是&#xff1a; 动态类型的类型&#xff0c;其中对象的方法和属性确定有效的语义&#xff0c;而不是其从特定类或特定接口的实现继承 用简单的话 当我看到一只鸟走路像鸭子&#xff0c;游泳像鸭子&#xff0c;嘎嘎像鸭子一样时…

数据结构(六)查找---多路查找树(2-3-4树)

一&#xff1a;2-3-4树 具体操作同2-3树 2-3-4树是2-3树的扩展&#xff0c;包括了4节点的使用&#xff0c;一个4节点包含小中大三个元素和四个孩子&#xff08;或没有孩子&#xff09;。 &#xff08;一&#xff09;插入实现 构建一个数组为{7,1,2,5,6,9,8,4,3}的2-3-4树的过程…

java web 静态_「Java Web」主页静态化的实现

一个站点的主页一般不会频繁变动&#xff0c;而大多数用户在訪问站点时不过浏览一下主页(未登陆)。然后就离开了。对于这类訪问请求。假设每次都要通过查询数据库来显示主页的话&#xff0c;显然会给server带来多余的压力。这时候我们能够将主页静态化。在减轻数据库server压力…

实现Java监视的12个步骤程序存在缺陷

Java监视的当前状态最大的问题是什么&#xff1f; 生产中的错误很像喝醉的短信。 您只有在事情已经发生之后才意识到出了点问题。 发短信日志通常比应用程序错误日志更有趣&#xff0c;但是……两者都同样难以修复。 在本文中&#xff0c;我们将执行一个12步的监视漏洞修复程…

创建django项目

1.新建django项目 打开命令行&#xff0c;进入想要安置项目的目录&#xff0c;命令行输入&#xff1a;django-admin startproject my_web 用Pycharm打开 2.开启服务器 命令行进入my_web目录。输入&#xff1a;python manage.py runserve开启服务器&#xff0c; 将服务器的地址复…

有关fwrite语句的用法

一&#xff1a;函数名: fwrite 功 能: 写内容到流中 用 法:fwrite(buffer,size,count,fp); &#xff08;1&#xff09;buffer&#xff1a;是一个指针&#xff0c;对fwrite来说&#xff0c;是要输出数据的地址。 &#xff08;2&#xff09;size&#xff1a;要写入的字节数&#…