知识大全 Java那些事儿 - JavaOne 2011、CDI和Google Dart语言

Posted

篇首语:引诱肉体的是金钱和奢望,吸引灵魂的是知识和理智。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Java那些事儿 - JavaOne 2011、CDI和Google Dart语言相关的知识,希望对你有一定的参考价值。

Java那些事儿 - JavaOne 2011、CDI和Google Dart语言  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

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

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

Java SE

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

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

Java EE

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

  • 提供平台即服务的支持 包括服务定义和服务提供 以及在API中支持多租户
  • 增强Web Profile的能力 增加对JAX RS 的支持
  • 进一步简化开发 包括新的JMS 更多的依赖注入的使用 以及更多的服务元数据和优化配置方式等

Java ME

  在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 中添加了对依赖注入的有限支持 通过注解可以往容器管理的对象中注入资源的对应对象 Java EE 中把依赖注入的概念更进一步 即引入了JSR (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;

  通常的依赖注入方式是在代码中只依赖接口 由容器在运行时选择合适的实现类的对象来进行注入 如果接口只有一个实现类 则不需要额外的声明 如果接 口有不同的实现 则需要使用限定符(qualifier)来声明具体使用的实现 否则容器无法做出正确的选择 CDI的一个特点是限定符不是普通的字符 串 而是类型安全的注解

  通过Qualifier元注解可以创建新的限定符注解 如下面的代码创建了一个新的限定符注解InMemory

  @Qualifier @Retention(RUNTIME) @Target(TYPE) public @interface InMemory

  该注解可以添加在OrderDao接口的实现上

  @InMemory public class InMemoryOrderDao implements OrderDao

  如果在测试时 希望使用简单的基于内存的存储实现 可以使用InMemory注解来声明 这样容器在注入时会使用InMemoryOrderDao类的对象

  @Named @RequestScoped public class OrderProcessor @Inject @InMemory private OrderDao orderDao;

  使用类型安全的注解类型可以避免使用字符串时会出现的问题 在使用字符串来区分时 可能由于字符串内容的细微错误而造成难以发现的问题

Google Dart语言

  Google的开发人员似乎热衷于开发新的编程语言 而且每一次新的语言都很造成比较大的影响 前不久 Google的开发人员发布了新的编程语言Dart Dart语言的目标是创建结构化的Web应用 在使用方式上类似Node js和GWT 即在服务器端和客户端采用相同的编程语言 在Node js中 都是使用的JavaScript 在GWT中则是以Java为主 而Dart则更像是升级版的GWT 只是用了一种设计更好的语言来替代Java 在服务 器端 Dart运行在虚拟机(DartVM)之上 而在浏览器端 则转换成JavaScript来执行

  在语法上 Dart像是Scala和JavaScript的一个结合体 Dart中有类和接口的概念 同时类型声明是可选的 在Dart中 变量的 类型声明是可选的 这么设计的出发点是让开发人员可以根据开发的不同阶段以及应用的类型来选择合适的类型声明策略 在初期的原型开发阶段或是开发小型应用 时 使用动态类型是一个不错的选择 而对于复杂的模块化的大型应用来说 采用静态类型则是一个更好的做法 Dart并不对类型声明的选择做出限制

  下面的Dart代码示例展示了可选类型和类继承的基本用法

  class Animal var legs; Animal(this legs); //简化的构造方法 tellMyLegs() print(this legs); class Dog extends Animal Dog() : super( ); main() var dog = new Dog(); dog tellMyLegs(); //输出

  值得一提的是Dart的并发编程模型 Dart程序在运行时总是单线程的 这点类似JavaScript 并发性是通过类似Actor的隔离体(isolate)来完成的 每个隔离体是一个并发运行的单元 有自己的内存和执行逻辑 隔离体之间通过消息传递来进行通讯 Dart中的隔离体与HTML 中的Web Worker非常相似

  Dart的目标并不是替代JavaScript或Java 而是面向移动平台 在Dart中 除了核心库之外 还有一个DOM API的库 可以对DOM进行操作

cha138/Article/program/Java/JSP/201311/20590

相关参考

知识大全 Java编程那些事儿13——Eclipse基本使用[2]

Java编程那些事儿13——Eclipse基本使用[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下

知识大全 Java编程那些事儿14——Eclipse基础使用进阶

Java编程那些事儿14——Eclipse基础使用进阶  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧

知识大全 Java编程那些事儿9——网络编程基础[1]

Java编程那些事儿9——网络编程基础[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  对于

知识大全 Java编程那些事儿9——网络编程基础[2]

Java编程那些事儿9——网络编程基础[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  端口

知识大全 关于Javascript与iframe的那些事儿

关于Javascript与iframe的那些事儿  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  

知识大全 JavaOne大会发布《J2EE核心模式》第二版

JavaOne大会发布《J2EE核心模式》第二版  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  

知识大全 那些软件是java编程。

那些软件是java编程。常用的倒是有很多,比如:JDK,NetBases,JBuilder,Eclipse,Eclipse,MyEclipseJDK是java初学时用的,很麻烦的,其实编程工具里面应该

知识大全 java游戏开发需要学习什么那些类

java游戏开发需要学习什么那些类java游戏开发可以通过学习JITCompiler技术、HotSpot技术,当然了,还有许多探讨如何撰写更有效率Java的书籍,这样Java就具备开发游戏的实力。游戏

知识大全 为什么java培训班出来的学生这么难找工作

为什么java培训班出来的学生这么难找工作?你们都是多久找到工作的学Java这事儿跟上大学差不多吧,有些人上完大学也找不到工作,那是因为在大学没有好好学;有些人上的大学不够好,应聘时没有竞争力,也很难

知识大全 2011年文科热门专题都有哪些

2011年文科热门专题都有哪些?快高考了啊!求大神解答!我喜欢计算机不知道计算机现在还热门不?嗯,现在大学的计算机专业是十大就业率最低的专业,网上那些专家教授说什么一些其他的原因导致的。。。但是我觉得