程立谈架构、敏捷和SOA实践
支付宝首席架构师程立在本文分享了支付宝技术架构的发展,对架构的认识,成功架构的特点,如何避免架构设计的失败,以及在敏捷和SOA方面的实践等。
作者 Alex Blewitt译者 宋玮 发布于 2008年5月12日 上午9时36分
特性完整的最后一个里程碑版本——Eclipse 3.4M7上周五发布了,该版本对前一版Eclipse 3.3进行了多处改进。到Eclipse3.4(Ganymede)预期的最终发布日期——6月的时候,我们将有为数众多的发布候选。
SWT——支撑Eclipse的UI层,现在能够创建用于kiosk-mode应用的全屏窗口了,也能够创建可以透明显示的弹出窗口或其它HUD类型(HUD-type)窗口。这就使得窗口能够通过创建不透明区域的一条路径以非矩形形式显示。这一技术同样应用到了控件上(如按钮),尽管实际上有一个三状态选择框看起来更有用些。SWT现在终于可以运行在64位windows系统+64位JVM环境上了;尽管它仍可以在64位windows系统+32位JVM的环境上运行32位SWT。
Java工具也经过了一番改进,其中比较重要的是可以在构建多核系统时提升性能的多线程编译器。不幸的是,该项目不是并行构建的——就像以前一样每一部分都是单独构建的——但是每个项目的实际编译能够使用多线程的方式。还有其它一些优点,如把 a+b+c 这样的表达式重构为等价的StringBuilder/StringBuffer或MessageFormat语句,这在许多场合都很有用。另外其它的一些重构特性也被增加进来了,比如把一组变量重构进一个带有accessors的包含类(containing class)中。你还可以通过在Outline视图中拖拽元素来对元素进行重新排序。JUnit计时结果报告了每个测试用例运行了多长时间,这将将我们对任何性能问题的方位有一个大致判断。最后,方法的自动提示功能现在被加上了有效参数值注解,因此在你利用SWT编写代码的时候,大量新的SWT模板(带有“flags”域通常可能的取值)将给予帮助。
对RCP开发这来说,一个好消息是Log视图最终被移到它自己的bundle中去了,这意味着你可以把它和RCP应用一起进行部署,而不需要引入整个workbench。帮助系统(即Infocenter)已经重新进行了设计,这样它可以被插入到任何现存应用服务器中(比如Jetty、Tomcat甚至SSAP)。另外增强的PDE可以帮助构建用于帮助中心或eclipse.org上文章的文档。最后,SecurePlatform现在可以和JAAS集成在一起使用了。
PDE提供了众多增强特性来格式化和重构plugin.xml及OSGi manifests,包括其它可以帮助保持manifest最新的重构特性(比如在代码补全时执行一个import或增加适当的条目),这些都给开发这带来方便。已经在孵化器中待了一段时间的Plug-in spy,现在默认与3.4一起发行了,有了它就可以更加容易地使用已有plug-in了。最后,对于那些希望裁减Eclipse的人来说,source bundle现在作为多个单独的单元来发行了,而不是像以前一样在一个巨大的bundle中发行,这使得你可以更加容易的获取自己感兴趣的代码而忽略那些不感兴趣的代码。增强的plug-in注册视图允许你停止或启动bundles(及其OSGi服务),尽管不是动态的安装或移出它们。
该平台还有一些改变,最值得注意的就是P2,一个新的 Eclipse供应平台(provisioning platform)。这是老的变更管理(Update Manager)的替代品,bundle和非bundle组件(如配置文件、安装文件、绘图资源等等)都被允许安装或更新。它有许多新特性,比如察看和校验产品数字签名、从镜像(或供应站点)下载、或从多个可用产品(如pack200、gz等等)中选择表现最佳的产品。P2还允许dropins目录,这是的安装bundle更加容易:只需把bundle复制到该目录,Eclipse将自动安装并激活它(当然,还取决于许可证)。Eclipse也可能被配置成共享bundle的模式,这将使得一个bundle库可被使用并且该bundle库将服务于不同的应用。对于那些按常规用法使用Eclipse的人来说,看不出这有什么好处,但是如果你正在进行RCP应用开发(或支持),有许多基于RCP的应用程序安装在同一个机器上(比如,RCP应用的一个内部套件[in-house suite]),那么你可以在多个应用之间共享这些bundle,这非常节约空间。
你可以阅读各个新闻及关注的页面(M1、M2、M3、M4、M5、M6和M7),它们更详细地描述了这些特性。从现在到6月底,将会有许多修正了错误的发布候选版陆续发布,6月底是Ganymede的预期发布时间。
查看英文原文:Eclipse Prepares for 3.4 with Feature Complete Milestone Release
支付宝首席架构师程立在本文分享了支付宝技术架构的发展,对架构的认识,成功架构的特点,如何避免架构设计的失败,以及在敏捷和SOA方面的实践等。
作为一个有别于Java、Ruby等语言的一个特性,C#可以用索引器(Indexer)将类型本身以对象数组的形式供外部使用。同时,把索引器和LINQ结合使用倒是一个非常不错的组合,索引器做接口、LINQ完成内部检索逻辑,客户程序在无需记住具体方法名称的前提下,按照键值检索即可,索引器内部则依托LINQ to系列的基础,提供对各种异构数据源的访问。
Scrum中,产品负责人这个角色具有很大的影响力,能够带来很高的价值。但要想运用得当,可没那么轻而易举。如果做得好,就可以在客户和开发者之间建立更为融洽的关系,并能够增加组织的竞争优势。
在本书中,作者Henrik Kniberg讲述了他在一年的时间里,带领40人的团队实施Scrum的过程。他们试过了多种团队尺寸(3~12人)、sprint长度(2~6星期),定义“完成”的不同方式,不同的backlog格式,各种测试策略,在多个Scrum团队之间进行同步的多种方式。他们还尝试过XP实践——持续集成、结对编程、测试驱动开发等等,还试过了把XP跟Scrum组合。
准时化生产(Just In Time)是精益生产(Lean Production)和丰田生产系统(Toyota Production System)中的概念,敏捷开发与准时化生产中的很多观点和实践是一致的,精益思想作为精益生产背后的指导思想也正在积极地影响着软件开发领域,向其中不断注入创新与活力。
I. Drobiazko和R. Zubairov合作撰写了一篇文章,详细介绍Apache Tapestry 版本5——一个面向组件web框架。文章向读者展示了创建组件方法,并谈到了Tapestry中的IoC以及Ajax的相关特性。
没有回复
回复