设为首页收藏本站

LUPA开源社区

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

开源促繁荣:Java年度技术回顾及未来展望

2007-12-24 09:30| 发布者: joejoe0332| 查看: 6055| 评论: 1

  一、 J2XE在2007年的发展势态和未来走向

  1.1 J2SE5.0已成主流、J2SE6.0蓄势待发

  经相关媒体在2007年的调查发现,JavaSE5.0的使用率最高,达到40.3%,使用率的增加与JavaSE5.0变得更易用有着密切的关系。

  在调查结果中同时还会看到,Java SE 6.0的使用率也已达到13.0%,大有后来者居上之势。Java SE6.0虽然在2006年刚刚发布,但由于Sun在2007年对JavaSE 6.0的bug进行了修正,并对Java SE6.0做了大量的改进,因此,才使Java SE6.0有了和其它JDK版本竞争优势。下面是Java SE 6.0中包含大量全新的或更新版本的JSR规范:

(1)简化开发方面

 199: 编译器API;
 269: 注释处理器(Annotation Processors);
 260: Javadoc标记的更新;
 221: Java数据库连接(JDBC) 4.0;
 223: Java平台的脚本;

(2)XML方面
 
 105:数字签名;
 173: 一个用于XML的流API
 222: JAXB 2.0

(3)Web 服务方面

 250: 公共注释;
 181: WS Metadata Web Services;
 224: JAX-WS 2.0;
 
(4)其它

 202: Java Class文件规范升级

  1.2 期待Java SE7.0

  Java SE6.0还没握热乎,Java SE7.0又快要发布了。不过大家不要太兴奋了,Java SE7.0(代号为海豚Dolphin)肯定不会在今年发布了,也许在2008年发布是一个不错的选择。

  遗憾的是,为一门语言添加功能远比删除功能要简单得多。几乎不可避免地,随着时间的推移,语言不是朝着简单的方向发展,而是越来越复杂,越来越让人困惑。即使是那些单独看起来很好的功能,在彼此叠加后也会出现问题。

  更令人遗憾的是,Java 社区没有接受这个教训,尽管这种失败并无特殊性。但总有一些太酷又太让人激动的新语法令语言设计者难以抗拒 —— 即便这样的新语法不能解决任何实际问题。于是对 Java 7 的新语言功能就有了巨大的要求,包括闭包、多继承和操作符重载等。

  虽然现在新兴的语言总是伴随着更另人兴奋的功能出现,但对于Java来说,历史的包袱实在是太大了,不能随心所欲地为其增加新功能。但还是有很多新的特性可以不费劲地加入其中。如闭包、操作符重载、集合类的新的语法、关系映射语法等等。但我想关于多继承恐怕十有八九不会被加入,因为Java 中有太多东西是基于单个根的继承层次。没有可行的方式改进多继承,使之适应这门语言。

  目前已经有很多关于改进Java的新建议,尤其是在新特性和语法上,下面我们带领大家想象一下Java SE7会为我们带来哪些奇迹:

  1. 使列表更象数组

在JavaSE以前的版本,引用列表类中的元素要使用get和set方法,如下面的代码所示:

List content = new LinkedList(10);
content.add(0, "data1");
content.add(1, "data2");
String name = content.get(0);

而在Java SE7中则使用如下代码:

List content = new LinkedList(10);
content[0] = "data1";
content[1] = "data2";
String name = content[0];

  还有就是在列表初始化时也会和数组初始化类似,代码如下:

LinkedList<Integer> myInt = {1, 100, -20, 30, 102};

  上面的两项提议应该非常容易实现,就象Java SE5.0新加的foreach循环一样,只是Java编译器玩的一个小魔术而已,JVM更本就不需要改任何东西。只需要在编译时将其转换为JVM支持的字节码就可以了。但这些新语法对于简化程序却是非常关键的。

  2. 有望取代Hibernate,直接支持语言层面的数据持久化

  真正能够影响开发人员生产力的特性功能应该是用于管理表、树和映射表的内置原语,比如在使用 XML 和 SQL 时遇到的那些。JavaScript 下的 E4X 项目和 Microsoft 的 Cω 和 Linq 项目是实现这一想法的先驱,但可悲的是,Java 平台似乎错过了这个机会。如果有人想要通过编译器来玩一个潜在的救场的游戏,这里是一个不容错过的好地方。

  这个世界上总是不断有人创造另人感到神奇的东西。而在程序语言中内置操作表、树和关系映射的原语就是其中之一。如直接在程序中写XML或SQL,然后将其直接映射成当前语言的类,或是直接引用。微软在.net framework3.5中推出的Linq就是这种原语的一个精彩实现,让我们看看下面的Linq语句:

string[] names = { "bill", "yaoming", "guojingjing", "tianliang", "Mike"};
IEnumerable expr = from s in names where s.Length == 3
 orderby s
  select s.ToUpper();
foreach (string item in expr)
Console.WriteLine(item);

  上面的语言其实很简单,就是取数组names的前三个元素,并按大小写排序,最后将其转换成大写后输出到控制台。上面黑体字部分就是Linq语句。Linq除了操作数据名,还可以用类似的方式操作XML以及数据表。而Java SE7现在已经错过了加入这项功能的最佳时机,但在编译器上做做手脚,来救救场,这也许是个不错的注意。

  3. 改进的属性访问机制

  在老版本的Java中访问属性都是用类似getXXX()和setXXX()的形式,但在JavaSE7中可能会更方便,有可能使用property关键字(或其它类似的关键字)来声明类属性,如下面是一种可能的语法:

