spark7的博客
===========================================================
2006年java大事记
===========================================================

Java 的开源甜点

从拒绝开源到承诺开源,Java经历了一段看似复杂实则简单的战争。Sun把Java开源,之后引发的“蝴蝶效应”有哪些?Sun开源了自己的软件,那它的硬件呢?一向力劝Sun开源Java的IBM是否会兴奋异常?本就与Sun敌对的微软,又会做何反应?

Ajax 如日中天

虽然曾经围绕Ajax的言论褒贬不一,但是不能否认Ajax 已经不仅仅是一种时尚,同时也成为了一种构建网站的强大方法。虽然Ajax和Java没有直接关系,但是毫无疑问Ajax也是Java界关心的东西。

Ruby能否成为第二个Java?

自从Ruby出现以来,在业界便掀起了一场关于Java与动态语言之间的不休争论。Ruby一出大凡就有一石激起千层浪的景象,伴随着Ruby的出现,业界也开始变得热闹起来.这些都使Ruby和Java的争论更加激烈,但是关于二者谁更具有优势,谁能战胜谁的问题还是没有最终的定论.

Borland IDE 自立门户

原本打算要放弃旗下IDE业务的Borland,在历经半年寻找买主未果后,于上周二宣布将独立其IDE部门成为Borland 的子公司,并命名为CodeGear。新IDE公司CodeGear 的建立,也许代表着抛弃了守旧思想的Borland,将犹如涅磐的凤凰重获新生?

EJB 的没落

Java EE在过去的一年里发生了如此大的变化:Ejb,那个曾经作为Java EE核心部件的概念中,如今已经没落了,落得人人喊打的地步,有人竟用“拯救”一词来形容JEE,真的让我感慨万千,2005年还风光无限,而如今却落得这步田地,人们不仅要问“难道Java EE不能像Ajax一样吗”。

SOA 的持续红火

早在2002年Gartner就预测,到2008年,SOA将成为占有绝对优势的软件工程实践方法,它将结束传统的整体软件体系架构长达40年的统治地位,届时,将有70%的企业在进行企业IT建设时会转向SOA。

Java API 中文版的完整发布

2005年10月31日在Sun 中国技术社区正式发布第一批中文版Java API文档(包括java.lang和java.util类库API 文档的中文版)。经过将近10个月的努力,目前Sun 中国技术社区已经将Java SE 5.0的全部API文档中文化。

Spring 2.0 发布

Spring2.0的发布也算千呼万唤使出来了,功能继续增强,产品线继续完善,大有一统J2EE江湖,吞噬EJB3.0之势。当然不出意外的是,配置文件继续复杂化,产品整体越来越庞大和臃肿,也开始让越来越多人垢病。

开发工具龙虎斗

随着开源的兴起,Jbuilder光辉不在,原来三国鼎立的局面因为Jbuilder的退出,使Eclipse对决 Netbeans大战提前上演,都说这是一场势均力敌的战争,倒不如说是两大软件巨头的撕杀。相对与Sun的内敛相比,Eclipse基金会的执行理事Mike Milinkovich要自信得多,在谈到老竞争对手时,他说这本来就是一场没有悬念的战争。

Red Hat收购JBoss

去年四月份,红帽公司宣布将用4.2亿美元的现金和股票收购开源应用服务器厂商Jboss。未来,红帽公司将把Jboss公司的产品集成到一个“面向服务架构(SOS)”的软件包中。此次并购引发了一部分Jboss客户的担心,他们主要使用基于微软视窗软件的Jboss产品,这些人担心红帽公司可能会削减在视窗客户上的技术支持。


spark7 发表于:2007.05.31 15:43 ::分类: ( 一般分类 ) ::阅读:(337次) :: 评论 (0)
===========================================================
JavaOne2007:Java RIA应用的复兴
===========================================================

休完假从家里回来了。休假的这些日子正是JavaOne2007召开的日子。回来网上一搜发现漫天遍野都是JavaOne的新闻。光读这些文章就花了周末两天点此在新窗口浏览图片相信这些Java新闻大家都已经知道。但还是扯过来聊聊。

