扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
来源:论坛整理 2007年11月7日
关键字:
应用程序开发人员钟爱 Python、Perl、PHP 和 Ruby。DB2准备支持它们 —— 您呢?
数年前,我的朋友 Cathy 拜访我在乔治亚州亚特兰大郊区的家。我向她介绍了我的儿子,那时他才四岁,我告诉他,Cathy 在宾夕法尼亚州有一个农场。“真的吗?”Zachary 问道。“你家有马吗?”“有啊,”Cathy 说,“我们有马。”
“有猪吗?”
“有,我们有猪。”
“有没有巨蟒(python)呢?”“没有,”Cathy 答道,“我们没有巨蟒。”
Zachary 有一点失望得走开了。Zach 是一个非常聪明的孩子,但是那个时候他对巨蟒知道得并不多。我得说,他对这种大蛇的了解,与我对 Python 编程语言的了解程度差不多。
时间很快来到 2007 年 3 月 29 日。我在澳大利亚墨尔本,听 Curt Cotner(IBM 同行,IBM 数据服务器首席技术官)在 International DB2 Users Group (IDUG) Australia Forum 上做主题演讲。Curt 正在谈 Python 和目前开发人员(尤其是 Web 应用程序开发人员)当中流行的其它编程语言。
对于 Python、Perl、PHP 和 Ruby,以及我至少比较熟悉的语言,例如 Java和 C#(后者在 .Net 应用程序环境中被广泛使用),IBM 的顶级 DB2 开发人员在谈论什么呢?结果据 Curt 所说,IBM 正在做很多工作来使 DB2 成为用于各种现代开发语言的很好的数据服务器,这条消息是关注 DB2 的人所关心的。几周之后,我再次目睹 Curt 在 IDUG North America Conference 上做演讲,当 Curt 同意坐下来就这个话题与我进行 Q&A 时,我得以从他本人那里得到一些很好的补充信息。根据 Curt 和其它消息来源(包括我在 CheckFree 的同事 Eric Drudge,他是我们的一个顶级应用程序架构师),DB2 人员应该知道关于数据服务应用程序客户端的热点话题。
DBMS 出现合并,而开发平台越来越多
至于作为企业级数据服务应用程序的基础的 DBMS,用户主要使用 IBM 和另外两家供应商提供的产品。在开放源代码软件领域,情况也差不多,也是由几种 DBMS 统领市场。
在应用程序一端,情况又不一样。编程语言来来往往(IT 的老一辈们:还记得 ALGOL、Pascal、PL/I和 APL 吗?),新的编程语言不断涌现,其中有些编程语言流行起来,获得了广泛的使用。根据 DBMS 软件技术“强者恒强”的特点,是什么导致语言多样化的场面?对此我有一些想法。
学生因素。很多新语言活动发生在世界各地的学校里。由于以下原因,孩子们(对我来说他们还是孩子)追求新的编程语言的开发,因为:
他们想要领先。很多计算机科学专业的学生都想成为下一个 Linus Torvalds。他们的主要动机未必是金钱。他们的目的是被承认——尤其是在其他程序员当中——成为一名领导者和革新者。
他们做得到。创造新的编程语言不像煮鸡蛋那么容易,但是比开发较大型企业要求具有功能性、易管理性、可伸缩性和可用性的新 DBMS 要容易得多。(Chris 是我的大学室友,有一天晚上,Chris 的疯狂的实验室伙伴发现他还呆在学校计算机中心的地下室里,他希望 Chris 是在为项目做第二天的工作。“哦,那个早做完了,”Chris 说。“那你在做什么?”“我在编写我自己的 FORTRAN 编译器。”“为什么?”“因为我做得到。”
追求简单。很多人之所以要花力气创造新的编程语言,是为了寻找一种方法用更少的代码做更多的事情(就应用程序功能而言)。(有些语言的爱好者喜欢进行一些竞赛,目标是用最少的代码提供某种功能。)当然,为了提供目标功能,需要执行很多机器指令,但重点是减少程序员必须编写的代码的行数。
使 Web 应用程序迈上新的台阶。旧的 browser-as-displayer-of-HTML 模式逐渐落后于一种可以称作“browser-as-desktop”的模式,在后一种模式中,在浏览器中运行的应用程序代码可以与用户交互,而且在改变显示元素和与后端服务器进行异步通信时,不需要那么多令人讨厌的 Web 页面重装载。于是,为了做那些旧语言不能做或者做不好的事情(尤其是在用户界面级),出现了一些新的语言。
服务器硬件的进步。如今很多受热捧的语言都是脚本编制语言,运行用这种语言开发的程序时,程序中的每一行代码是在执行时动态地转换成机器语言的,而不是在一个预先执行的进程中编译。脚本编制语言的 CPU效率不如编译语言,但是如今这一代的微处理器实在太快了,与数年前相比,CPU 周期要廉价得多,脚本编制语言带来的 CPU 开销变得越来越微不足道。
程序员的谈话
我在本节中所解释的术语经常可以在关于现代 Web 应用程序开发的讨论中听到。
PHP。PHP(PHP: Hypertext Preprocessor 的递归的首字母表示),根据 www.php.net 上的描述,是“一种开源的通用脚本编制语言,特别适合 Web 开发,可以嵌入到 HTML 中”。注意,PHP 代码是在应用服务器上执行的——客户机只接收 PHP 代码执行的结果,而不是代码本身。
Perl。Perl(practical extraction and report language)是一种跨平台的开源的脚本编制语言,由于它的文本操作功能和快速开发周期,在 Web 应用程序开发人员当中较为流行。有人将 Perl 称作 Internet 的胶带(duct-tape)。
Python。一种开源的脚本编制语言,被广泛用于各种应用程序领域。Python 的爱好者经常使用“batteries included”这个词来形容这个非常全面的标准库,它包含了从异步处理到zip文件的各种功能。
框架(Framework)。在 Web 应用程序开发的上下文中,框架是方法(也就是函数)和对象(事物的信息实例)的集合,它们使得用更少代码开发 Web 应用程序变得更容易。框架提供用于数据库访问和会话管理等类似内容的库。(在 http://en.wikipedia.org/wiki/Web_application_framework 上提供了关于这个话题的优秀介绍。)我的同事 Eric(应用程序架构师)将框架描述为用于快速构建 Web 应用程序的脚手架。
Django。Django 是和 Python 编程语言一起使用的一种开源的 Web 应用程序框架。
Ruby。Ruby 是 20 世纪 90 年代中期在日本创立的一种开源的脚本编制语言。其爱好者将它描述为一种“优美的”、“巧妙的”语言。Ruby 的首席设计者 Yukihiro Matsumoto 说过:“Ruby 看似简单,但其内部非常复杂,就像我们人体一样。”Ruby 最令人感兴趣的一个方面是,所有东西看上去都是一个对象。
Rails。开源的 Rails 框架是和 Ruby 编程语言一起使用的。
JavaScript。JavaScript 是一种开源的脚本编制语言,最初由 Netscape Communications 开发,现在由 Mozilla Foundation 管理。与其名字的字面意思不同,JavaScript 不是“解释性的 Java”;实际上,它与 Java 编程语言无关(不过 JavaScript 常被嵌入在 Java 应用程序中)。Web 浏览器是 JavaScript 最常见的执行环境。
Ajax。Ajax,Asynchronous JavaScript and XML 的简称,是用于开发交互式 Web 应用程序的一种技术。采用 Ajax 时,浏览器中运行的代码可以与用户交互,例如,当用户的光标停在 Web 页面中的某一段上时,那一段会“跳出来”并且高亮显示,但是不必为此重新装载 Web 页面。Wikipedia 在 http://en.wikipedia.org/wiki/Ajax_(programming)上提供了对 Ajax 的优秀介绍。
DB2 连接
那么,所有这些与 DB2 有什么关系呢?让我为您道来。
DB2 与 PHP。IBM 开发并支持一种用于 DB2 的开源的 PHP 扩展,即 ibm_db2。该扩展针对 DB2 进行了优化,并且支持存储过程和大型对象(LOB)。它还提供原生 XML 和 XQuery 支持,可以用于 PHP 4 和 PHP 5。在 http://us2.php.net/manual/en/ref.ibm-db2.php 上可以找到关于这种 PHP 扩展的更多信息。另外,还请了解 Zend Core for IBM,它是与 Zend Platform(来自 Zend Technologies 的一种流行的 PHP 应用服务器,该公司由 PHP 的架构者创立)兼容的一个 DB2 访问解决方案。 可以从 ibm.com/software/data/info/zendcore 获得关于 Zend Core for IBM 的更多信息。
DB2 与 Perl。CPAN,即 Comprehensive Perl Archive Network,提供用于 DB2 的 Perl 数据库驱动程序。在 http://search.cpan.org/~ibmtordb2/DBD-DB2-1.1/DB2.pod 可以找到关于它的信息。注意,在 DB2 的“Viper 2”版中,IBM 将提供一个 PHP 驱动程序的二进制代码。
DB2 与 Python(和 Django)。在 sourceforge.net/projects/pydb2 上有一个 Python DB2 Interface (PyDB2)。在 DB2 for Linux, Unix, and Windows 的“Viper 2”版中,IBM 计划提供一个 Python DB2 驱动程序,该驱动程序将实现 Python Database API Specification v2.0 (见 www.python.org/dev/peps/pep-0249/)。同样是在 DB2 “Viper 2”中,IBM 计划支持作为 Python 应用程序 Django 框架的一部分的对象-关系映射器(欲了解关于 Django Database API 的更多信息,请访问 www.djangoproject.com/documentation/db-api/)。
DB2 与 Ruby(on Rails)。IBM 在它的 alphaWorks 网站(www.alphaworks.ibm.com/tech/db2onrails)上提供了用于 DB2 on Rails 的一个启动工具包。这个集成的安装程序在 Windows PC 上创建一个完整的 DB2 Ruby on Rails 开发环境。(也可以使用 alphaWorks 站点上提供的启动工具包的驱动程序源在其它平台上创建。)
也许您想知道 IBM 的 DB2 开发小组是不是真的把所有这些开源的解释性语言和富 Internet 应用程序资源考虑在内,告诉您吧,这个小组中就有一些人正在研究一种新的用于公司数据服务器(DB2 for z/OS、DB2 for Linux/Unix/Windows 和 Informix Dynamic Server)的管理控制台,这种管理控制台基于 Web,它将利用 Ajax 相关技术更好地为 DB2 管理员提供系统健康、可用性和故障排除信息(用户界面级的数据将通过与主机系统的异步通信动态地更新,所以不必等到重新装载 Web 页面)。是的,他们实现了它,并且正在使用它。
现在怎样?
好了,与数分钟之前相比,现在您对当前 Web 应用程序开发有了更多的了解(我希望如此)。您将如何利用这些知识呢?首先,希望您的应用程序开发同事在讨论编程语言和技巧时,您能理解更多的内容。能理解更多东西之后,您也可以加入那样的谈话。在讨论的过程中,您就有机会让程序员知道开源 DBMS 不是惟一可用的数据库解决方案,即使他们正在使用开源的语言编程。还有一种工业级的、高度可伸缩的、供应商支持的 DBMS,它可以非常有效地解决 Web 应用程序在数据持久层方面的需求(某些开发人员就是这样看待数据库的)。这种 DBMS 会定期得到增强,以便更好地适用于程序员们喜爱的脚本编制语言。
当然,它就是 DB2。
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者