public property string name
(
get // 只读属性
{
... ...
}
set // 只写属性
{
... ...
}
}

  JavaSE7的改进建议还很多,这里不一一列举。总之,JavaSE7是非常值得我们期待的,让我们一起等着2008年JavaSE7的真正到来吧!

  1.3 J2EE

  没有哪部分 Java 编程像 JEE 这么成功,也没有哪部分 Java 编程像 JEE 那样招致如此多的斥责。它是一门每个人都喜欢去讨厌的技术。它复杂、费解并且是重量级的。没有哪部分 Java 编程有这多么第三方努力将其整个替换或部分替换:Spring、 Hibernate、Restlet、aspects、Struts …… 等等。虽然如此,几乎每一个招聘 Java 程序员的商家都要求其有 JEE 经验,因此 Sun 确实是正确的。

  在企业级领域里,我能看到的全部趋势就是简单。大块头的框架出局;小而简单的加入了进来。随之增长的是,客户拒绝大块头的 JEE 栈部分,这种趋势还在继续。作为替代的是,客户转向了像 Spring 这样更简单的框架或者完全脱离 Java 平台而投向 Ruby On Rails。对于更简单、更易理解的系统的需求也驱动着对面向服务架构(SOA)和具象状态传输(Representational State Transfer, REST)的兴趣。

  最新推出的Java EE5也在不断改变着自己的形象。Java EE5主要聚焦点是易用性和简化开发,它提供了一些新的或者更新的特性,例如EJB3.0、JSF技术和最新的Web Services的API。Java EE5使得编程更加简单和易懂,但是保持了J2EE在Web Services和企业应用程序开发的首选平台地位。

  Java EE 5不再象以前那样只注重大型商业系统的开发,而是更关注小到中型系统的开发,简化这部分系统开发步骤,这是它的一个很大的改变之处。

  使得系统开发步骤得以简化的最大特征是在JavaSE 5.0中加入Annotations,通过Annotations引入,降低Java EE开发时,既要编码,又要写XML配置文件之苦。

  安全是Java EE5的一个重要特点,指的是基于容器的安全访问,无需自己手工编码,具体实现可参考Jdon框架应用演示源码JdonNews。这虽然是基于J2EE1.3编写,但是和Java EE 5区别不是很大。

  事务管理也是Java EE 5的一个重要部分,标准中规定了在WEB层中使用事务和线程的处理关系,标准中规定:Web服务器如Tomcat无需在Web层提供事务支持,因为Web组件根本不支持事务繁衍/传递。

  2007年4月初, Bill Shannon 已经向JCP提交了Java EE 6 草案。

  这也是JCP第一次揭示Java EE的概念,由于先前有JSRs,JSR 313 将不再定义新的 API,但是将调整许多sub-JSRs 的工作来为Java EE 6平台提供一致性。

  JCP的站点提供了一些关于Java EE 6的发展趋势:

  扩展性

  在Java EE中有些技术以插件的形式增加到Java EE应用服务器上更为合适。通过增加可扩展性的点和更多服务接口,其他技术能够以插件的形式添加到平台实现中显得更加有效和整洁。

  Profiles

  Java EE平台应该引入Java EE platform Profiles,由JCP定义,包括Java EE platform的一些技术,增加一些JCP技术,而这些技术不是基于Java EE platform技术的一部分。

  裁减

  将某些技术以更合理的方式来从现在平台中裁减出去。减少对使用这些技术的开发者的影响。

  SOA

  对web services提供进一步的支持。另外,专家组正在考虑是否在Java EE平台版本中包括SCA定义的工具是否合适。

  从上面可以看出,Java EE6将进一步根据开发人员的实际情况考虑,通过提高扩展性和裁剪某些技术,使得开发人员能够按需定制功能。

  Java EE 6 预期是在2008年的第三季度完善和发布,2008年将是Java EE的一个丰收年。

  我们能够预料出,朝着简单发展的趋势在 2008 年将会延续。许多对 Rails 留下印象的人正试图在其他语言上复制它的成功,比如 Python (Turbo Gears)、Groovy (Grails) 以及 Java (Sails)。这其中的某个有可能成功,但它们如果不提出一些强有力的新举措的话,就不会取得成功。因此,企业仍将加载他们已有的框架:SOA、REST 和 Rails。

  1.4 J2ME

  将视线从最大平台移到最小平台上来,我们能期待嵌入式世界带给我们什么?多年以来,Java 平台已经在小设备上取得了相当大的成功,而 2007 很已经成为了这一成功为基础。首先,关注一下移动信息设备描述(Mobile Information Device Profile,MIDP) 的第 3 版,来利用当今更为强大的设备的功能。特别是,我们应该很快就能在一个虚拟机上运行多个 MIDlet,包括在后台运行一个或多个。同样也关注一下加密记录管理系统(RMS)存储和 IPv6 支持。

  Java ME 的可扩缩的 2D 矢量图形(Scalable 2D Vector Graphics, SVG)API 2.0 当前正在开发中,它应扩展在许多设备中的动画功能。除 SVG 动画之外,它也将支持流式音频和视频。如果移动网络开放,这是相当重要的 —— 想想在手机上的 YouTube。(当然,如果网络开放,那就只是没人愿意看的两英寸的公司广告。在这点上,我对美国的情况持悲观态度,而在欧洲也许会更有趣。)

  移动开发者也能期望本年推出第一款支持 Java ME 的 XML API 的手机。此 API 是 SAX、DOM、 StAX 和 JAXP 的一个精选子集,设计它是为了适应内存受限的手机。

  尽管好事连连,Apple 的 iPhone 仍对 Java 平台(作为移动电话开发平台)构成了一个主要的威胁。iPhone 已经是这个星球上最火爆、最有魅力的手机,它已经发布了一年多。问题在于它将成为一个相对封闭的平台,甚至按手机网络标准也是如此,并且它没打算运行 Java 代码。无需多说,对于任何试图向手机、PDA 和个人通讯设备推销第三方应用程序的人来说,这都是一个恐怖的消息。

酷毙

雷人

鲜花

鸡蛋

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

最新评论

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

返回顶部