首页 | 资讯动态 | linux基础 | 系统管理 | 网络管理 | 编程开发 | linux数据库 | 服务器技术 | linux相关 | linux认证 | 嵌入式 | 下载中心 | 专题 | linux招聘 | HR | 镜像
OKLinux中文技术站
·设为首页
·加入收藏
·联系我们
系统管理: 中文环境 系统管理 桌面应用 内核技术 | Linux基础: 基础入门 安装配置 常用命令 经验技巧 软件应用 | Linux数据库: Mysql Postgre Oracle DB2 Sybase other
网络管理: 网络安全 网络应用 Linux服务器 环境配置 黑客安全 | 编程开发: PHP CC++ Python Perl Shell 嵌入式开发 java jsp | PHP技术: PHP基础 PHP技巧 PHP应用 PHP文摘
搜索中心 Linux招聘 Linux专题 Apache | Linux相关: 硬件相关 Linux解决方案 Linux认证 企业应用 其它Unix | 相关下载: 资料下载 参考手册 开发工具 服务器类 软路由 其它
 技术搜索:
会员中心 注册会员 高级搜索  
  → 当前位置:首页>资讯动态>开源资讯>正文

展望Java SE 7值得期待之处

http://www.oklinux.cn  2008-12-18  东方蜘蛛    会员收藏  游客收藏  【 】 
您查看的文章来源于http://www.oklinux.cn
  从2007年初开始,阿莱克斯·米勒(Alex Miller)一直在坚持关注Java SE 7中将包含的Java规范要求(JSR)的相关信息。在本篇年度回顾文章中,他与我们分享了他的收获:对这个即将到来的平台规范给出了最合理的描述,并向大家介绍了最近来自Sun公司的一些相关信息。通过这篇文章,我们可以了解Java SE 7中将最可能看到哪些改进,以及哪些JSR可能不会被包含在Java SE 7中。


  
阿莱克斯·米勒

  米勒是Terracotta公司的技术带头人,该公司的代表产品有开源Java群集应用Terracotta。在加盟Terracotta之前,米勒曾就职于BEA系统公司,主要研究AquaLoigic系列产品,并曾在MetaMatrix担任过首席架构师。

  当Java SE 6在2006年12月发布之后,开发者就已经立即开始关注哪些JSR有可能被包含在Java SE 7中。在2007年1月份,我开始就这个问题与业界同仁展开讨论,现在已经过去近两年的时间,当时的观点中有些被证明是正确的,也有一些已经被人们所逐渐淡忘。

  从成熟度、重要性和社区认可度等方面分析,现在我们或许可以更清楚的看到,哪些JSR和语言改进将有可能被包含在Java SE 7中。但是,在Sun公司Java SE首席架构师丹尼·考沃德(Danny Coward)正式提交Java SE 7平台JSR以前,一切变化都有可能发生。所有的Java类库和语言变化都将被作为平台JSR的一部分而被通过,新JSR与现有JSR共同组成新平台的完整功能集合。Java SE 7目前预计推出时间是2010年初。明年第一季度我们有望看到其平台JSR。

  本篇文章的其余部分,将重点介绍最有可能包含在Java SE 7中的功能,同时以代码示例来证明其相对于我们今天编程方式所带来的改变。我今天所介绍的所有JSR都具有详细说明和工作原型,因此它们已经相当成熟。

  更强大的依赖关系管理

  现在的Java程序员,或者说所有语言的程序员,都面临着日益增多的开源和商业类库,往往要花费很长时间来管理其依赖关系。今天的一个普通企业应用程序往往要依赖数十个外部JAR文件,其本身往往就能包含数十个不同团队开发的更小内部工程。我们一直在坚持寻找更好的方式来管理日益复杂的依赖关系,以使我们的开发更具重用性,部署更加完整。现在出现了越来越多的类似Maven的依赖关系管理系统,以及诸如OSGi之类的运行时部署系统,这一点正是反应了这种需求的增长趋势。

  在Java SE 7发展初期,两个重要的JSR曾经试图解决依赖关系管理问题,分别是JSR 294:Java编程语言中的改进模块性支持(Improved Modularity Support in the Java Programming Language)和JSR 277:Java模块系统(Java Module System),两者分别关注Java模块概念的开发和部署方面。一个模块(module)就是多个实现相同目标且相互存在联系的类的集合,与JAR类似,但是,根据开发和部署的需要,一个模块的范围可以是一个JAR的一部分,也可以是几个JAR的集合。在2008年中期,JSR 294被简化并合并到JSR 277中,以便同一个专家组能够先后研究这两个方面。

  在2008年12月份,Sun再次重新审视这一计划,宣布在OpenJDK社区中创建Jigsaw项目,以在明年实现JDK 7模块化。JSR 277和Java模块系统的研究将被放到Java SE 7推出之后进行,而JSR 294将被重新恢复研究。Sun已经声明了此举的意图是,与OSGi联盟更紧密的配合,以便JSR 294模块可以被OSGi所使用。

  Jigsaw项目和‘module’关键字

  在Java SE 7中有一个问题将得到解答,即Sun将如何来使用module关键字,它是最初的JSR 294中的一个重要概念,预计将包含在下一平台版本中。

  假定有一个名为Flapjack的项目由几个Java包(package)组成,该项目包含在基包(base package)中的一个public APIs,和实现这个API的几个内部包:

  ·org.flapjack - public API classes

  ·org.flapjack.impl - 实现类

  ·org.flapjack.util - 实用类

  在Java SE 6中,如果你需要在基包中放置一个工厂类(factory class),以实例化内部执行包中的API类,你需要将这个实现类设为public,这样它们才可以从API包中被看到。由于跨越了不同的包,没有办法既允许API以factory方法对类实例化,又不允许外部类直接执行它。

  JSR 294模块将允许你声明整个包集合为一个模块,你只需要在源程序中加入以下一个新的声明:
module org.flapjack;

  你可以将这个声明加在你的项目中每一个源程序文件中,也可以将其增加到package-info.java文件中,然后一次将其应用到整个包。虽然 module是一个新关键字,它是一个“限制性”关键字,只有在特定位置时才被作为关键字来处理;因此,它可以在任何其它地方作为普通Java标识符来使用。这使得它扩展了语言的功能,同时又保持了其向后兼容性。

  除了新的声明外,你还可以把module关键字当作一个新的可见性修饰符使用,你可以用它来定义一个类,使其仅对同一个模块中的其它类可见,Listing 1演示了module关键字的这种用法。

  Listing 1
module org.flapjack;

  package org.flapjack.impl;

  import org.flapjack.Flapjack;

  module class FlapjackImpl implements Flapjack {

  }

  最后,你可以定义一个新的module-info.java伪类,使用元数据来注释该模块,增加诸如版本、主类、导入的依赖模块、导出资源和许多其它预定义或特定的模块注释等。值得注意的是,与现有的package-info.java文件一样,这个新的module-info.java文件使用了一个无效Java源文件名称,可以避免与已经存在的文件可能发生冲突。

  在编译时,JSR 294让你可以使用javac来编译你的类。至于在JVM中,Jigsaw项目将如何规定模块的组成、加载和验证,尚需拭目以待。

共6页: 上一页 1 [2] [3] [4] [5] [6] 下一页

上一篇:Linux系统病毒介绍 做好操作系统防护工程   下一篇:Sun发布MySQL 5.1版10天下载量破25万

收藏于收藏夹】 【评论】 【推荐】 【打印】 【关闭
相关文档
·Sun发布MySQL 5.1版10天下载量破25万
·移动版火狐将被移植到Symbian平台
·Ubuntu 9.04系统确定发布时间
·Google为Android平台发布“我的地图编辑器”
·面对Google Chrome FireFox压力重重
·Android平台即将支持Office格式
·Java死气沉沉,Python生机不断?
·Linux基金会宣布新任CTO
·金融危机是开源厂商绝好机会
·微软与开源的探戈舞步
·微软将在Office14中添加ODF支持
·联想“oPhone”Android手机具体参数曝光
·2008年Java大事记
·中标普华藏文版Office助西藏信息化发展
·康盛创想新品发布官方论坛日发贴过50万
·IBM与哈佛研究人员 利用全球网格共同开发高效太阳能电
发表评论
密码: 匿名评论
评论内容:

(不超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规)
 
  最新文档
·Chrome赢得Tom’s Hardware Award
·Google将在2011年发行Chrome OS商业版
·Chrome插件数紧逼Firefox
·Chrome OS死对头宣布将转投Chrome阵营
·今年的Ubuntu开发者峰会将在布鲁塞尔举
·Chrome开发版Bug杀死自家离线GMail
·Chrome OS是非常坚固的系统
·ReMail iPhone应用宣布开源
·谈Android等开放平台的应用软件生态
·Chrome OS体验无与伦比
·谷歌Wave服务新增收件箱更新邮件提醒功
·Ubuntu 10.10开发日程确定
  阅读排行
·CxImage图像处理类库
·支持谷歌Android系统音悦汇T11试用评测
·开源ERP市场的“一匹黑马”
·Linux十大免费视频编辑软件大放送
·小而强大 开源播放器SMPlayer试用
·国内资深FreeBSD committer Delphij
·推荐:10款Linux平台播放器畅听音乐
·Ubuntu 9.04赏析
·Ubuntu Linux下的经典游戏大全
·Ubuntu 8.04免费为人类每天节省22万多
·龙芯上网本逸珑8089详尽评测
·深度PK: Opera9.5 vs Firefox3
·PHPWind vs Discuz谁是建站BBS首选?
·Hypertable领导者:Hadoop和分布式数据
·首款Android T-mobile G1多面评测
网摘收藏: