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

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

腾讯云公测终究还是来了 BAT云大战将开启? iOS 7将从这三方面影响IT界 超越Google,他企图将整个互联网塞进1台电脑 2013互联网安全大会议题先睹为快之CSA中国理事赵粮 移动建站工具(二):分秒钟DIY一个移动网站 2013上半年中国移动互联网报告,在线完整版 iOS开发者必备:九大设计类工具 已到“迟暮之年”?微软投资者提议两“救世主”外部候选 【SDCC讲师专访】Joseph G. Brown:云带来的软件销售方式变革 用户界面设计攻略:设计师需注意的九大要点 Google Glass的竞争对手来了:看YC演示日的五款新孵化项目! GPU Saturday技术沙龙:OpenCL程序员眼中的下一代APU架构 黑帽大会演讲中国第一人:从攻到防,从白帽黑客到创业者 15个步骤创立技术公司,并收获千万用户(完结) CTO容易犯的三大错误 谷歌艺术计划:互联网能否取代真实的博物馆? Hadoop技术沙龙:Hortonworks技术研发总监展望Hadoop 2.0 Marissa Mayer:雅虎月活跃用户增长了20%达8亿 移动用户3.5亿 气死偷车贼:脑电波防盗技术,让偷车贼无计可施 TIOBE 2013年9月编程语言排行榜:Transact-SQL首次进入前十 前Oracle总裁Charles Phillips:商业软件领域的“乔布斯” 留住你的用户:8款第三方移动推送服务 人气最旺:主流移动应用创建工具大合集(一) 不要强迫用户注册,请让他们先试用产品 Eve:基于Python的REST API框架 想扩展你的数据库吗?那么先了解一下I/O 白帽黑客将现场爆料Android系统及框架漏洞 9月13日:程序员节,一起来过节吧! 欲与Siri、Google Now比高低:微软开始打造个人助理Cortana 【开源专访】禅道创始人王春生:覆盖项目全周期,回归管理的本质 携程无线创业者大赛成功落幕 梁建章为头名“快展”颁20万奖金 WORD求源代码加分之四 怎么样获得一个 EDIT 的 句柄 ?? 请问嵌入网页中的Activex如何调整自身的大小?请各位高手帮忙!谢谢! Oracle和SQLSERVER中5用户10用户到底是什么意思? 我身边的一个PLMM说,她想找一个成熟、幽默、聪明的程序员。 一个局域网内访问odbc数据源的问题 对女孩子不能太热情了! 一个easy 的question 请精通C#与VB.net的大虾帮忙翻译一下 在异地拷贝一个文件(200M以上)到本地,如何做 《C++程序语言》(特别版)怎么样 getContentPane()是什么意思? 高手请进!嵌入网页中的Activex如何获取加载它的浏览器对象?谢谢! i am 24 year old ,but i have nothing 请问哪里有exchange2000 server??? XP,IE 6 SP1,安装JRE 1.4无数次,<APPLET>标签下的东西仍不能看,<OBJECT>可以,为什么??!!求救!! Socket发送接收的问题! c++ builder6的盘 mapx 问题? partition magic 8.0 一个既包含静态图象又包含视频播放的视频,怎样把它抓屏下来??? SOS!!!一个有关全文检索,以及文档的数据库存储的问题,急急!各位大侠出招啊,在线等候 请问如何在程序中将CEdit控件设为只读或取消只读, Java认证问题 请问你们认为哪种操作系统更好用和稳定? 关于mfc dll wizard 做出来的dll 的内存泄漏问题!! vc++与C++Builder有何本质的区别? 能否做个象Media Play的ACTIVEX查件,既有动画窗口,又有按钮??? 高手,关于数据库转换的问题 给分:谁有关于“从网卡取得数据”方面的论文 大家好,有一个关于拔号、专线系统的IP地址问题 SAX的问题 表单传递后,如何判断用户是否填入了内容的? 请教 请教各位大侠 各位好,小弟初学Oracle,请各位指点哪有相关电子书下载,多谢! 辞职,不知是对是错?(第一次散分,请版主高台贵手) 关于vb在com编程的几个问题! 请教如何用C#取网卡MAC的地址?? 那位大侠做过数据加密解密的程序呀! 询问一个关于组件安装的问题 Windows2000网上邻居里没有任何东西 我要的form控件在哪里? 有谁用过windows.net server 2003? 有关于结合JBuilder介绍XML的书籍吗? treeview的一个问题 有谁用过windows.net server 2003?介绍一下相关情况?谢谢 如何单击按钮产生超级连接的效果? mail函数怎么让邮件正文换行? redhat 7.2 请问这个问题如何解决? 8.0 g Cu2S和CuO的混合物中含有铜原子数为0.3NA, 在所有支架结构中,()支架最稳定. 下列五种有色溶液与SO2作用,均能褪色,其实质相同的是( )①品红溶液 ②酸性KMnO4溶液 ③溴水 ④滴有酚酞的NaOH溶液 ⑤淀粉—碘溶液A.①④              B.①②③C.②③ 元素是一个宏观概念,他只有_________,没有___________ 结构由( )构成,()最稳固,结实,所用材料也最少. 女生生病了要我帮她去拿药 说明了什么校医室不远 她只不过是咳嗽 浪琴手表军旗系列跟瑰丽系列区别在哪?就机芯看不见的区别?军旗 L4.774.4.72.6跟瑰丽L4.760.4.72.6 ,那个好? 植物的抗氧化酶系统(SOD,POD,CAT)测定前提取的粗酶液最适保存温度是多少?该温度下最长能保存多少时间?有些说4度就可以,但最多24小时,有些又说负的几十度,但又有些人说不易结冰,究竟是 细菌拟核中有一个环状的DNA分子这句话对不对2 细菌和蓝藻都有细胞壁,细胞内只含有DNA一种核酸分子 对么? 盐湖卤水模拟怎样在实验室模拟盐湖卤水化学物质体系 RNA提取植物材料需要消毒吗?求答案 为什么环状 DNA细菌体内的A≠T,C≠G? 青海盐湖卤水可以泡脚吗 植物POD达到三四百,有没有可能?植物(沉水植物)叶片的POD值的范围一般是多少?在叶片还绿时达到三四百有没有可能? “氨能直接被植物吸收”这个说法对吗?如题有个题是:3.下面有关氮循环的说法中正确的一项是 A.生物的固氮过程就是氮被吸收到植物体内并被利用的过程 B.氮素一旦进入生物体内就会形 我要用ICS-1500型离子色谱仪测定盐湖卤水中锂的含量,请问离子色谱仪使用条件是什么,卤水需要什么预处理 怎样准确阅读药品说明书? 问问“看不懂”的粤语怎么说? 氯气能导电吗 节能灯塑料件的配方,我知道节能灯塑料件PP料加母料(就是石粉)的配方,但我石粉加多了,产品就容易碎,一捏就破,可能还有一种原料要掺进去,那就可能是玻纤,但我不知道他们的配比是多少, 带8个结晶水的氢氧化钡和氯化铵反应的中立即用玻璃棒搅拌的原因 下列所描述的二氧化硫的一些化学性质中,体现二氧化硫作为还原剂的是A.溶于水形成不稳定的亚硫酸 B与碱液反应生成硫酸根离子C通过溴水溶液使溴水褪色 D通入品红溶液中,使品 魔法玉米如何消毒? 为什么环状DNA细菌体内的A≠T,C≠G? 国产地平线摩托车跑车怎么样?宗申250小链发动机机. 猪场氨气太重,怎么处理? 粤语,听不懂不说,可怎么还看不懂...那些繁体字不说 好像很多词都没见过 像是古人用的 有点文言文的味道 有些简单句子看起来还特别扭 不同民族的教育具有不同的传统和特点说明了教育的() A民族性 B历史继承性 C生产性 D阶段性 怎么样解决养猪场的氨气?目前我们规模比较小,但是氨气也比较严重,请问有什么方法可以解决呢? 细菌拟核中的DNA是单链的对吗? 浪琴军旗系列手表,浪琴 瑰丽 实践的基本形式包括( ) A生产实践 B处理社会关系的实践 C教育医疗实践 D科学实验 E艺术实践 (多选)E是否正确 为什么必须阅读药品说明书上的注意事项 浪琴军旗系列的机械手表,精仿的到哪买 学会合作()A.是教育的目的 B.才能适应竞争 C.是成功的要素 D.目的是受人欢迎 E.目的是改善人际关系 一个关于药品的问题,药品说明书上有如下内容:不良反应:尚不明确禁忌:尚不明确注意事项:尚不明确这说明什么问题? 化学实验电解水前后水是怎么变化的?误差产生的原因都有什么?就是水的体积前后有变化么? 菲涅耳公式推导时利用的边值关系为什么是B和D法向分量连续呢? 阅读下列材料,材料一:楚越之地,地广人希(稀),饭稻羹鱼,或火耕而水耨,果隋赢蛤.材料二:江南地广野丰,民勤本业,一岁或稔(丰收),则数郡忘饥.)材料二中的江南地区相比材料一中的描 低温杀菌的温度.我要杀除那些在不锈钢板上的细菌,密封,要低温,要多少时间+几度最好,..by the way,我要烘干80cm2的不锈钢板上的积水,密封,要多少时间+温度最好?,谢谢,for godforsaked, 灭菌灯如何安装 兵团棉花目标价补贴是按面积补还是按斤数补 财政赤字什么意思 二氧化硫做还原剂的反应都有哪些? 谁知道棉花是怎样补贴的? 浪琴军旗有几种机芯 So2 可以作还原剂吗 2014年棉花补贴怎么补 使用高压灭菌器时如锅内有空气,会影响到灭菌效果吗? 爱包含了什么含义? 棉花补贴补每亩补贴l了191元,剩下的产量补贴还能补多少钱 高压灭菌器怎么选择?ALP高压灭菌器怎么样? 爱和喜欢包含着什么含义? 细菌质粒是不是环状DNA?它要是DNA为什么还要做细胞工程的运载体?把它放入细胞里面,细菌的DNA不就也进去了么?而且目的基因是如何把质粒当成载体的呀? 电路图和线路图有什么区别 有50gKCL和KI的固体混合物加水溶解后,通入足量的氯气充分反应后,将溶液蒸干灼烧得固体31.7g.求:(1)标准状况下通入氯气的体积(2)原混合物中各物质的质量各是多少? 某种细菌每15分钟分裂一次(有一个分裂为两个)经过2小时,这个细菌由1个分裂成几个? 为什么元素是宏观概念?宏观概念不就是指看不见的么,我度娘了很多次,有人说像金属元素金银铁什么的是宏观概念我也能理解,但我记得我在哪看见说Na和Na+是钠元素,是同种元素,像这样的一 三角形组成的支架结构最稳固、结实,所用材料也最少吗?判断题 噬菌体在细菌细胞内的繁殖,需要利用细菌的物质中,为什么没DNA我看实验过程明明有细菌的DNA参加 2013国际变性人选美决赛在泰国落幕日媒:日俄拟促防务交流 俄方就领土问美环保专家:手机等移动设备将成重要环洛杉矶机场枪击案嫌犯身份确定 被指曾伦敦前市长:伦敦有必要成为一个独立国伦敦前市长:伦敦有必要成为一个独立国国际核查人员证实叙利亚已销毁化学武器英女子脱光上衣过安检引骚乱被罚(组图联合国官员:目前还在讨论叙利亚化武销杨洁篪:中国是二十国集团的积极参与者“中国皮都”平阳十年整治制革产业 政微信被指“封杀”来往 回应称打击病毒巴基斯坦塔利班首领被美击毙 巴和平进监察部召开座谈会 聘请马怀德等40人民政部部长:鼓励老年人再社会化 释放中国国资改革进入关键期 “领队”角色快递员送货路上猝死 “过劳现象”蔓延联合国官员:目前还在讨论叙利亚化武销获俄罗斯一大型私营网站聘用 斯诺登开英国检方称《世界新闻报》曾窃听哈里王洛杉矶机场枪击案嫌犯身份确定 被指曾东莞年内与全省 岭南通互联互通商品条码注册企业公告(以报纸为准)深化改革锐意创新破解交通难题全国楼市呈现分化加剧态势树干被砍市民心疼公交优先柔性治堵成效明显清洁女工学校坠亡规范处罚事项 限定裁量权限化粪池清洁无人监管隐患重重“全面停贷”传闻重挫地产股5个月内17次侵吞公款49年后天空较量国民党略胜 曾一战致河北20名专家组成雾霾天医疗救治组降福田消委会为消费者挽回经济损失276聚焦作风建设 解决突出问题真诚关爱 每位病人白百何删除与陈羽凡恩爱合照 陈羽凡发探讨深水区 改革路径下月起,16类场所向吸烟者说“不”下月起,16类场所向吸烟者说“不”大通县“五个坚持”扎实推进教育实践活
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