建模和开发工具平台
UML在版本升级到2.0以后,原来的UML工具的大哥大Rational从风行到被收购,现在几乎没有了声音。
建模工具没有太显著的变化,倒是开发工具出现了从原来的百花齐放到现在只有少数巨头竞争的局面。其中最耀眼的当属诞生于IBM,后在开源社区得到快速发 展的Eclipse,目前它已进入嵌入式开发领域。另一个就是微软携其强大财力与人力打造的VSTS开发工具平台,它将成为可以贯穿整个软件开发生命周期 和扮演不同的角色的平台,在最近也有不俗表现。此外还有Sun的NetBean IDE开发工具和BEA的WorkShop开发工具等。
这些开发工具平台都可以进入整个软件开发生命周期,并且可以在其上进行各种不同应用的开发,说白了就是兼容性足够强。
开发与应用
不论使用何种工具,真正最活跃的仍然是应用与开发。JavaEE5的发布,EJB3.0标准的落地,标注取代部署描述符,实体即是POJO等,也许这些 改变对Java进行轻量级应用开发的复杂性会有所改变。在软件开发界最流行的框架,包括Struts、Spring、Hibernate等,这些分布在 Web容器和EJB容器中的各种应用框架变得让人眼花缭乱,要选择最适合自己的看来越来越困难了。由于JavaEE5的发布,著名的JBoss应用服务器 的结构也发生了较大的变化。微软.NET的2.0平台和下一代操作系统Window Vista桌面版发布,同时提供给广大用户的WinFX平台,不仅给开发者而且给用户带来了挑战。
由Ruby和Retail的联姻,AJAX的新瓶装旧洒,再加上Web2.0应用概念上的炒作,脚本语言、Web开发与应用在今年着时火了一把,因此今年搭上顺风车的PHP也要求能够同Java应用交互,克服语言与平台的障碍。
桌面与企业服务器的开发应用也有相当发展,中间件市场、数据库、ERP等各种应用随着SOA得到市场的认可,各种技术与应用以及SOA的产品也逐渐多了 起来。随着3G时代的到来,智能手机占有率的提升,手机平台的开发市场正进一步;不仅是手机,数字电视、各种电器和消费类电子产品的智能化发展也促使嵌入 式领域的开发发生了很大变化,如:IP机顶盒、基于GPS全球定位系统的设备、工业自动化和医疗设备等,商业平台与开源Liunx平台共存。
开源、互联网及其他
开源软件逐渐挺进企业主流应用,不仅是Linux,还有Boss中间件、Mysql数据库、EnterpriseDB数据库等,而且还有各种应用软件, 包括:Open office办公套件、Firefox浏览器、ERP、CRM等等。开源力量的加入也使得非常多的应用进入到微软平台上,在微软的.Net平台上也出现了 大量的开源应用软件。
互联网最大的应用与技术就是搜索、软件服务化(Software as a Service)。不管是通用搜索还是行业垂直搜索,不管是互联网搜索还是企业搜索,都已经不仅针对文本而且开始向音视频搜索发展了。
最后不要忘了,由于人们对应用要求的提高,测试在这几年显得越来越重要了,测试工具与测试理论都有很大发展,这一点也值得关注。(文/邓健)
手机软件开发将与PC趋同
王权平
资深程序员,供职于威盛电子(中国)有限公司,从事GSM/GPRS芯片组的开发,主要工作包括协议软件设计、开发与测试,以及智能手机平台通信中间件的设计与开发。
2006年出现了很多叫好也叫座的手机产品,这些成功手机的背后,都明显地揭示出了手机软件开发技术的若干发展趋势。2007年手机软件技术将继续迅速 发展,无论单处理器平台或是双处理器平台,网络应用和多媒体应用都将是主要的开发方向,而C++和Java将是首选的开发语言。
未来, 传统的单处理器手机平台仍将在低价手机和特色手机市场上保持不可替代的优势。其软件通常都由芯片厂商和手机设计公司来提供,除了J2ME平台外,缺乏开放 和标准的API是其固有的缺陷。因此几乎没有来自第三方的原生的面向其处理器和编译平台优化的软件,用户自行扩展的能力较差。展望未来,除了集成更多的应 用软件(如电子邮件、电子书和多媒体播放程序等)外,单处理器平台上的软件开发工作主要集中在新硬件模块的驱动程序以及图形用户界面的创新和提高上。就开 发语言而言,C和C++仍然是首选;在底层通信软件尤其是协议栈的实现上,C语言仍将继续居统治地位;当然在驱动程序中,汇编语言也是不可或缺的。单处理 器平台上第三方开发人员的开发空间在于J2ME平台,但是各个解决方案对Java语言支撑能力的差异,使得Java程序很难达到真正的与平台无关。不过, 随着硬件能力的与提高和Java虚拟机的改善,特别是硬件级Java加速和ARM平台Java优化指令等特性的引入,可以预料J2ME将会成为单处理解决 方案的基础软件平台。
双处理器平台由运行通信协议的基带处理器和运行用户界面程序的应用处理器组成,是智能手机的基础平台。未来智能手 机平台的软件开发中,中间件和应用程序都有很大的发展空间和需求。中间件主要包括图形库和通信库两部分。图形库重点在于提供更加华丽和友善的用户界面,增 强用户的操作体验,据称WinCE6.0即将提供Vista风格的界面;3D加速将是继2D加速后的第二个亮点;另外,图形库也将重点支持硬件级的多媒体 加速技术,从而支持包括移动音频和视频,特别是手机电视的应用。通信库部分将重点在统一的框架内整合各种广域、局域乃至个域通信技术。应用程序部分,网络 应用将会是2007年的发展重点。就开发技术而言,J2ME在智能手机上的性能优于单处理平台,因此笔者看好基于J2ME平台的手机游戏和网络应用;而基 于C++的网络编程和多媒体编程仍将继续是Symbian平台、WinCE平台,以及Linux上Qt平台的的主要开发领域;另外PC平台上的基础软件组 件,如数据库技术等,将逐渐移植到手机平台上,提供其嵌入式的版本,以适应手机平台的硬件和软件限制。但是由于三大平台存在的巨大差异,软件的可移植性将 成为一个重要的问题。
核心观点
随着中间件的加强,手机应用软件开发将逐渐与PC趋同,将出现大量的个人软件开发者和第三方软件开发商,手机软件产业势必会有很大的发展。
注重测试需求 做好流程建设
戴金龙
注册PMP,GB/GJB/ISO/CMMI内审员。原嫦娥工程地面应用系统质量组专家。历任某外企测试技术经理、项目经理及运营经理。对当代软件测试理论及工程实践有较好的领悟。
当前,测试作为一项职业吸引了越来越多的优秀人才;测试作为控制软件质量的有效手段,融入到了越来越多企业高层的管理理念中;测试作为一门学科,获得了 前所未有的壮大。但在测试技术蓬勃发展的另一方面,测试行业也在迅速地积累着各种问题,在接下来的一年里某些隐藏的问题可能会表现得很显著。
第一个问题是如何让测试更有效地锲入到不规范的软件开发过程中。提出这个问题恐怕会有不少人大吃一惊:这类企业为什么不先规范软件的开发过程呢?这是不 是一个伪问题?其实,目前有不少软件企业都处在这种状态。但这些企业的管理层并不承认自己的开发过程不规范,反而认为这是一种灵活的、有个人特色的高效管 理。这样的氛围造成软件质量低下自是意料中的事情。
即使企业管理层了解到测试是解决质量问题的有效途径,实施软件测试也是需要代价的。 目前的测试学科所提供的技术、流程、管理及方法论都是假设是在良好的(至少规范的)开发过程、管理氛围及测试环境中实施的,并没有提供在不规范软件开发过 程中做测试的解决方案,这样就出现了所谓“理论”与“实践”的偏差。解决的办法有两个:一种是变革企业文化,规范开发过程,建立测试所需的相关环境,从而 实施规范、严格、有序的软件测试;另一种就是拓展测试理论,针对不规范开发过程的特点,找到弥补、折衷的解决办法。根据笔者对国内软件企业的了解,后者将 是今后一段时间国内软件企业关注的热点话题。
第二个问题是如何清晰地定义软件测试需求,使测试工作目标明确、有的放矢。这个问题是以前 的测试学科没有回答清楚的,非常需要深入研究,它将会是今后若干年的研究热点。可能有读者会感到费解:测试需求不就是软件需求吗?其实不然。软件需求用于 指导后续设计的展开。而测试需求则是直接源自于客户的质量要求。测试需求的源头非常繁杂,如何删繁就简,拿捏得当,目前没有现成的方法,仍需要做大量理论 研究和实践探索。
第三个问题是如何规范软件测试流程以持续提高测试团队的绩效。这个问题目前已有一些答案。如“制定测试计划-设计测试 -执行测试-测试分析与总结”等等。从执行的角度而言,这类粗略的阶段划分或许已经够用,没有进一步研究的必要。但对于控制测试过程而言,对于测试服务型 企业通过CMMI认证而言,尤其是对于改进软件测试过程而言,几乎是没有帮助的。
核心观点
在测试技术蓬勃发展的另一方面,测试行业也在迅速地积累着各种问题。
软件工程为软件工业化铺路
王刚
智冠咨询(Crown Consulting)高级合伙人、首席咨询师。先后负责多个大型软件开发项目,涉及电子政务、企业信息化、门户网站等领域,并在项目中大量尝试开源产品。
从前与中国软件领域相关联的总是一个个令我们这些后辈所敬仰的孤胆英雄,而此时我们已经清晰地认识到属于英雄的软件时代已经结束,只有工业化的生产才能带来中国软件的发展。
UML
尽管,只有面向对象的设计方法、使用了UML进行表达才是先进的软件开发方法,这是无需证明的错误命题。但是我们不得不承认,从私有的无序的表达上升到 工业的标准,UML凝聚了软件工业的实践,2005年,UML 2.0标准被OMG组织批准通过,2006年开始被主流厂商所接受,UML 2.0所带来的不只是表现的巨大丰富,而更多的是给予面向模型(MDA)开发以有力的工具。
软件生命周期管理套件
Rational套件曾是开发者UML工具的不二选择,遗憾的是,随着IBM对Rational日深的影响,我们所能看到的是庞杂的生产线和对摩尔定律的 不断验证,但对于中小厂商却变得越来越遥不可及。本应该趁虚而入的Borland,更是让人感觉遗憾,卸下IDE包袱的Borland,没有在2006年 发出太多的声音,收购完善了它的生产线,但是溃败的惯性能否停止我们还不得而知。告别了Delphi的我们,不想再告别Together。
传统厂商的消沉与失误给予新进入者以机会,微软的Visual Team凭借着与IDE工具、Office办公套件的天然联系,逐渐成为.Net平台开发者的首选生命周期管理工具。以NoMagic为代表的中小厂商, 凭借对标准的及时跟进、丰富的软件接口而被普通开发者所接受,它们目前专注于生命周期的某一领域,成为巨头的挑战者。
核心观点
只有工业化的生产才能带来中国软件的发展。
网络安全软件开发趋势
李洋
中国科学院计算技术研究所博士,资深程序员。从事计算机网络信息安全领域的研发工作,曾参与“国家自然科学基金”、“国家863重大专项”、“国家242信息安全计划”、“国家973计划”等多项国家重点项目、信息安全系统和企业信息系统的研发工作。
从当前国际上安全产品的研发情况来看,以防火墙和IDS为主导,以密码技术为基础的产品已经取得了飞速的发展,并在实际应用中发挥了很大的效应,使得网 络安全产品的研究及应用工作不断向前推进。2007年,对于网络安全软件开发人员来说,如下几项新的技术值得大家期待:
1.基于开源软件的开发技术
以Linux为代表的开源软件及其开发模式已经深入人心。网络安全软件中最为著名的就是轻量级的入侵检测系统Snort,它已成为众多安全厂商和科研院校研发的重要参照物。纵观网络安全软件的发展趋势,以优秀的开源软件为基础进行研发已成为网络安全界的首选技术途径。
2.嵌入式安全开发技术
随着移动计算和无线网络的普及,以及普适计算概念的提出和应用,移动、无线和无处不在的计算已成为新世纪IT的绝对热点。这些需求都要求在上述条件下进行信息处理和计算,因而以J2ME为代表的嵌入式开发技术也成为很大看点。
尤为值得关注的是,人们在获得上述便利的同时,也在经受着自己的隐密数据随时有可能被窃取和破坏的威胁。那么,如何在当前的嵌入式技术当中综合采用密码 理论、PKI基础架构以及其他信息安全技术来提高嵌入式系统的安全性,为未来轻量级的嵌入式计算保驾护航,也必将成为网络安全工作者和软件开发人员关注的 一个热点问题。
3.高性能计算服务开发技术
网络带宽的日益增长和单机处理能力已经极不对称。诸如早期的防火墙、IDS等都已经不能满足现实的需求。
因此,采用并行处理技术以及研究和开发高性能网络协议处理技术来缓解上述问题带来的压力是不错的选择。并且,随着64位计算的到来,如何在该硬件平台上 进行并行开发、编译等,都是网络安全软件研发人员期待和需要解决的问题。值得期待的是,当今的UTM(统一威胁管理)技术试图在上述各方面取得突破,建立 一套高性能、高可靠、完善的网络威胁防范机制,我们拭目以待。
4.可信编程技术
对于安全要求较高的场合,可信计算平 台能够为用户提供更加有效的安全防护。而据统计,在网络安全领域,80%以上的网络威胁和漏洞来源于系统自身的Bug,而这些Bug则来源于设计思路以及 程序实现。那么,在积极防御外来攻击的同时,提高网络安全软件研发人员自身编程的可靠性,软件开发平台在软件编程中可能出现漏洞(比如最常见的缓冲区溢出 等)的地方进行提醒和标注,就可以极大地减少程序实现的硬伤。我们不妨借用可信计算的名号称其为可信编程技术,相信也将是软件研发人员关心的技术,不但可 以提高软件可靠性,更能避免用于查找大量重复出现的系统Bug所需的人力和物力。
核心观点
基于开源软件的开发技术、嵌入式安全开发技术、高性能计算服务开发技术、可信编程技术将是未来网络安全软件开发的四大趋势。
降低开发复杂性
程勇
Java开放源码软件咨询顾问,Huihoo.org开源软件社区共同创始人,北京中流科技有限公司CTO。
Java技术的发展已经走过11个年头,在企业级应用开发领域占领主导地位的JavaEE技术也伴随着Java自身的演变,在2006年发生了许多新的 变迁。 随着系统开发复杂度的上升,需要一种更好的解决方案来分解系统的复杂,并简化应用开发的过程。基于众多的因素,选择企业应用开发的架构平台时都需要考虑很 多约束,它必须最小化对应用开发本身的影响。因此,一个好的技术平台和应用框架应该具备如下特性:提供应用开发的一致性;提供高端和低端特性;提供管理逐 步增长的应用系统的具体方法;为高级开发人员提供指导;能够使不同框架的特性和优点集成到一起进行工作;能够快速进行应用开发,保证产品按市场的需求发 布;能够降低项目开发的风险,提升企业的投资回报。
由此,我们不难发现,现在大量涌现的新技术体系和框架,都是在朝着简化应用开发的方向而努力,这些技术包括:
● AJAX AJAX并非一种编程语言,它是使用XHTML或HTML,JavaScript以及XML来建立互动网络应用程序的一种模式。
● 脚本语言 Ruby的发展,使得在Java 语言中使用动态机制成为可能,使用Ruby的动态机制,用户能够改变脚本类的定义。这些Ruby对象允许直接使用方法管理它的状态和行为。
● 应用框架 以Spring为代表JavaEE应用框架是在JavaEE技术体系之上快速构建应用的支撑平台,应用框架通过整合的技术架构,将众多的优秀开源框架融合在一起,为应用开发提供了一个完整的技术解决方案。
● JavaEE 5.0 JavaEE 5.0 是新一代的Java EE技术规范,其中包括JSF、EJB 3.0等十多项全新的技术体系。它的多项新特性为JavaEE应用开发带来了更多的便利。
核心观点
选择企业应用开发的架构平台时都需要考虑很多约束,它必须最小化对应用开发本身的影响。
工作流: 国内国际两极分化
胡长城
网名“银狐999”,就职于TIBCO。国内J2EE开源应用的支持者,有过6年的J2EE应用和产品开发及架构经验,是huihoo开源组织的成员。
与众多新技术相比,工作流的知名度也许会小一些,但工作流也一直处于不断创新之中。所不同的是,在这个领域新技术的应用是被隐藏在应用理念和架构体系之下的。对于工作流的发展趋势,这里分开两条线来阐述。
第一条线就是单纯从工作流技术应用的发展趋势来探索。在这方面国际上应用水平已经远超越国内,这就是这两年的龙卷风—— BPM(Business Process Management)。很多国际化的大企业已经把BPM定位于一种解决方案。在这一整套解决方案中,工作流技术已经成为流程的服务,围绕这个服务,有各 种模块和应用相辅助。BPM解决方案俨然成为一种参考架构: 一方面是以SOA为主导的技术架构,另一方面则包含了一整套的服务。
实际 上,BPM的发展是很多年的流程和工作流发展的必然结果。在这个领域的供应商有的由早期的工作流厂商发展而来,如Staffware公司(现已经被 Tibco收购); 有的由早期的EAI提供商发展而来,如Tibco; 有的由应用服务器提供商发展而来,如BEA等。在它们的BPM蓝图中有很多相似之处,比如以BPEL规范阐述Business Process。
第二条线从国内工作流应用和技术趋势来分析。这两年已经有部分国内企业采用EAI或BPM技术进行系统整合方面的应用,但大规模地采用BPM解决方案还 是很少,不过这是一个趋势。国内目前工作流技术的应用还主要以“办公或业务流程的人工信息化处理”为主,毕竟国内企业和政府的一个很大特征是“以人为 主”,而不是“以制度化为主”。在一些集团性的企业和跨省市集中管理性的系统中,分布式流程应用逐渐显现出来。而伴随着国内几年来工作流市场的积淀,早期 的一些工作流厂商在寻求“流程分析和监控”方面的突破,而这方面的客户需求也日渐多起来。但短时间内,很难由国内工作流厂商自己取得一些突破,发展起 BPM产品。
上述这两条发展线也代表了两极分化。但第一条战线的BPM 解决方案肯定是未来大规模应用的趋势,虽然短时间内对国内工作流应用市场冲击很小,但是政府和国内软件厂商却不应该小觑这个发展趋势。
核心观点
国际大厂商对工作流的研究重点是把它作为BPM的一部分,为流程服务,而国内还主要以“办公或业务流程的人工信息化处理”为主,短时间内,国内还很难有所突破,推出自己的BPM产品。
Java走上开源之路
孟冬冬
中科软科技股份有限公司金融保险部系统分析师、软件架构师。9年软件设计开发和6年项目管理经验,精通基于J2EE架构的企业应用系统开发技术。先后在普天、中软等多家软件公司任系统分析员、软件架构师及项目经理。
2006年11月13日,Sun公司宣布将Java转为开源。预计到2007年3月份,除了一部分所有权不属于Sun的源代码之外,几乎全部Java技 术的源代码都将按照GNU GPL自由软件许可授权协议公开。Java在和.net经历了两年的竞争后已显疲态,相比5岁的.net以及新生的动态语言Ruby,11岁的Java已 略显复杂臃肿,甚至在网上还有“Java将死”的论调。Sun选择在此时将Java开源,不管是否是Sun迫不得已、在日薄西山前的最后博弈,但影响之深 远却绝对不可小视。它引发的“蝴蝶效应”无疑会使Java技术的生命力更强,走得更远,更可赢得在开发语言竞争中起决定作用的更多程序员的芳心,相信未来 Java领域将出现更多令人惊奇的开源产品。
另外Sun还赶在圣诞节前发布了JDK的6.0 Release版本。对JDK而言,“成败皆在应用服务器厂商”。市场占用率最大的应用服务器Weblogic8、WebSphere5成就了1.4,但 也限制了JDK5的普及。在JDK5还没有用热时,JDK6就来了。不过,这倒也是好事,可以直接跳过JDK 5去研究JDK6的应用了。
JDK6对笔者的最大吸引力是它在JVM性能上的提升和对XML和Web服务的支持。性能方面,无论是运行时分析功能还是用户对性能情况的反馈,尤其是在Swing方面,JDK6对JIT都有了卓有成效的提升。
一直以来,相对于微软的.net,Java对Web Services的支持复杂得难以接受,也因此产生了优秀的Axis和XFire框架。而在JDK6下,Java程序员也能享受到这种待遇了,不用针对 Web服务另外加入额外的工具,不使用任何框架也能写出Web Services程序了。JDK6中固化了XML、Web Services的标准,如StAX、JAXB2、JSR181等。JDK 6在语法方面没有太大改变,最明显的就是添加了对脚本语言的支持,如JavaScript、Ruby、PHP。JDK6 中实现了JSR 223,提供了让脚本语言来访问Java 内部的方法。它可以在运行的时候找到脚本引擎,然后调用这个引擎去执行脚本,这个脚本API 允许程序员为脚本语言提供Java 支持。
另外在JDK6中内置实现了JDBC4支持的Derby数据库,为测试和小型系统的发布提供 了便利条件。最后,JDK 6 中对内存泄漏增强了分析以及诊断能力,当遇到Java.lang.OutOfMemory 异常的时候,可以得到一个完整的堆栈信息,并且当堆已满时,会产生一个日志文件来记录这个致命错误。
如果说谈到JDK 6更多的是对未来的一种希望的话,Java full-stack(Java full-stack,意指集成了全部所需功能的Java快速开发框架)则是一种已经可以见到的东西。
很长时间以来,作为一个Java程序员,幸福的是从表现层到持久层都有众多的框架可供选择,痛苦的是在这些框架中挑选出适合自己的框架,而且还要付出将 不同层次的框架粘合在一起的设计成本和时间,而架构的稳定性和实用性则往往取决于架构师的设计理念和经验。Ruby on Rails的流行再一次证明了在软件开发领域“简约至上”的真理,它使得诸多Java开发人员把目光放到了“提供最方便好用的Java full-stack框架”上面,因此Java开源社区如雨后春笋般地出现了一批又一批的full-stack框架,如Appfuse、 SpringSide、JBoss Seam、RIFE、Grails、Trails、Rife等。Java领域也从此开始走向full-stack的快 速开发道路。笔者就非常喜欢国外的JBoss Seam和国内的SpringSide。
核心观点
Sun选择在2006年岁末将Java开源,不管是不是Sun的最后博弈,其影响绝对不可估量。从此以后,全世界所有的开发人员都可以对Java源代码进行修改、优化、除错,同时Java也将变为一种真正免费的技术。
降低开发复杂性
程勇
Java开放源码软件咨询顾问,Huihoo.org开源软件社区共同创始人,北京中流科技有限公司CTO。
Java技术的发展已经走过11个年头,在企业级应用开发领域占领主导地位的JavaEE技术也伴随着Java自身的演变,在2006年发生了许多新的 变迁。 随着系统开发复杂度的上升,需要一种更好的解决方案来分解系统的复杂,并简化应用开发的过程。基于众多的因素,选择企业应用开发的架构平台时都需要考虑很 多约束,它必须最小化对应用开发本身的影响。因此,一个好的技术平台和应用框架应该具备如下特性:提供应用开发的一致性;提供高端和低端特性;提供管理逐 步增长的应用系统的具体方法;为高级开发人员提供指导;能够使不同框架的特性和优点集成到一起进行工作;能够快速进行应用开发,保证产品按市场的需求发 布;能够降低项目开发的风险,提升企业的投资回报。
由此,我们不难发现,现在大量涌现的新技术体系和框架,都是在朝着简化应用开发的方向而努力,这些技术包括:
● AJAX AJAX并非一种编程语言,它是使用XHTML或HTML,JavaScript以及XML来建立互动网络应用程序的一种模式。
● 脚本语言 Ruby的发展,使得在Java 语言中使用动态机制成为可能,使用Ruby的动态机制,用户能够改变脚本类的定义。这些Ruby对象允许直接使用方法管理它的状态和行为。
● 应用框架 以Spring为代表JavaEE应用框架是在JavaEE技术体系之上快速构建应用的支撑平台,应用框架通过整合的技术架构,将众多的优秀开源框架融合在一起,为应用开发提供了一个完整的技术解决方案。
● JavaEE 5.0 JavaEE 5.0 是新一代的Java EE技术规范,其中包括JSF、EJB 3.0等十多项全新的技术体系。它的多项新特性为JavaEE应用开发带来了更多的便利。
核心观点
选择企业应用开发的架构平台时都需要考虑很多约束,它必须最小化对应用开发本身的影响。
工作流: 国内国际两极分化
胡长城
网名“银狐999”,就职于TIBCO。国内J2EE开源应用的支持者,有过6年的J2EE应用和产品开发及架构经验,是huihoo开源组织的成员。
与众多新技术相比,工作流的知名度也许会小一些,但工作流也一直处于不断创新之中。所不同的是,在这个领域新技术的应用是被隐藏在应用理念和架构体系之下的。对于工作流的发展趋势,这里分开两条线来阐述。
第一条线就是单纯从工作流技术应用的发展趋势来探索。在这方面国际上应用水平已经远超越国内,这就是这两年的龙卷风—— BPM(Business Process Management)。很多国际化的大企业已经把BPM定位于一种解决方案。在这一整套解决方案中,工作流技术已经成为流程的服务,围绕这个服务,有各 种模块和应用相辅助。BPM解决方案俨然成为一种参考架构: 一方面是以SOA为主导的技术架构,另一方面则包含了一整套的服务。
实际 上,BPM的发展是很多年的流程和工作流发展的必然结果。在这个领域的供应商有的由早期的工作流厂商发展而来,如Staffware公司(现已经被 Tibco收购); 有的由早期的EAI提供商发展而来,如Tibco; 有的由应用服务器提供商发展而来,如BEA等。在它们的BPM蓝图中有很多相似之处,比如以BPEL规范阐述Business Process。
第二条线从国内工作流应用和技术趋势来分析。这两年已经有部分国内企业采用EAI或BPM技术进行系统整合方面的应用,但大规模地采用BPM解决方案还 是很少,不过这是一个趋势。国内目前工作流技术的应用还主要以“办公或业务流程的人工信息化处理”为主,毕竟国内企业和政府的一个很大特征是“以人为 主”,而不是“以制度化为主”。在一些集团性的企业和跨省市集中管理性的系统中,分布式流程应用逐渐显现出来。而伴随着国内几年来工作流市场的积淀,早期 的一些工作流厂商在寻求“流程分析和监控”方面的突破,而这方面的客户需求也日渐多起来。但短时间内,很难由国内工作流厂商自己取得一些突破,发展起 BPM产品。
上述这两条发展线也代表了两极分化。但第一条战线的BPM 解决方案肯定是未来大规模应用的趋势,虽然短时间内对国内工作流应用市场冲击很小,但是政府和国内软件厂商却不应该小觑这个发展趋势。
核心观点
国际大厂商对工作流的研究重点是把它作为BPM的一部分,为流程服务,而国内还主要以“办公或业务流程的人工信息化处理”为主,短时间内,国内还很难有所突破,推出自己的BPM产品。
Java走上开源之路
孟冬冬
中科软科技股份有限公司金融保险部系统分析师、软件架构师。9年软件设计开发和6年项目管理经验,精通基于J2EE架构的企业应用系统开发技术。先后在普天、中软等多家软件公司任系统分析员、软件架构师及项目经理。
2006年11月13日,Sun公司宣布将Java转为开源。预计到2007年3月份,除了一部分所有权不属于Sun的源代码之外,几乎全部Java技 术的源代码都将按照GNU GPL自由软件许可授权协议公开。Java在和.net经历了两年的竞争后已显疲态,相比5岁的.net以及新生的动态语言Ruby,11岁的Java已 略显复杂臃肿,甚至在网上还有“Java将死”的论调。Sun选择在此时将Java开源,不管是否是Sun迫不得已、在日薄西山前的最后博弈,但影响之深 远却绝对不可小视。它引发的“蝴蝶效应”无疑会使Java技术的生命力更强,走得更远,更可赢得在开发语言竞争中起决定作用的更多程序员的芳心,相信未来 Java领域将出现更多令人惊奇的开源产品。
另外Sun还赶在圣诞节前发布了JDK的6.0 Release版本。对JDK而言,“成败皆在应用服务器厂商”。市场占用率最大的应用服务器Weblogic8、WebSphere5成就了1.4,但 也限制了JDK5的普及。在JDK5还没有用热时,JDK6就来了。不过,这倒也是好事,可以直接跳过JDK 5去研究JDK6的应用了。
JDK6对笔者的最大吸引力是它在JVM性能上的提升和对XML和Web服务的支持。性能方面,无论是运行时分析功能还是用户对性能情况的反馈,尤其是在Swing方面,JDK6对JIT都有了卓有成效的提升。
一直以来,相对于微软的.net,Java对Web Services的支持复杂得难以接受,也因此产生了优秀的Axis和XFire框架。而在JDK6下,Java程序员也能享受到这种待遇了,不用针对 Web服务另外加入额外的工具,不使用任何框架也能写出Web Services程序了。JDK6中固化了XML、Web Services的标准,如StAX、JAXB2、JSR181等。JDK 6在语法方面没有太大改变,最明显的就是添加了对脚本语言的支持,如JavaScript、Ruby、PHP。JDK6 中实现了JSR 223,提供了让脚本语言来访问Java 内部的方法。它可以在运行的时候找到脚本引擎,然后调用这个引擎去执行脚本,这个脚本API 允许程序员为脚本语言提供Java 支持。
另外在JDK6中内置实现了JDBC4支持的Derby数据库,为测试和小型系统的发布提供 了便利条件。最后,JDK 6 中对内存泄漏增强了分析以及诊断能力,当遇到Java.lang.OutOfMemory 异常的时候,可以得到一个完整的堆栈信息,并且当堆已满时,会产生一个日志文件来记录这个致命错误。
如果说谈到JDK 6更多的是对未来的一种希望的话,Java full-stack(Java full-stack,意指集成了全部所需功能的Java快速开发框架)则是一种已经可以见到的东西。
很长时间以来,作为一个Java程序员,幸福的是从表现层到持久层都有众多的框架可供选择,痛苦的是在这些框架中挑选出适合自己的框架,而且还要付出将 不同层次的框架粘合在一起的设计成本和时间,而架构的稳定性和实用性则往往取决于架构师的设计理念和经验。Ruby on Rails的流行再一次证明了在软件开发领域“简约至上”的真理,它使得诸多Java开发人员把目光放到了“提供最方便好用的Java full-stack框架”上面,因此Java开源社区如雨后春笋般地出现了一批又一批的full-stack框架,如Appfuse、 SpringSide、JBoss Seam、RIFE、Grails、Trails、Rife等。Java领域也从此开始走向full-stack的快 速开发道路。笔者就非常喜欢国外的JBoss Seam和国内的SpringSide。
核心观点
Sun选择在2006年岁末将Java开源,不管是不是Sun的最后博弈,其影响绝对不可估量。从此以后,全世界所有的开发人员都可以对Java源代码进行修改、优化、除错,同时Java也将变为一种真正免费的技术。