说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

Java EE 8愿望清单:缺少这些,Java EE将不会完美

HTML文档下载 WORD文档下载 PDF文档下载
Java EE 7已于6月中旬正式发布,尽管新平台包含了诸多新的特性,但是开发者对此似乎并不满足,他们期待未来的版本Java EE 8中能够包含更完善的特性,比如更大的CDI应用范围、标准的缓存API、现代化的安全框架等。

Java EE 7已于6月中旬正式发布,新版本提供了一个强大、完整、全面的堆栈来帮助开发者构建企业和Web应用程序——为构建HTML5动态可伸缩应用程序提供了支持,并新增大量规范和特性来提高开发人员的生产力以及满足企业最苛刻的需求。


下面的这个图表包含了JavaEE 7中的各种组件。橙色部分为Java EE中新添加的组件。


尽管新的平台包含了诸多新的特性,但是开发者对此似乎并不满足,尽管他们中的大部分还没有迁移到Java EE 7(或许是由于Java EE 7的特性还不完善),但是这并不影响他们对于Java EE 8特性的设想。

比如,在Java EE 6发布(2009年12月10日发布)后,开发者Antonio Goncalves认为该版本并没有解决一些问题,因此写了一个希望在Java EE 7中包含的特性清单。有趣的是,他写的4个特性中,其中有2个(flows和batch)已经包含在Java EE 7中了,而第3个特性(caching)原本也计划包含其中,但由于开发进度关系,在Java EE 7最终发布前被舍弃。

此举促使开发者Arjan Tijms也写了一个他希望在Java EE 8中出现的特性清单,如下。

  1. 无处不在的CDI(Contexts and Dependency Injection forJava EE,上下文与依赖注入)
  2. 更深入的Pruning(修剪)和Deprecating(弃用)
  3. 一个标准的缓存API
  4. administrative objects(管理对象)的应用内替代品
  5. 综合的现代化的安全框架
  6. 平台范围内的配置

下面就来详细阐述这些特性的必要性。

1.  无处不在的CDI

实际上这意味着2种不同的东西:使CDI可以用在目前不能用的其他地方、基于CDI来实现和改造其他规范中的相关技术。

a. 使CDI可以用在其他地方

与Java EE 6相比,Java EE 7中的CDI的适用范围已经扩大了很多,比如CDI注入现在可以工作在大多数JSF组件(artifacts)中,比如基于bean validation的约束验证器。不幸的是,只是大部分JSF组件,并非所有的,比如转换器和验证器就不行,尽管OmniFaces 1.6将支持这些特性,但最好是在Java EE 7中能够开箱即用。

此外,Java EE 7中的CDI也没有考虑到JASPIC组件,在此之中注入操作将无法工作。即使http请求和会话在Servlet Profile SAM中可用,但是当SAM被调用时,相应的CDI作用域也不会被建立。这意味着它甚至不能通过bean管理器以编程方式来检索请求或会话bean作用域。

还有一种特殊情况是,各种各样的平台artifacts可以通过一些替代的注解(如@PersistenceUnit)来注入,但早期的注入注解(@Resource)仍然需要做很多事情,比如DataSource。即使Java EE 7中引入了artifacts(如任务调度服务),但也不得不通过“古老”的@Resource来注入,而不是通过@Inject。

b. 基于CDI来实现和改造其他规范中的相关技术

CDI绝对不应该只专注于在其他规范中已经解决的那些问题,其他规范还可以在CDI之上来实现它们各自的功能,这意味着它们可以作为CDI扩展。以Java EE 7中的JSF 2.2为例,该规范中的兼容CDI的视图作用域可作为CDI扩展来使用,并且其新的flow作用域也可被立即实现为CDI扩展。

此外,JTA 1.2现在也提供了一个CDI扩展,其可以声明式地应用到CDI托管的bean中。此前EJB也提供了类似的功能,其背后技术也使用到了JTA,但是声明部分还是基于EJB规范。在这种情况下,可以通过JTA来直接处理其自身的声明性事务,但是这需要在CDI之上进行。

尽管从EJB 3版本开始,EJB beans已经非常简单易用了,同时还相当强大,但问题是:CDI中已经提供了组件模型,EJB beans只是另一个替代品。无论各种EJB bean类型有多么实用,但是一个平台上有2个组件模型,容易让用户甚至是规范实现者混淆。通过CDI组件模型,你可以选择需要的功能,或者混合使用,并且每个注解提供了额外的功能。而EJB是一个“一体”模式,在一个单一的注解中定义了特定的bean类型,它们之间可以很好地协同工作。你可以禁用部分不想使用的功能。例如,你可以关闭bean类型中提供的事务支持,或者禁用@Stateful beans中的passivation,或者禁用@Singleton beans中的容器管理锁。

如果EJB被当做CDI的一组扩展来进行改造,可能最终会更好。这样就会只有一个组件模型,并且具有同样有效的功能。

这意味着EJB的服务,如计时器服务(@Schedule、@TimeOut)、@Asynchronous、@Lock、@Startup/@DependsOn和@RolesAllowed都应该能与CDI托管的bean一起工作。此外,现有EJB bean类型提供的隐式功能也应该被分解成可单独使用的功能。比如可以通过@Pooled来模拟@Stateless beans提供的容器池,通过@CallScoped来模拟调用@Stateless bean到不同的实例中的行为。

2.  更深入的Pruning(修剪)和Deprecating(弃用)

在Java EE平台中,为数众多的API可能会令初学者不知所措,这也是导致Java EE如此复杂的一个重要原因。因此从Java EE 6版本开始就引入了Pruning(修剪)和Deprecating(弃用)过程。在Java EE 7中,更多的技术和API成为了可选项,这意味着开发者如果需要,还可以包含进来。

比如我个人最喜欢的是JSF本地托管bean设施、JSP视图处理程序(这早在2009年就被弃用了),以及JSF中各种各样的功能,这些功能在规范文件中很长一段时间一直被描述为“被弃用”。

如果EJB组件模型也被修剪将会更好,但这有可能还为时过早。其实最应该做的是继续去修剪EJB 2编程模型相关的所有东西,比如在Java EE 7中依然存在的home接口。

3.  一个标准化的缓存API

JCache缓存API原本将包含在Java EE 7中,但不幸的是,该API错过了重要的公共审查的最后期限,导致其没能成为Java EE 7的一部分。

如果该规范能够在JavaEE 8计划表的早期阶段完成,就有可能成为Java EE 8的一部分。这样,其他一些规范(如JPA)也能够在JCache之上重新构建自己的缓存API。

4.  所有管理对象(administrativeobjects)的应用内替代品

Java EE中有一个概念叫“管理对象(administrative objects)”。这是一个配置在AS端而不是在应用程序本身中的资源。这个概念是有争议的。

对于在应用服务器上运行许多外部程序的大企业而言,这可以是一个大的优势——你通常不会想去打开一个外部获得的应用程序来改变它连接的数据库的相关细节。在传统企业中,如果在开发人员和操作之间有一个强大的分离机制,这个概念也是有益的——这可以在系统安装时分别设置。

但是,这对于在自己的应用服务器部署内部开发的应用程序的敏捷团队来说,这种分离方式是一个很大的障碍,不会带来任何帮助。同样,对于初学者、教育方面的应用或者云部署来说,这种设置也是非常不可取的。

从Java EE 6的@DataSourceDefinition开始,许多资源(早期的“管理对象”)只能从应用程序内部被定义,比如JMSDestinations、email会话等。不幸的是,这并不适用于所有的管理对象。

不过,Java EE 7中新的Concurrency Utils for Java EE规范中有明确的选项使得它的资源只针对管理对象。如果在Java EE 8中,允许以一个便携的方式从应用程序内部配置,那么这将是非常棒的。更进一步来说,如果Java EE 8中能够定义一种规范来明确禁止资源只能被administrative,那么会更好。

5.  综合的现代化的安全框架

在Java EE中,安全一直是一个棘手的问题。缺乏整体和全面的安全框架是Java EE的主要缺点之一,尤其是在讨论或评估竞争框架(如Spring)时,这些问题会被更多地提及。

并不是Java EE没有关于安全方面的规定。事实上,它有一整套选项,比如JAAS、JASPIC、JACC、部分的Servlet安全方面的规范、部分EJB规范、JAX-RS自己的API,甚至JCA也有一些自己的安全规定。但是,这方面存在相当多的问题。

首先,安全标准被分布在这么多规范中,且并不是所有这些规范都可以用在Java EE Web Profile中,这也导致难以推出一个综合的Java EE安全框架。

第二,各种安全API已经相当长一段时间没有被现代化,尤其是JASPIC和JACC。长期以来,这些API只是修复了一些小的重要的问题,从来没有一个API像JMS 2一样被完整地现代化。比如,JASPIC现在仍然针对Java SE 1.4。

第三,个别安全API,如JAAS、JASPIC 和JACC,都是比较抽象和低层次的。虽然这为供应商提供了很大的灵活性,但是它们不适合普通的应用程序开发者。

第四,最重要的问题是,JavaEE中的安全机制也遭遇到了“管理对象”中同样的问题。很长一段时间,所谓的Java EE声明式安全模型主要认证过程是在AS端按照供应商特定方式来单独配置和实现的,这再次让安全设置对于敏捷团队、教育工作者和初学者来说成为一件困难的事。

以上这些是主要的问题。虽然其中一些问题可以在最近的Java EE升级中通过增加小功能和修复问题来解决。然而,我的愿望是,能够在Java EE 8中,通过一个综合的和现代化的安全框架(尽可能地构建在现有安全基础上)将这些问题解决得更加彻底。

6.  平台范围内的配置

Java EE应用程序可以使用部署描述文件(比如web.xml)进行配置,但该方法对于不同的开发阶段(如DEV、BETA、LIVE等)来说是比较痛苦的。针对这些阶段配置Java EE应用程序的传统的方法是通过驻留在一个特定服务器实例中的“管理对象”来实现。在该方法中,配置的是服务器,而不是应用程序。由于不同阶段会对应不同的服务器,因此这些设置也会随之自动改变。

这种方法有一些问题。首先在AS端的配置资源是服务器特定的,这些资源可以被标准化,但是它们的配置肯定没有被标准化。这对于初学者来说,在即将发布的应用程序中进行解释说明比较困难。对于小型开发团队和敏捷开发团队而言,也增加了不必要的困难。

对于配置Java EE应用程序,目前有很多可替代的方式,比如在部署描述符内使用(基于表达式语言的)占位符,并使部署描述符(或fragments)可切换。许多规范已经允许指定外部的部署描述符(如web.xml中可以指定外部的faces-config.xml文件,persistence.xml中可以指定外部的orm.xml文件),但是没有一个统一的机制来针对描述符做这些事情,并且没有办法去参数化这些包含的外部文件。

如果Java EE 8能够以一种彻底的、统一平台的方式来解决这些配置问题,将再好不过了。似乎Java EE 8开发团队正在计划做这样的事情。这将会非常有趣,接下来就看如何发展了。

结论

Java EE 8目前尚处于规划初期,但愿上面提到的大多数特性能够以某种方式加以解决。可能“无处不在的CDI”的几率会大一些,此方面似乎已经得到了很大的支持,且事情已经在朝着这个方向发展了。

标准化缓存API也非常有可能,它几乎快被包含在Java EE 7中了,但愿其不会再次错过规范审查的最后期限。

此外,“现代化的安全框架”这一特性已经被几个Java EE开发成员提到,但是此方面工作尚未启动。这可能需要相当大的努力,以及大量其他规范的支持,这是一个整体性问题。顺便说一句,安全框架也是Antonio Goncalves关于Java EE 7愿望清单中的第4个提议,希望Java EE 8可以解决这一问题。

英文原文:Java EE 8 wish list

与英特尔软硬合作,Cloudera将在中国建立业务机构 准备迎接第一个量子计算软件公司吧! 搜狗搜索发布新LOGO和移动App 正全面入驻腾讯各条产品线 做好扁平化设计-视觉篇 关于敏捷研发的跨界反思 《近匠》雨血,一个“独立游戏人”的反思 一周消息树: 阿里巴巴赴美IPO的种种及马云内部邮件全文 一周热点:准备迎接第一个量子计算软件公司吧! 【云先锋】多备份:云端数据物流平台为企业提供云备份服务 不容错过!开发者必备的十二大开发资源 为Canvas而生:开源2D HTML5渲染引擎CutJS 第九届中国互联网创业者大会在京举办 腾讯发布“三驾马车”组合拳产品 入手Beats,苹果史上最大手笔收购为哪般? Gmail有生以来最大手术 全新设计曝光 Python开发者最常犯的10个错误 博康智能副总裁张善海:活化运用大数据 实现传统交通系统间的数据融合和共享 刘刚:从互联网到传统行业 Hadoop发展迅猛! OpenFlow多级流表在云计算网络中的应用 分享大数据最佳落地实践 助力企业数据驱动型转型 怎样成为优秀的产品经理? Google发布新版AdMob 将在更多市场推出 触控ARM“结连理”,Cocos2d-x性能提速70% Per Brashers:智能、能耗、安全将是未来数据中心发展的关键! 梁博:OpenStack已在IaaS层面扮演重要角色 云计算三大主流阵营的竞争与合作 如何使用15美元每月的机器实现百万文档检索 外媒路透社:小米本周四发布首款平板电脑,八九不离十 移动支付帝国战:谷歌、苹果、Facebook、亚马逊孰胜孰负? 十大响应式Web设计框架 Giraph助力Facebook打造亿万用户间关系链 跪求出名:让应用在App Store中出人头地的12种方式 [不爽阿]今天圣诞,有人惹我 关于临时表的共享问题? 是不是我的问题太难了,没有人回答? 请举例说明:接口是怎样实现多重继承的? 听说最近由于IT行业不景气,程序员的工资缩水了?是真的么? 这样写有什么不对?? delphi的dll库返回后调用程序出错!加了一行无关代码却正常!求教各位大狭! 塔尼包姆出了不1本计算机结构的书,还有1本MICROSOFT的 Microsoft Windows 用户界面开发 请问是否很好 Access初学者问一 再次请教一个sql排序问题,一定给分。 请问:程序中对WM_PAINT,WM_CTLCOLOR,WM_ERASEBKGND三个消息处理的顺序是怎样的? 这个月生意只有上个月的1/5,怎么回事? 我女朋友说最爱她的人不是我,这意味着什么? 工资里导入上月数据怎么实现 谁有复读王(fyfdw2001)的注册码? 经过一段时间的努力,我做出一套电话语音邮件系统,可以用电话和手机来收发EMAIL,有意者请与我联系 xuyaoliang@263.net 请救救我吧!有谁能告诉我中程的分数怎么查! 如何解决数据窗口显示照片(此照片在数据库的一个字段里)的问题? 请问如何获取硬盘和光驱的型号信息 谁有复读王(fyfdw2001)的注册码??????? n_up的问题。如何在另一列插入计算字段? 有没有深圳的mm,一起过圣诞好吗? far怎么用啊? 关于临时表的共享问题?? 请大家介绍一些学习C/C++的好网站,只要进者就给分。 "他妈的,又打歪了!" 我在作登录是出现了"runtime error"错误,详情见内 3台机子如何共享一个adsl上网?? 如何把一应用配置成一NT服务 出学的菜鸟提问 找回addin:资源编辑器 怎样开发阅读工具软件 acm文件格式 数据库安装程序的问题。 大家看看这道题怎么解 100M的网线怎么做?用的是双脚线!!! 大峡,我把一个Acess的 .mdb文件设置了密码,但是密码我忘了,哪里有软件下载,可以解决我打开的问题呢?谢谢 关于 请问怎么样实现象”金山毒霸“控制中心一样的界面? 请问如何在TCOMBOBOX中输入后自动查询到相似的ITEM上面去 文件对话框中怎么过滤文件 wang wei come on 一个ODBC数据源可以被多个应用程序共同使用吗? 经过一段时间本人修改了sendmail、POP3、IMAP4的源代码,把用户认证该为了数据库,数据库采用的MYSQL、并虚拟了整个系统用户来存放邮件内容,有意者请与我联系xuyaoliang@263.net java 板圣诞大餐 有人会吗?不重做系统:如何修改win98se的安装时的序列号? 如何在DELPHI中调用中断? 其实就是一个信仰的问题。想想我们建国的时候不是一样抛什么什么洒什么什么吗?大家也都是无怨无悔。听懂就瞎听。听不懂就当我放了个屁!我可是什么都不信!就信我自己。哈! sql语句问题!! 大虾请进! 目前我还在用JAVA MAIL+EJB开发企业邮件系统有兴趣的可以加盟,并提供好的意见。谢谢 [送分族]今天圣诞也! 汉译英:两个名词秦始皇陵遗址公园 Qin Shihuang'Mausoleum Site Park秦始皇陵博物院 Qin Shihuang'Mausoleum Museum 怎么求太阳直射的经度 帮忙汉译英:做自己喜欢做的事enjoy doing myself love to do这句话语法对么?谢谢指点!因为我们打算开发现代社群的个人爱好,现在只是一个初步的想法。以后我们的口号就可以说:do it!I enjoy do i 现值计算的问题 图里面的四个公式 分别应该在什么时候用啊== 夏至日 太阳直射点经度怎么根据图象计算夏至日的太阳直射点经度?请说明具体情况. 遇到已知一个地区的经度与当地时间,求另一地是该怎么算?本人在这方面经常丢分,明天就考了,麻烦帮帮忙. 股票价格计算公式怎么样? 如何判断太阳直射点经度如题 同一经度的时刻相同吗. 时间计算公式A1为开始时间10:00 B1为结束时间12:00在C1算出中间间隔几小时. 我喜欢你 你喜欢我吗?怎么办. 英语翻译审美的差异.审美作为普遍的社会文化现象,是人类文明长期发展的结果.文化背景的不同,决定了审美情趣的差异.审美的差异决定了译者要深入把握源语电影作品的思想美学内容,用目 翻译英语,不要有百度的,百度的我用过了,不对.翻译的英语内容:1.what are you going to do in the nature park?2.I‘m going to draw some pictures.What about you?3.I’m going to look for some beautiful leaves.4.Mike is going to b 我喜欢你你也喜欢我,为什么还要他只会盯着你看,有意无意老是盯着你看,在你面前会示好,可以没有提过和爱情有关的是他太胆小吗 英语翻译我们已经发货,在香港出了点问题,不过已经解决,大概需要5天就能到英国了,这是你快递单号,你可以在xxx进行查询,给你照成的困扰我们感到很抱歉 英语翻译清明节是我国汉族的传统节日之一,为中国二十四节气之一,时间约在每年的阳历4月5日前后。古有清明前一天为“寒食节”之说,相传起于春秋时期晋文公悼念介子推“割股充饥 英语翻译只要是我喜欢的,就是最好的. 由地球公转产生的地理现象是( )1四季变化2昼夜长短变化3日月落4不同经度的地方出现时间差异(可多选3是日月星辰东升西落 求解释 英语翻译India has a long tradition of government planning but the degree of government intervention in the economy has been reduced in the last two decades.Privatization started in 1991,with the creation and sale of a small number of shares in so 英语翻译1.工程部自销售部得到项目信息后,核实项目各方面情况.了解用户有无特殊功能要求:有:应该在公司搭建模拟环境,新开发功能的测试工作尽量在公司完成;无:也应当将所有涉及 英语翻译这个故事讲述了普通人的生活 英语翻译参加俱乐部和学生社团是件好事,不仅能与更多的人打交道,还能丰富学生们的社会生活.(Tranlation:Participating in clubs and students’ associations is a good thing,not noly communicating with more people,but 英语翻译In January,2000,I was diagnosed(诊断)with cancer.Life in hospital has been made a lot more bearable by the phone conversations I have with Dr.Kaplan.His first wife died of cancer,so he knows what I am going through .He always encouraged 英语翻译外来词是一种语言的词汇传入到另一种不同语言环境下形成的词汇,且被另一种语言接受并使用的词汇.它也可以被称为借词.总言之,抽象外来词指的是语言使用者适应从源语到他们的 汉译英:我不能保证每个人都喜欢我 英语翻译恋爱不是坚固的溜冰场.恋爱是一片结了冰的湖面.我们是可以在上面手牵着手,轻飘飘的嬉戏,绕着我们自己的圈圈,只是不会有人来警告我们,冰会在那一 秒溶化、裂开,恋爱中的我们 英语翻译人为因素是一门应用科学,以操作设备的人为研究中心.应用人为因素有和于优化人的行为表现并减少人为差错.人为因素体现了行为科学和社会科学、工程学和心理学的方法和原则.人 英语翻译由于托盘高度太高,不能装运,所以货代将一个托盘换成2个托盘在上海仓库.请参考附件照片. 【求高手】:道德经第一章英语翻译,不要复制粘贴党, 我想问一下同经度不同纬度的两个地方是不是两点时间同时,同时看到日出? 急!帮忙翻译吧.不要百度在线翻译的.在线等.condition of the injury.It was late, wandering in the choice of two individuals directly over.I cried, somehow, banging on the keyboard don't know stem what, listen to the 通过地球上的经度和纬度,人们可以确定一个地点在地球上的位置 判断 汉译英在线翻译 英语翻译Studies show that people are watching more TV today than they did twenty years ago 如何辨别经度纬度 四季更替现象是由于地球【 】所产生的,不同地方时间差异是由于地球【 】所产生的 怎么把一张新报纸处理成旧报纸的效果.我想问一下怎么把一张新报纸处理成很多年前的报纸的感觉 英语翻译 在地图上如何来判断南北纬度?纬度范围?经度变化规律? 这种词汇题该如何判断啊?In previous times,when fresh meat was in short _______,pigeons were kept by many households as a source of food.A:store B:provision C:reserve D:supply不过A,B为什么就不可以?(A,B都有储存的意思,D是供 数学几何题应该怎么添加辅助线?有些题目有辅助线一连答案就出来了``但是一不懂怎么连可就很麻烦了``应该怎么添加辅助线呢?有什么规律吗? 请帮忙用英语翻译以下这段话,请不要机器自译昨天我们在吊运主机排气阀时突然机舱行车不能进行升降控制,检查行车控制箱发现控制箱内电源开关3F1发生跳电,我们对其进行复位,但还是马上 英语翻译下面让我来介绍几种能瘦身的食物:1.大豆.大豆所含的营养丰富、热量较低,有益心脏健康、能消除便秘2.黄瓜.黄瓜含有丰富的维生素,有美容功效,黄瓜含有的纤维素可促进肠道蠕动, 求数学几何的辅助线做法遇到什么样的图形,一般做什么样的辅助线能解决问题? 知道太阳高度角怎么求经度? 补充词语,( )不敌众 丢( )弃甲 ( )计多端大公无私这个成语指从集体利益出发,毫无个人打算.(错还是对)卜算子咏梅是毛主席在读了宋代诗人陆游的同题词后写下的一首诗 (错还是 做数学几何题如何添加辅助线? 太阳高度与经度的关系已知东经90度的正午太阳高度.如何得到同一时刻东经75度的太阳高度?这个是不是还和纬度有关系?有现成公式么? 百度在线翻译英语准吗 关于数学几何辅助线问题是不是不能直接作垂线,而是只能连接一条线段要自己证明出来是垂直的.有没有什么情况是例外的举个例子,在圆O中,做一条垂线垂直于弦AB。这样的说法可不可以 某地北京时间13时太阳高度达到最大,如何计算出此地经度? 第四题 词汇运用 数学怎么出有辅助线的几何题? 太阳高度与经度差的问题为什么1度太阳高度对应的经度要大于1 打个比方:A、B位于同纬度,当A地直射时,B地的太阳高度是75度,问AB两地的经度差大于15还是小于15?当然,按照上面的那个公式来 第四题组词怎么写?秒回必采纳. 中译英:你们的发型杀死我了You guys hair kill me. 中文翻译成英文,不要机器的关于接下来开发的模具贵司是否有新的消息?期盼您的回复! 名词中译英两个中文名词英译.1)南方联合防御体系,2)水蜥部队,水蜥是一种动物,属蜥蜴类的.希望准点,另外第一个南方联合防御体系可不可以有简称,例如FBI,CIA一样..请高手准确指教没看明白 汉译英 英语值日报告 我的发型内容:今天我们来讨论我的头发.最近,我的头发被剪短了.对此我身边的人有不同的看法.我妈妈说我变精神了.我的同桌认为我的发型将会成为趋势.但是,我前面 同一时刻,不同( )的地方具有不同的( )时.经度相差( )度,时间相差1同一时刻,不同( )的地方具有不同的( )时.经度相差( )度,时间相差1小时.
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn