科技: 人物 企业 技术 IT业 TMT
科普: 自然 科学 科幻 宇宙 科学家
通信: 历史 技术 手机 词典 3G馆
索引: 分类 推荐 专题 热点 排行榜
互联网: 广告 营销 政务 游戏 google
新媒体: 社交 博客 学者 人物 传播学
新思想: 网站 新书 新知 新词 思想家
图书馆: 文化 商业 管理 经济 期刊
网络文化: 社会 红人 黑客 治理 亚文化
创业百科: VC 词典 指南 案例 创业史
前沿科技: 清洁 绿色 纳米 生物 环保
知识产权: 盗版 共享 学人 法规 著作
用户名: 密码: 注册 忘记密码?
    创建新词条
科技百科
  • 人气指数: 12828 次
  • 编辑次数: 1 次 历史版本
  • 更新时间: 2009-07-15
方兴东
方兴东
发短消息
相关词条
戴夫·海厄特
戴夫·海厄特
最佳编程语录大全
最佳编程语录大全
程序员笑话大全
程序员笑话大全
下一代程序员
下一代程序员
女程序员
女程序员
彼得·诺维格
彼得·诺维格
Russ Cox
Russ Cox
15名程序员界性感的奇葩
15名程序员界性感的奇葩
Mike Kruzeniski
Mike Kruzeniski
Jeff Fong
Jeff Fong
推荐词条
希拉里二度竞选
希拉里二度竞选
《互联网百科系列》
《互联网百科系列》
《黑客百科》
《黑客百科》
《网络舆情百科》
《网络舆情百科》
《网络治理百科》
《网络治理百科》
《硅谷百科》
《硅谷百科》
2017年特斯拉
2017年特斯拉
MIT黑客全纪录
MIT黑客全纪录
桑达尔·皮查伊
桑达尔·皮查伊
阿里双十一成交额
阿里双十一成交额
最新词条

热门标签

微博侠 数字营销2011年度总结 政务微博元年 2011微博十大事件 美国十大创业孵化器 盘点美国导师型创业孵化器 盘点导师型创业孵化器 TechStars 智能电视大战前夜 竞争型国企 公益型国企 2011央视经济年度人物 Rhianna Pratchett 莱恩娜·普莱契 Zynga与Facebook关系 Zynga盈利危机 2010年手机社交游戏行业分析报告 游戏奖励 主流手机游戏公司运营表现 主流手机游戏公司运营对比数据 创建游戏原型 正反馈现象 易用性设计增强游戏体验 易用性设计 《The Sims Social》社交亮 心理生理学与游戏 Kixeye Storm8 Storm8公司 女性玩家营销策略 休闲游戏的创新性 游戏运营的数据分析 社交游戏分析学常见术语 游戏运营数据解析 iPad风行美国校园 iPad终结传统教科书 游戏平衡性 成长类型及情感元素 鸿蒙国际 云骗钱 2011年政务微博报告 《2011年政务微博报告》 方正产业图谱 方正改制考 通信企业属公益型国企 善用玩家作弊行为 手机游戏传播 每用户平均收入 ARPU值 ARPU 游戏授权三面观 游戏设计所运用的化学原理 iOS应用人性化界面设计原则 硬核游戏 硬核社交游戏 生物测量法研究玩家 全球移动用户 用户研究三部曲 Tagged转型故事 Tagged Instagram火爆的3大原因 全球第四大社交网络Badoo Badoo 2011年最迅猛的20大创业公司 病毒式传播功能支持的游戏设计 病毒式传播功能 美国社交游戏虚拟商品收益 Flipboard改变阅读 盘点10大最难iPhone游戏 移动应用设计7大主流趋势 成功的设计文件十个要点 游戏设计文件 应用内置付费功能 内置付费功能 IAP功能 IAP IAP模式 游戏易用性测试 生理心理游戏评估 游戏化游戏 全美社交游戏规模 美国社交游戏市场 全球平板电脑出货量 Facebook虚拟商品收益 Facebook全球广告营收 Facebook广告营收 失败游戏设计的数宗罪名 休闲游戏设计要点 玩游戏可提高认知能力 玩游戏与认知能力 全球游戏广告 独立开发者提高工作效率的100个要点 Facebook亚洲用户 免费游戏的10种创收模式 人类大脑可下载 2012年最值得期待的20位硅谷企业家 做空中概股的幕后黑手 做空中概股幕后黑手 苹果2013营收 Playfish社交游戏架构

James Duncan Davidson 发表评论(0) 编辑词条

(图)James Duncan DavidsonJames Duncan Davidson

James Duncan Davidson,Tomcat和Ant创始人。自由撰稿人,Java技术普及者

Duncan于1970年7月29日生于美国德克萨斯州。是自由撰稿人、演讲者以及软件顾问,他主要专注在Mac OS X、Java和XML技术。他频繁地在全世界各种会议上演讲,话题范围从开源到高效Java开发。

Duncan是Apache Tomcat和Apache Ant的原创作者,并参与促成了Sun Microsystems(太阳微系统)公司向Apache Software Foundation(阿帕奇软件基金会)的捐赠。在Sun工作期间,他创作了两个版本的Java Servlet API规范,以及Java API for XML Processing(Java版XML API)规范。

Duncan现在居住在美国加州的旧金山,可以通过网站http://duncandavidson.com/找到他。

目录

[显示全部]

个人简介编辑本段回目录

James Duncan Davidson (born July 29, 1970 in Lubbock, Texas) is an American photographer and former software developer. While a software engineer at Sun Microsystems (1997–2001), Davidson created the Tomcat Java‐based webserver application and the Ant Java‐based build tool.

(图)James Duncan DavidsonJames Duncan Davidson

He was raised in Oklahoma and Texas, and is currently self‐employed as both a software consultant and a photographer. He is a resident of Portland, Oregon.

James has in the recent past (2005–2006) turned his programming interests and attention in the direction of Ruby on Rails. In tandem with well‐known Rails guru Mike Clark, Davidson has designed and built some of the most complex and robust early Rails applications.[citation needed]

Starting in 2005, James' primary professional focus shifted to photography.[1] He has served as the primary event photographer at several high-profile technology conferences. In February 2009, he served as a photographer at the TED conference.

Apache Ant简介编辑本段回目录

Apache Ant 是一个基于 Java 的生成工具。据最初的创始人 James Duncan Davidson 介绍,这个工具的名称是 another neat tool(另一个整洁的工具) 的首字母缩写。

(图)James Duncan DavidsonJames Duncan Davidson

Ant 与 make 类似,它也定义生成文件之间的依赖关系;然而,与使用特定于平台的 shell 命令来实现生成过程所不同的是,它使用跨平台的 Java 类。使用 Ant,您能够编写单个生成文件,这个生成文件在任何 Java 平台上都一致地操作(因为 Ant 本身也是使用 Java 语言来实现的);这就是 Ant 最大的优势。

Apache Ant源缘及目的

Apache Ant 是一个基于 Java 的生成(在软件开发中用来将源代码和其他输入文件转换为可执行文件的形式)工具。最初的创始人 James Duncan Davidson Ant=another neat tool Ant 最初是 Tomcat 的一个内部组件其第一个独立版本于 2000 年 7 月发布。

它是为了解决:

随着应用程序的生成过程变得更加复杂,确保在每次生成期间都使用精确相同的生成步骤,同时实现尽可能多的自动化,以便及时产生一致的生成版本,这就变得更加重要了。

★★★★★Ant官方网站 http://ant.apache.org
★★★★☆Java爱好者Ant专题 http://www.javafan.net/special/ant

       Ant 工具估计应该不少朋友都在使用,ant也是一个不经意而成功的一个工具。
正在装载数据……
它本身是为了方便tomcat项目编译出现的,最终的用户数量却远远大于了tomcat的用户,在整个的java社区广为应用。你知道它背后的故事么,这个故事来源于ant的原始发起人James Duncan Davidson的讲述,来让我们一起来了解一下吧。

Ant的故事编辑本段回目录

       我必须承认我对Ant没有什么更多的想法,仅仅一个小小构建工具,可以走得这么远以及被众多的java社区的开发人员所使用。当我编写ant的第一个版本时候,它只是一个简单的工具用来帮助我解决跨平台的编译问题。现在它已经快速的成长,被成千上万的开发者用在不同的项目当中。这后面有什么魔力呢?这个小程序被众多的人们使用?也许ant来历的故事可以提供一些线索。

(图)James Duncan Davidson著作James Duncan Davidson著作

在ant被纳入Apache的cvs服务前,ant已经有了相当长的开发时间。在1998年中期,我在sun任职,当时负责创建java servlet2.1规范,以及涉及其实现的工作。这个实现的规范,就是后来的Tomcat,和以前的实现相比较,这是一个全新的系统,所以其实现必须是100%的纯java应用。为了取得100%的纯java认证,我们使用sun的java平台工作。你必须给Key Labs(一个中立的认证公司)证明它可以运行在三种不同的系统平台。为了证明servelt 规范的实现可以运行在任何的地方,我选择了Solaris,Windows,和Mac 系统。然而我不仅仅想实现tomcat在不同的平台上面运行,而且还想让它可以在不同的平台上面构建和开发。我曾经试用过GNU Make工具,和系统脚本以及批处理操作。然而天知道怎么回事,不同的方式都存在不同的问题。所有的问题都可能来自于我所使用的工具使用C语言开发的。当使用它们在java方面的应用时候,可以工作,但是非常的慢。尽管java程序可以很好的实现,但是虚拟机的启动太过耗时。并且使用Make会在每一个java编译的时候创建一个虚拟几。编译一个项目的时间随着项目文件的增多,编译时间则直线上升。

我试验了很多方法来编写make 文件,来解决应该使用一个javac来编译项目中的不同源文件。但是,不管我如何努力尝试,如何多次的使用Make向导,我没有得到方法最终解决一个虚拟机编译的问题。另外,让我感到非常累的时处理make文件中的tab格式。后来我对Emacs提出过建议,希望它可以解决无意创建的空格字符。

       在一次去参加欧洲会议的飞行中,我最终无法忍受创建需要运行的不同环境的不同的make文件。我开始决定开发自己的工具:可以检查一个项目中的所有源文件,比较它们最新的编译文件是否存在,然后直接调用javac编译新的java源文件。另外,它应该具有可以把一些类文件打包到一个java文件,以及可以选择复制一些文件的功能,满足不同的软件发布版本。为了确保这些事情可以工作在不同的平台上面,我决定使用java编写这个工具。    几个小时候,我有了一个可以这样运行的工具。它相当的简单,甚至有些粗遭,仅仅有几个类文件组成。我使用java.util.Properties功能实现数据层操作,而且它可以完美的工作。我的编译时间有了数量级的减少。当我返回之后,我在Solaris、Linux以及Mac系统上面做了测试,一切都非常完美。那个时候最大的问题时它仅仅有几个简单有限的功能,例如编译、复制一些文件-然而这正是它的核心功能。

(图)James Duncan DavidsonJames Duncan Davidson

在我展示这个工具的几个星期后,我命名这个工具为ant,因为这个小东西可以做大的事情。我的朋友Jason Hunter(o’reilly的servlet程序作家),他认为这是一个十分有用的工具,但也没能预料到它后来的发展。后来,我想到使用java反射功能提供一个简单的方法来扩展ant的能力,以便于程序员自己可以开发他们自己的任务来扩展它。事情开始发展,我有了第一个用户。Jason总是拥有特殊的能力发现软件中的bug,帮助我修复了其中的不少问题。

在反射功能实现以后,我又编写了更多的一些任务,ant在sun成为了一个相当有用的工具。然而,随着build文件不断变大,随着目标(任务的集合)功能的引入,属性文件不能很好的实现层次功能。我尝试着使用不同的方法解决这个问题,在一次欧洲返回的飞行中突然找到方法。就是使用XML文档的层次结构。其中也用到了以前实现XML标记解析的经验。

最终在海洋上空的飞行过程中我很好的完成了代码工作。我非常惊奇是否在高空中会增加我的能力帮助我完成任务,或者欧洲旅行给我带来了更大的创造力。更多的试验也许可以知道最终的结果。

Ant,象我们知道的一样,就这样诞生了。你现在看到的ant版本(好的或许坏的)就是来自当时的那个决定。当然,目前ant已经有了很大的改变,但是原理还是那样。在2000年后期,ant被纳入apache的tomcat旁边cvs资源库。我后来转移到其他的工作上去,主要集中在apache软件基金会的XML规范,例如sun的JAXP,以及w3c的DOM。

(图)James Duncan DavidsonJames Duncan Davidson

很让人吃惊,很多人们都在讨论Ant。第一次人们发现它工作在tomcat下面。然后它们告诉它们的朋友,然后朋友又告诉他们的朋友,等等。一些时间后,人们知道它,使用他的人竟然多于了Tomcat。一些强大的开发人员和用户社区在apache的ant下面开始成长,这个工具沿着这条路也做了很多修改。人们使用它构建各种不同的项目,从小的应用程序到巨大J2EE系统。

在2001年的JavaOne大会上,我知道了ant进入了正规发展。当时我在演示一个新的数据库开发工具,一个推荐者展示了使用设计软件在方框之间画线有多么简单。随着控制窗口的闪过,ant的每一个用户熟悉的显示过程,完整的完成了任务。我被深深的震惊了。

Ant的用户数量继续在增长。这全部都来自当时我的一个小小渴望,现在被世界上的所有java程序员所共享。也不不仅仅时java开发员,我最近以外发现了NAnt,一个Ant的.NET实现。如果我只到ant能够取得今天的巨大成功,我也许会花更多的时间,使它更加完美,更加复杂比当时发布。然而可能在易用性上面就会失败。也许ant会变得过于机械。如果我花费更多的时间让他可以完成多于工作所需要的功能,它也许变成了一个很大的工具,让它难以使用。就像我们看到的一些软件一样,例如目前的java api规范一样。这看起来有些奇怪,不想成功的ant达到了今天如此的成功。这是一个直接的答案对于这样的问题,许多人也许都发生过。我的确感到非常荣幸,幸运的发生了这个事情。

—James Duncan Davidson San Francisco, CA, April 2002

《ANT 权威指南(中文版)》序言 编辑本段回目录

必须承认,我从没有想过像Ant这样一个小小的构建工具能够发展得如此迅速,而且在Java开发者社区中会取得如此显著的地位。在我编写第一版Ant时,它只不过是有助于解决我所遇到的跨平台构建问题的一个简单工具。现在它已成长壮大起来,而且正得到世界各地成千上万开发人员的使用。其间的奥秘在哪里呢?这样一个小程序何以最终被如此众多的人所采纳呢?也许由Ant的发展历程可稍见端倪。 

(图)James Duncan DavidsonJames Duncan Davidson

早在加入Apache的CVS服务器之前,Ant就已经被编写出来。1998年中期,我在Sun公司负责创建JavaServlet 2.1规范以及相应的参考实现。我将此参考实现命名为Tomcat,它是一种全新的代码基,这是因为原来的参考实现所基于的是JavaWeb服务器的代码,这是一种由JavaSoft迁移到iPlanet的商业产品。而新的实现必须是100%纯Java的。 
为了使参考实现得到100%纯Java的证书,即便我们是Sun公司的内部人员,而且使用Java平台工作,也必须向KeyLabs(一个独立的证书公司)表明它可以在三种不同平台上运行。为了确保servlet参考实现能够随处运行,我选择了Solaris、Windows和Mac OS。另外,我不仅希望Tomcat能够在这三种平台上运行,而且希望它在所有这三种平台以及Linux上还能够构建和开发。我尝试使用了GNUMake、shell脚本、批处理文件,以及各种各样其他的工具。每种方法都存在其自己的问题。这些问题均源于一点,即所有现有的工具都无一例外地借鉴了C程序的构建。将这些做法应用于Java确实也能工作,但是很慢。即使Java程序本身可以很好地完成工作,与Java虚拟机相关的启动开销也相当大。而且,当Make为每个需要编译的文件创建一个新的VM(虚拟机)实例时,编译时间会基于一个工程中的源文件数成线性增长。 

(图)James Duncan DavidsonJames Duncan Davidson

我尝试了许多方法来编写一个make文件,从而对于需要重编译的工程,使得其中的所有源文件一次即传递给javac。但是,无论我怎样努力,无论我采用了多少种Make向导工具,仍然无法得到一种能够在多个平台上采用同一方式工作的方法。make文件中的!&#$%#制表符格式实在令我太厌烦了。即便我是Emacs的忠实支持者,我仍然无法忍受一个工具需要用Emacs来编写其文件,以确保不会出现非有意放置的空格(注1)。 

那是在欧洲参加完一个会议的返航途中,我终于彻底厌倦了,对于创建在任何环境下都能采用同样方式工作的make文件,我已不打算再去尝试了。我决心“建立”一个自己的工具:这个工具应当能够检查一个工程中的所有Java源文件,将它们与所有已编译的类相比较,并把需要编译的源文件清单直接传给javac。另外,它还应完成其他的一些工作,例如将所有的类填入一个JAR文件中,并复制另外一些文件从而建立该软件的一个可发行版本。为了确保在每个得到支持的平台上都能采用相同方式工作,我决定用Java来编写这个工具。 

(图)James Duncan DavidsonJames Duncan Davidson

数小时后,我就有了一个实用的工具。它非常简单和原始,只包括为数不多的类。其中用到了java.util.Properties的功能作为其数据层。它确实可以工作,而且相当不错,我的编译时间下降了一个数量级。回到美国后,我又在Solaris、Linux和Mac OS上对它做了测试,在所有这些平台上它均能很好地工作。当时它最大 
的问题就是其所能完成的工作仅限于编译文件和复制文件,而且此功能是硬编码的。 

数周之后,我向我的朋友JasonHunter展示了这个名为Ant的工具(注2)(之所以如此命名,是因为尽管它是一个小东西,却能够做大事,这与“蚂蚁”有着异曲同工之处),Jason是O’Reilly公司出版的《Java Servlet Programming))(译注1)一书的作者。Jason认为,作为一个工具它已像模像样,但并不觉得它会有多重要的作用。当时我正在考虑使用Java的反射功能来提供一种简洁的方法对Ant的功能加以扩充,从而使程序员可以编写其自己的任务来实现扩展,也就是说,在我提到这种想法之前,Jason并不认为Ant有太大的意义。而在此之后他的疑问顿消,于是我有了第一位Ant用户兼Ant的热心传播者。Jason还有一个非凡的能力,他能够很快地在软件的任何一部分中找出bug,并帮助我解决了不少问题。 

(图)James Duncan Davidson著作James Duncan Davidson著作

有了反射层之后,我又编写了更多的任瘢?庋鵄nt对Sun公司的其他小组也能助一臂之力。不过,构建文件的格式稍显繁琐。特性(property)文件并未确实做到层次式分组,随着任务的引入又带来了目标(任务集合)的概念。我采用了许多不同方法来解决这一问题,不过同样又是在一次从欧洲的返航途中有了解决问题的灵感。这一解决方案即为令“工程—目标—任务”层次遵循XML文档层次结构。以往的反射工作需要将XML标签名与任务实现相关联,而该解决方案还可以减轻这项工作的负担。 

最后,在横越大洋上空时,我完成了最棒的代码编写。海拔高的位置是否对产生灵感有所帮助,对此我一直感到疑惑。也有可能是到欧洲的旅行为我带来了创造力,这一点只有更多的实践才能得到验证。 
正如我们所知,Ant已经推出。你在当前使用的各版本Ant中所见的一切(包括好的和不好的),都是当时所做决定的结果。可以肯定,尽管自此已经做了许多修改,但是基础仍保持不变。2000年末,连同Tomcat一同加入到Apache的CVS工具库中的基本上即为此源代码。其后我又转向其他一些工作,主要是作为Sun公司Apache软件基金会(Apache Software Foundation)的代表,以及从事XML规范(如Sun公司的JAXP和W3C的DOM)方面的工作。 

(图)James Duncan DavidsonJames Duncan Davidson

令人难以置信的是,世界各地的人们都开始谈论Ant。最早发现它的是那些在Apache上使用Tomcat的人。然后他们开始向他们的朋友介绍,而这些朋友又向他们的其他朋友推广,如此继续。此时,更多的人们已经了解到了Ant,并且使用率甚至多于Tomcat。在Apache上开发和使用Ant的人已经形成了一个强大的群体,而在此发展道路上也已经对该工具做了许多改进。人们现在使用它来构建各种形式的工程,从很小的应用到极其庞大的J2EE应用都包括在内。 
我得知Ant被载入史册是在2001年的JavaOne大会上。当时我正在参加一个主题介绍,其中要演示一个主要数据库软件公司所推出的新的开发工具。演示者展示了通过在方框之间进行连线可以何等容易地设计软件,然后单击了构建(Build)按钮。在显示屏幕上展现的居然是每个Ant用户所熟识并视为基础的那些方括号。对此我是如此震惊,同时简直无法相信。 

(图)James Duncan DavidsonJames Duncan Davidson

Ant用户的数目仍在增长。显然我所开发的这个小东西已经为全世界Java开发人员所共享。而且还不仅仅限于Java开发人员。最近我还发现了一个NAnt,这是Ant思想针对.NET开发的一种实现(注3)。 
要是我原先知道Ant会取得如此巨大的成功,最初可能就会花费更多时间来增强其功能,使它不仅仅像现在这样只作为一个简单工具。不过,这样也许会将最初使之脱颖而出的一些特性埋没。Ant可能会设计得过于复杂。如果我花费太多时间来使之能够完成超出我的需求之外的工作,它就有可能成为一个过于庞大的工具,而且也可能过于“笨重”以至于难以使用。这种情况在软件行业屡见不鲜,特别是目前所提出的许多JavaAPI更是如此。 
Ant成功的秘诀可能就在于它原本没有打算成功。它只是针对许多人所遇到的一个明显问题而提出的一个简单解决方案。作为解决这一问题的幸运儿,我感到颇为自豪。 

你手中的这本书将指导你如何使用当前的Ant。Jesse和Eric将教你如何高效地使用Ant,以及如何对其扩展,并告诉你将如何使用各种不同任务(包括内置任务和广泛使用的可选任务)。另外,对于某些Ant设计决策,作者还将提供一些技巧从而避免其本身的缺陷。 
在由他们接手为你提供有力的指导之前,我还有最后一句话要告诉你:只要可能,就应自行解决自己的切肤之痛。如果已有的工具不能满足你的需求,就应当另找一个工具。如果不存在这样的工具,那么就创建一个。而且要确保与大家共享。 
其他数以千计的人可能有着与你类似的难题。 
——James Duncan Davidson 
旧金山,加利福尼亚州,2002年4月 

James Duncan Davidson:尝试新事务编辑本段回目录

   假如你使用Tomcat或者Ant(认真地说,什么Java开发人员什么使用过?)那么你就熟悉了James Duncan Davidson的工作了。在Sun,他致力把这些项目开源并且把他们捐献给Apache基金会。并且他也编写了Servlet API的最初两个版本,还有处理XML的Java API.离开Sun之后,他做起了Mac OS 的X开发。编写《Running Mac OS X Panther》和参与编写了《Running Mac OS X Tiger》,《 Mac OS X Panther Hacks》,《 Cocoa in a Nutshell》和《Learning Cocoa with Objective-C, 2nd Edition》

参考文献编辑本段回目录

→如果您认为本词条还有待完善,请 编辑词条

词条内容仅供参考,如果您需要解决具体问题
(尤其在法律、医学等领域),建议您咨询相关领域专业人士。
0

标签: James Duncan Davidso

收藏到: Favorites  

同义词: James Davidson

关于本词条的评论 (共0条)发表评论>>

对词条发表评论

评论长度最大为200个字符。