设为首页收藏本站

LUPA开源社区

 找回密码
 注册
文章 帖子 博客

JavaOne2011:Oracle推动Java向前发展

2011-11-11 15:49| 发布者: joejoe0332| 查看: 2763| 评论: 2|原作者: InfoQ|来自: InfoQ

摘要:   对于Java社区来说,9月和10月间最重要的事件是一年一度的JavaOne大会的召开。JavaOne 2011的主题是“推动Java向前发展(Moving Java Forward)”。从这个主题可以看出,Oracle正试图以领导者的身份带领Java社区来 ...
  对于Java社区来说,9月和10月间最重要的事件是一年一度的JavaOne大会的召开。JavaOne 2011的主题是“推动Java向前发展(Moving Java Forward)”。从这个主题可以看出,Oracle正试图以领导者的身份带领Java社区来共同推动Java的发展。Java SE 7的发布,是这个过程中的一个重要里程碑。相对于上一次JavaOne会议来说,JavaOne 2011在社区中的评价比较不错,被认为是一次成功的会议。Oracle也更加重视社区在推动Java发展中的作用。遗憾的是,由于Google和 Oracle之间的专利诉讼,来自Google的开发者再一次缺席了JavaOne大会。

  在JavaOne 2011上,Oracle发布了一些新的技术和项目,也公布了一些重要项目的发展规划。

  Java SE 8

  根据社区的反馈,Java SE 8的发布时间从2012年底推迟到了2013年夏,距离Java SE 7的发布差不多正好2年的时间。在Java SE 8中会包含的内容包括:

  • Jigsaw项目:为Java平台和Java应用提供模块化系统的支持。
  • Lambda项目:为Java语言增加闭包的支持。为Java集合API提供批量并行操作API,如filter/map/reduce。
  • 把JRockit虚拟机中的部分特性整合到HotSpot虚拟机中,提供一个统一的虚拟机实现。
  • 集成JavaFX 3.0。在JavaOne 2011上JavaFX 2.0正式发布,并会在JDK 7u2中集成JavaFX 2.0的安装。Java SE 8中则会直接集成JavaFX 3.0。
  • 虚拟机上可以直接使用的新的JavaScript引擎,以及更好的JavaScript和Java互操作性。新的JavaScript引擎称为Nashorn,是一个基于JSR 292的实现。
  • 在移动设备上,增加对多点触摸、摄像头、地理位置信息、罗盘和重力加速器的支持
  • 对Java 安全、日期/时间、网络、国际化和可访问性API的更新。

  Java EE 7

  Java EE 7的目标是把Java EE技术与目前炙手可热的云计算相结合,把Java EE平台本身变成一个服务(Platform as a Service,PaaS),同时提供弹性计算(Elastic computing)和多租户(Multi-tenancy)的支持。相对于目前已有的云计算技术,Java EE 7的最大优势在于标准化和开放性。Java EE 7的内容包括:

  •提供平台即服务的支持,包括服务定义和服务提供,以及在API中支持多租户。

  •增强Web Profile的能力,增加对JAX RS 2.0的支持。

  •进一步简化开发,包括新的JMS 2.0,更多的依赖注入的使用,以及更多的服务元数据和优化配置方式等。

  Java ME 7

  在Java ME方面,发展的重点是与Java SE保持同步。当Java SE中有新的更新时,尽快的同步到Java ME中。这其中包括发布版本的同步、Java ME API可以运行在Java SE环境中、以及一致的工具接口等。另外的一个目标是让Java平台支持所有不同的平台,不管是什么样的CPU内存限制环境。最后一个方向是与内容和服务进行深度集成,包括访问运营商提供的服务。

  CDI

  对于依赖注入的概念,相信很多开发人员都不陌生。一个组件在运行过程中会依赖其他组件提供的功能。传统的做法是由组件本身负责查找所需的依赖对象。这种 方式会造成组件之间的紧耦合,不利于组件的维护和更新。依赖注入的做法则是由组件以声明式的方式表明其依赖关系,由框架在运行时把所需的组件的Java对 象注入到当前组件中。相对于Java SE来说,依赖注入的概念对于Java EE更加适用。Java EE中的很多资源和服务都是由容器来负责管理的。对于单个应用来说,查找由容器负责管理的组件并不是一件容易的事情。更好的做法是由应用来声明所需的资源 和服务,由容器负责注入到应用中。通过这种方式,容器也可以更好的对资源和服务进行管理。以数据库连接为例,传统的做法需要由应用本身加载相关驱动并创建 数据库连接,以及在适当的时候进行释放。而使用容器管理并注入依赖的做法,则减轻了应用开发人员的工作量。

  Java EE 5中添加了对依赖注入的有限支持。通过注解可以往容器管理的对象中注入资源的对应对象。Java EE 6中把依赖注入的概念更进一步,即引入了JSR 299 (Contexts and Dependency Injection for the Java EE platform)规范,简称CDI。CDI规范吸收了来自Spring IoC容器、JBoss Seam和Google Guice的最佳实践,并与Java EE开发的实际需要相结合。正如CDI的字面含义一样,CDI中的两个核心功能是上下文信息(context)和依赖注入。这两个功能的结合点是Java 中基本的组件模型bean。在CDI中,bean 定义了应用的状态和逻辑,并由容器来进行管理。每个被管理的bean都有定义好的绑定到特定上下文的作用域和生命周期。当需要注入或访问bean时,容器 会从作用域对应的上下文中获取。当作用域失效时,对应上下文中所有的对象都会被删除。CDI中的每个bean都可以作为依赖注入时的目标。

  CDI中预定义了一些常用的作用域。默认的作用域是Dependent,表示只对被注入的对象生效。作用域ApplicationScoped表示应用 的全局作用域,用来创建全局唯一的对象。RequestScoped和SessionScoped则与HTTP相关,分别表示HTTP请求和HTTP会 话。ConversationScoped是由应用自定义生命周期长短的作用域,可以用来实现跨多页面的工作流。如下面代码中的 OrderProcessor类只存活在HTTP请求中,并且依赖OrderDao接口的实现。容器会在运行时查找到OrderDao接口的实现对象,并 注入到OrderProcessor类的对象中。

  @Named

  @RequestScoped

  
public class OrderProcessor {

  @Inject

  
private OrderDao orderDao;


  }
  

酷毙
1

雷人

鲜花

鸡蛋

漂亮

刚表态过的朋友 (1 人)

  • 快毕业了,没工作经验,
    找份工作好难啊?
    赶紧去人才芯片公司磨练吧!!

最新评论

关于LUPA|人才芯片工程|人才招聘|LUPA认证|LUPA教育|LUPA开源社区 ( 浙B2-20090187 浙公网安备 33010602006705号   

返回顶部