每年的JavaOne,包括Sun在内的大公司都要宣布一些基于Java的新的技术和产品,人们根据这些新闻来判断Java技术今后的走向。今年的JavaOne也一样,许多人在JavaOne召开之前就在预言动向,人们最关心的一是Java的开源模式;二是Sun怎么应对Microsoft的Silverlight和Adobe Flex;三就是Java7中新的功能包括哪些。

这些问题都在今年JavaOne上得到了回答:

1.OpenJDK发布。这不会出乎人们的意料,人们想知道的是采用何种监管模式。目前已经成立了interim governance board(临时监管委员会?)。这个委员会包括五个成员,其中两个来自Sun,三个来自其他组织和个人。其中Dalibor据说还是一个学生。这个临时委员会负责制定OpenJDK开源组织的宪章,包括正式监管委员的选出办法等等。

对于我来说,终于可以完完全全的看到JDK的源代码了。openjdk.dev.java.net上面有详细的说明,你需要安装netbeans来导入其工程。

2.“Applet死了、Java Web Start完了,Sun如果还不拿出切实有效的RIA解决方案,客户端将是Microsoft或者Adobe的天下”,这是在JavaOne之前人们最经常说的。的确目前RIA的形式的确不容Java乐观,人们一直在期盼者Sun能在这次JavaOne给Java开发者一个信心。

终于这次在JavaOne上,Sun宣布了JavaFX开源项目的正式启动。JavaFX的前身就是以前的F3研究项目,它主要面向富客户端市场。JavaFX s cript是一种高开发效率的脚本语言,能让开发人员创建能在Java环境中部署和运行的多媒体内容。

Sun的CTO Bob Brewin将JavaFX描述成同Microsoft Silverlight(WPF/E)和Adobe Flex竞争的RIA技术,并承诺向JavaFX开发者提供Flash般的开发便捷性

为了辅助JavaFX技术,JavaOne上Sun还向外界透漏了Java Kernel和Consumer JRE的计划。Java Kernel目的是客户端提供最小的Java运行时环境,降低Java应用程序包括JavaFX的部署难度。Consumer JRE的目标是旨在改善客户端Java安装的用户体验,包括减小JRE下载大小、更容易安装以及更好Java虚拟机的启动速度。据Bob透漏,这种JRE将在下一版JRE 1.6 update release 2中发布,其大小只有2-4M。

目前Adobe的flash插件大小在1.5M左右,Microsoft的SilverLight的运行时环境在5M左右。因此Consumer JRE如果真能达到2-4M大小,将大大提升JavaFX的竞争力。

3.Java7的新特征。关于Java7的新特征在网上可以查到,其中包括很多人期盼已久的property、closure、superpackage、java modular system、XML language support等等。这儿不再详述。

4.另外在JavaOne召开的前一天的CommunityOne大会上,NetBeans 6 milestone 9(也称preview版)发布了。这里面包含了Swing Application Framework和beans binding的开发支持,还有许多新功能,这在前面的文章已经提到,这儿也不再详述。这一版在JavaOne大会引起很大的反响,许多非NetBeans用户被NetBeans 6所吸引。引用ZDNet编辑Ed Burnette(此人是Eclipse铁杆支持者)的话就是:

"Sun wows Java crowd with NetBeans 6.0 preview"

和Roumen Strobl的观点一样,我认为这次JavaOne的最重要的事情就是Consumer JRE。如果Java要在客户端繁荣,Consumer JRE是必须的前提条件。当然JavaFX也是很令人期盼的事情。

相信JavaOne2007是Java RIA应用的复兴的开始。


spark7 发表于:2007.05.31 14:40 ::分类: ( 一般分类 ) ::阅读:(1067次) :: 评论 (0)
===========================================================
直击JavaOne2007大会
===========================================================

直击JavaOne2007大会

今年我又可以去JavaOne现场了,原因是我和同事(Jim Jiang)提交的一个SessionJavaOne委员会选上了。这是我第三次去JavaOne现场,前两次的收获很多,不知道这一次会怎么样呢?前几次的JavaOne都有自己的亮点和重点。例如我记得2004年的重点是WebServices2005年的亮点是AjaxJDK5,而2006年大家都在谈论JavaEE5JDK6的新特新了。今年Java技术有新的特点吗,是那种让人眼前完全一亮的特点和创新,才是每个参加JavaOne会议的开发人员共同的期待。

说句实话,我想象不出来今年会有什么崭新的Java技术。JavaEE5去年就被炒得没有了新意,Ajax的应用也已经遍地开花了,WebServcies已经很少人再提它了。Ruby On Rails也是“地球人都知道了!”,就连JDK6的新特性,去年的JavaOne就已经显身了,各种框架结构和开源社区都已经嘈嘈了很长时间。今年还有新的Java技术吗?

一 提前来到旧金山

由于要倒时差和准备自己的Session,我们一行(3人)提前来到了旧金山。每年的JavaOne都在旧金山的Moscone Center会议中心举行。每年的这个时候,旧金山的天气是一年当中比较好的时候(事实上旧金山一年四季都不错),由于临海,空气新鲜,风景优美。

我们到海边去转了转,吹了吹海风,晒晒太阳,感觉真不错。难怪这里是美国地皮最贵的地方,在这里生活还真不错。在这里的IT技术人员享受着高工资的同时还能享受着大自然,呼吸着新鲜空气,而我们在北京...我就不比较了。

其实在天堂也有穷人,路边到处都是豪华的跑车,跑车的旁边却有乞讨的人群。“朱门酒肉臭,路有冻死骨”的景象笔笔皆是。

对不起对不起,跑题了,我们自己都快忘了是来参加JavaOne的了。虽然JavaOne大会现在没有开始,但我们到现场去感受了一下气氛。一到Moscone CenterJavaOne的宣传铺天盖地,这才让我们重新又想起了我们所熟悉的Java。在JavaOne的柱子旁留个影,估计过两天这里全都是人群了。

除了“JavaOne”的字样,我们还看到了巨大的“Open Possibilities”的宣传。“Open Possibilities”?“开放机会,无限可能”,难道这是今年JavaOne的主题吗?这个标语是什么意思呢?有什么重大的事件要发生吗?一切都是未知数。


CommunityOne大会

javaOne会议的前一天,Sun组织了的CommunityOne的会议,它是JavaOne的前奏,吸引了3000多名开发人员。CommunityOne的主要话题是有关免费和开源软件项目。O'ReillyCEOTim做了第一个报告,分析了当前开源项目和社区的现状和趋势,以及展望了以后开源社区的美好未来。在这个会议中Community被提升为最为重要的因素,是现在商家争夺的最为重要的宝贵资源。随后,Rich Green进一步阐明了Sun公司的开源策略。

说句实话,对于一个Java技术爱好者(我相信现场还有其他很多人都跟我一样),对各个公司的一些商业策略并不感兴趣。但是我关心今后的技术和产品的重点会往哪个方向走。以后开我们公司的产品都会开源吗?我们需要大力支持其他开源的软件吗?我们以后是不是尽量使用开源的数据库而放弃OralceSysbase,我们以后是不是使用Apache而放弃自己的Web Server吗?这对我和我的客户很重要。显然,Sun把开源被当作了资源争夺的重要武器。Solaris开源,JDK开源,工具开源,听说以后Portal ServerAccess ManagerLDAP等等都要开源。据欧盟体统计,Sun对开源作出的贡献比IBM要多三倍。


由于CommunityOne的会议是由Sun资助和主办的,接下来的技术讲座都是有关Open JDKOpenSolarisNetBeansGlassfish。在听这些讲座的时候,我一直有一个问题(我相信其他很多人都有):Sun大张旗鼓的开源,对自己究竟有多少好处,会不会对创新带来打击呢。在过去的10年内,硅谷的传奇都来自于创新。“一个好主意就是一大笔财富”成就了多少IT公司。现在Sun将这么多好主意免费让大家知道,会不会得不偿失呢?其实我在Sun公司内部就听到一些对Open Solaris的微辞,说有些Solaris的优秀特性(例如DTrace)无偿捐献给开源社区,有可能会导致Sun的竞争力下降。

Jonathan SchwartzNetBeansSession上回答了这个问题:“我们不断的将自己的好主意拿出去,是为了经过更多的聪明的大脑的加工,产生更多的好主意,这样整个产业才能不断快速的发展。”Sun正在努力的参与创建一个开放的生态环境,这个环境的良好发展有益于所有IT公司的发展,包括Sun自己。

JavaOne大会

3.1 主题演讲

我参加主题演讲的主要目标就是三个:1是看看有什么重要的大事要申明。2是看看有什么新产品要面世。3是练练自己的英语。

对第一个目的,可以说没有达到,Sun只是宣布对Java虚拟机的完全开源过程的结束,将这个JDK叫做OpenJDK。对于第二个目的,Sun发布了JavaFx。关于JavaFx,下面再讨论。第三个目的是完全达到了,每个演讲嘉宾的演讲都非常精彩,会场的音响效果也非常不错。其中一位联合国官员的发言深深打动了每一个在座的观众。在这位联合国官员的眼中,无论是Java还是OpenSource,都是为了增加人和人之间的交流,增加对青年的教育机会,增加工作机会,减少饥饿、平穷和歧视,都是为了为了这个世界更加美好。Jonathan Schwartz也很感动,估计他也是第一次被提拔到这个高度,不仅为技术领域提供更好的架构,最重要的是为人类的沟通提供了无限的可能。这位联合国官员的发言,让那些口口声声“BusinessMoney”的演讲者无地自容。

3.2 有关Java Fx

JavaFx是这次JavaOne发布的为数不多的几个新技术。什么是JavaFx呢?JavaFx是另外一种脚本语言,用于快速开发界面花哨的桌面应用。JavaFx融合了SwingJava2DJava3D的各种技术,并且以后会向Mobile设备提供实现。JavaFx的主要特点就是用非常简单的脚本就能使用已经有的组件创建非常眩的界面来。例如下面的例子。但是也有人提出异议,开发个性化界面的组件仍然是个复杂的过程。要更多的JavaFx信息,请访问https://openjfx.dev.java.net/。那里有所有的演示和资源。


3.3 有关Real Time Java

JavaOne重要的任务就是参加技术Session,可以学到很多东西。今年比较特殊,我自己有一个Session,需要准备;另外我的时差没有完全到过来,没有太多的精力来听太多的Session;我还要花时间到展台为我的儿子拿些礼品;技术Session以后有在线的视频回放。基于以上原因,我决定将重点放到一两条主线上,而不是大面积撒网。

Real Time Java---我已经关注它很久了,非常高兴看到今年的JavaOne,它又成为热点。从主题演讲中的Nasdaq的应用,到SunRealTime Java的实现与原理,到IBMJava以及JRocketJava虚拟机,我参加了所有和Real Time Java有关的技术讲座。为什么我会关心RealTime Java呢?因为Java有个致命的弱点,导致Java平台被银行,电信等行业的核心业务弃之门外。这个弱点就是Java在做内存回收时候,停顿时间的不可预测性。

从这些Session中,我学到了RealTime Java的基本知识,构建RealTime Java应用有几种不同的方式,有简单的方法,有复杂的方法,简单的方法实时性差,复杂的方法实时性好。例如,你可以一行代码都不改,通过配置,让系统使用实时的内存回收算法,就可以将你原来的应用变成RealTime;如果实时要求更严,那么使用javax.realtime. RealtimeThread 来运行你的应用,其他代码都不需要改变。对于更加更加严格的实时,你可能需要操纵内存了,有的对象可能放到永远也不回收的地方等等。这样的编程的难度就大多了。有一点必须从分意识到是:Real Time Java 不能等于 Very Fast JavaReal Time只能保证预测性,性能(吞吐量)比起一般的Java肯定要差一些。

JavaOne大会上导出都有 Real TimeJava的影子,Lab,讲座,游戏区, Real TimeJava已经到了成熟期了。我希望在中国有客户能够适用 Real TimeJava

3.4 我的HandsonLab

我(和Jim)负责的(动手实验)HandsonLab今年被JavaOne委员会采用,对我来说是莫大的荣誉。如果有人问我怎样才能使自己的SessionJavaOne录用,我的经验是:题目一定要吸引人,如此而已。我的动手实验主要是介绍Glassfish的。但是我没有介绍老掉牙的EJB3WebServices,等等标准,而是介绍了一些非标准的特性,如:服务器推送技术等等。如果你感兴趣,请访问下面地址,有所有的实验的材料。

http://sessions.sun.com/learning/javaoneonline/sessions/hol2007/3360/3360glassfish/index.html

做这个练习以前,我特意用中文向现场到达的中国人问好。只有自己人看得起自己人,别人才能看得起你,你说是吧?

由于是第一次引导这么多人来做这样一个Lab,经验上有欠缺,时间的控制上掌握不好。但是我们计划在China JavaOne上重新做这个Lab,希望带来更大的效果。这个Lab有个特点,根据文档的一步步做完比较容易,但有些概念理解起来需要一定的难度,例如HTTP异步处理,数据推送,虽然都是比较流行的技术,但是参加者的水平参差不齐,有些人理解起来有些困难。让我比较欣慰的是,那几个中国来的开发人员的水平比较高,基本能完成我们的实验,还是中国人聪明。

3.5 OpenESBSecurityBD-J和其他

显然Sun在大力推OpenSource,其中OpenESB的展台很大很热闹。我特意询问了一个困扰已久的问题,现在的OpenESBJBI)和CAPS的关系。回答是OpenESB(和JBI)标准是今后的道路,那CAPS呢?以后还支持吗,现在学的难道白学了吗?回答是ESBJBI是后端的协议,前端的工具、部署和开发都不会变太大,也许用户根本察觉不到由SeeBeyondOpenESB的变化。

虽然大部分的开发者关注纷繁复杂的上层应用和架构,有一小部分人仍然关注Security,他们指出当前流行的技术(如AjaxJavaScript)中有哪些安全漏洞,说得句句在理,让很多人直冒冷汗。

SonyBD-J非常酷,让电影和观众互相交互是个很好的主意,他们的演示也非常酷。

Comet(数据推送技术)也非常热门,有多场演讲都涉及到这方面的应用。

四 总结


这次JavaOne大会并没有带来太多的创新技术和令人炫目的新产品,但是它打开了创新的大门,让Java在开源的社区和广大的开发人员的贡献中不断强大吧,毕竟它是我现在吃饭的工具呀。只要财务上允许,明年我们还准备提交自己的Session,争取在去一次JavaOne

-->
spark7 发表于:2007.05.31 14:32 ::分类: ( 一般分类 ) ::阅读:(263次) :: 评论 (0)
===========================================================
Java软件架构设计概论
===========================================================
blueski推荐 [2006-5-27]
出处:http://blog.csdn.net/softj/
作者:softj


开始之初的架构设计决定着软件产品的生死存亡。“好的开始相当于成功一半”。

  开始的架构设计也是最难的,需要调研同类产品的情况以及技术特征,了解当前世界上对这种产品所能提供的理论支持和技术平台支持。再结合自己项目的特点(需要透彻的系统分析),才能逐步形成自己项目的架构蓝图。

  比如要开发网站引擎系统,就从Yahoo的个人主页生成工具 到虚拟主机商提供的网站自动生成系统,以及IBM Webphere Portal的特点和局限 从而从架构设计角度定立自己产品的位置。

  好的设计肯定需要经过反复修改,从简单到复杂的循环测试是保证设计正确的一个好办法

  由于在开始选择了正确的方向,后来项目的实现过程也验证了这种选择,但在一些架构设计的细部方面,还需要对方案进行修改,属于那种螺旋上升的方式,显然这是通过测试第一的思想和XP工程方法来实现的。

  如果我们开始的架构设计在技术平台定位具有一定的世界先进水平,那么,项目开发实际有一半相当于做实验,是研发,存在相当的技术风险。

  因此,一开始我们不可能将每个需求都实现,而是采取一种简单完成架构流程的办法,使用最简单的需求将整个架构都简单的完成一遍(加入人工干预),以检验各个技术环节是否能髋浜瞎ぷ?非常优秀先进的两种技术有时无法在一起工作),同时也可以探知技术的深浅,掌握项目中的技术难易点。这个过程完成后,我们就对设计方案做出上面的重大修改,丰富完善了设计方案。

  设计模式是支撑架构的重要组件

  架构设计也类似一种工作流,它是动态的,这点不象建筑设计那样,一开始就能完全确定,架构设计伴随着整个项目的进行过程之中,有两种具体操作保证架构设计的正确完成,那就是设计模式(静态)和工程项目方法(RUP或XP 动态的)。

  设计模式是支撑架构的一种重要组件,这与建筑有很相象的地方,一个建筑物建立设计需要建筑架构设计,在具体施工中,有很多建筑方面的规则和模式。

  我们从J2EE蓝图模式分类http://java.sun.com/blueprints/patterns/catalog.html中就可以很清楚的看到J2EE这样一个框架软件的架构与设计模式的关系。

  架构设计是骨架,设计模式就是肉

  这样,一个比较丰富的设计方案可以交由程序员进一步完成了,载辅助以适当的工程方法,这样就可保证项目的架构设计能正确快速的完成。

  时刻牢记架构设计的目标

  由于架构设计是在动态中完成的,因此在把握架构设计的目标上就很重要,因此在整个项目过程中,甚至每一步我们都必须牢记我们架构设计的总体目标,可以概括下面几点:

  1. 最大化的重用:这个重用包括组件重用 和设计模式使用等多个方面。

  比如,我们项目中有用户注册和用户权限系统验证,这其实是个通用课题,每个项目只是有其内容和一些细微的差别,如果我们之前有这方面成功研发经验,可以直接重用,如果没有,那么我们就要进行这个子项目的研发,在研发过程中,不能仅仅看到这个项目的需求,也要以架构的概念去完成这个可以称为组件的子项目。

  2. 尽可能的简单明了:我们解决问题的总方向是将复杂问题简单化,其实这也是中间件或多层体系技术的根本目标。但是在具体实施设计过程中,我们可能会将简单问题复杂化,特别是设计模式的运用上很容易范这个错误,因此如何尽可能的做到设计的简单明了是不容易的。

  我认为落实到每个类的具体实现上要真正能体现系统事物的本质特征,因为事物的本质特征只有一个,你的代码越接近它,表示你的设计就是简单明了,越简单明了,你的系统就越可靠。更多情况是,一个类并不能反应事物本质,需要多个类的组合协调,那么能够正确使用合适的设计模式就称为重中之重。

  我们看一个具备好的架构设计的系统代码时,基本看到的都是设计模式,宠物店(pet store)就是这样的例子。或者可以这样说,一个好的架构设计基本是由简单明了的多个设计模式完成的。

  3. 最灵活的拓展性:架构设计要具备灵活性 拓展性,这样,用户可以在你的架构上进行二次开发或更加具体的开发。

  要具备灵活的拓展性,就要站在理论的高度去进行架构设计,比如现在工作流概念逐步流行,因为我们具体很多实践项目中都有工作流的影子,工作流中有一个树形结构权限设定的概念就对很多领域比较通用。

  树形结构是组织信息的基本形式,我们现在看到的网站或者ERP前台都是以树形菜单来组织功能的,那么我们在进行架构设计时,就可以将树形结构和功能分开设计,他们之间联系可以通过树形结构的节点link在一起,就象我们可以在圣诞树的树枝上挂各种小礼品一样,这些小礼品就是我们要实现的各种功能。

  有了这个概念,通常比较难实现的用户级别权限控制也有了思路,将具体用户或组也是和树形结构的节点link在一起,这样就间接实现了用户对相应功能的权限控制,有了这样的基本设计方案的架构无疑具备很灵活的拓展性。


spark7 发表于:2007.05.31 14:30 ::分类: ( 一般分类 ) ::阅读:(350次) :: 评论 (0)
切换风格
新闻聚合
博客日历
文章归档...
最新发表...
博客统计...
网站链接...