<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
  <channel>
    <title>陈增鹏的空间</title>
    <description>现在是系足球队老大,希望以后是公司老大````
这要求````呵呵`````</description>
    <link>http://chenzengpeng.javaeye.com</link>
    <language>UTF-8</language>
    <copyright>Copyright 2003-2008, JavaEye.com</copyright>
    <docs>http://blogs.law.harvard.edu/tech/rss</docs>
    <generator>JavaEye - 做最棒的软件开发交流社区</generator>
      <item>
        <title>项目开发中最难的问题</title>
        <author>chenzengpeng</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://chenzengpeng.javaeye.com">chenzengpeng</a>&nbsp;
          链接：<a href="http://chenzengpeng.javaeye.com/blog/213143" style="color:red;">http://chenzengpeng.javaeye.com/blog/213143</a>&nbsp;
          发表时间: 2008年07月09日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          最近在帮学校做一个招标网站,一个以前做过ASP.NET项目的老师带着做````出于对J2EE的爱好,自己比较喜欢用J2EE来实现``后来经过我们的努力和申请,带我们的老师同意了```跟我们班另外一个人一起做```他懂的J2EE的东西比我多````<br />开始时雄心勃勃````希望通过这次小项目让自己对项目开发有一个彻底的了解``因为要按软件工程的要求做``不像以前一样都是按照自己的思路做的``下载了软件工程的文档,我们的项目计划开始了`````<br />做了一段时间项目了``可行性研究、需求分析、概要设计即将完成。<br /><span style="color: red"><span style="font-size: medium">感触最深的一点就是，需求分析真的是很难很重要！！</span></span><br />项目开始前出于一些WEB的开发经验和现有的自己的水平，对用户的需求分析做了自己的定义。后来去跟用户交流了他们的要求```唉，别提了，他们提供给我们的文档居然跟他们要求的功能是不一样的``而且还存在的不少问题```使得我们前期的数据流图也要流产了````而且我们前期也做了数据库的概要设计``还要改改```<br />需求分析真的是太重要了````<br />不知道项目开发中最难的是什么``希望在接下来的开发过程中慢慢体会```
          <br/>
          <span style="color:red;">
            <a href="http://chenzengpeng.javaeye.com/blog/213143#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 09 Jul 2008 16:18:16 +0800</pubDate>
        <link>http://chenzengpeng.javaeye.com/blog/213143</link>
        <guid>http://chenzengpeng.javaeye.com/blog/213143</guid>
      </item>
      <item>
        <title>即将大四,随感!!</title>
        <author>chenzengpeng</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://chenzengpeng.javaeye.com">chenzengpeng</a>&nbsp;
          链接：<a href="http://chenzengpeng.javaeye.com/blog/199994" style="color:red;">http://chenzengpeng.javaeye.com/blog/199994</a>&nbsp;
          发表时间: 2008年06月04日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          时间过真快,一转眼时间这学年又结束了。<br />大一，大二，大三```<br />该拿的荣誉证书都拿了```<br />以前听别人忽悠说，大三是人生的分水岭，以后的前途和定位就看现在的了。真的是这样````先是接触了JAVA和C#语言，然后现在是在学习J2EE（个人最大的兴趣，自学）和.NET平台（在上印度的NIIT（印度国家信息学院的培训））。先是从一点不懂，到现在是渐渐入门和深入，感触真的是颇多。虽然还没毕业也不知道以后的路，但感觉这一年自己学习到的东西真的是最实用的东西，其实时间还是不够，还不能很好的深入学习。为了以后从事软件开发，现在放弃了考研的机会。希望能在计算机应用和J2EE开发方面有更好的深入和掌握。<br />快暑假了，准备在杭州找个实习公司，不管怎么样，先做着，但能不能找到就要看自己了。相信自己！！
          <br/>
          <span style="color:red;">
            <a href="http://chenzengpeng.javaeye.com/blog/199994#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 04 Jun 2008 10:05:23 +0800</pubDate>
        <link>http://chenzengpeng.javaeye.com/blog/199994</link>
        <guid>http://chenzengpeng.javaeye.com/blog/199994</guid>
      </item>
      <item>
        <title>《大腕》经典对白之J2EE框架</title>
        <author>chenzengpeng</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://chenzengpeng.javaeye.com">chenzengpeng</a>&nbsp;
          链接：<a href="http://chenzengpeng.javaeye.com/blog/192191" style="color:red;">http://chenzengpeng.javaeye.com/blog/192191</a>&nbsp;
          发表时间: 2008年05月12日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          今天看到一个帖子巨牛···跟大家分享一下。<br />J2EE框架------仿《大腕》经典对白： <br /><br />一定要找那最流行的框架， <br />用功能最强大编辑器， <br />做就要做最复杂的系统， <br />轻量级的绝对不行， <br />框架最简单也得是ＳＰＲＩＮＧ， <br />什么ＥＪＢ啊，ＨＩＢＥＲＮＡＴＥ啊，ＳＥＡＭ啊，能用的全都得用上， <br />表现层要可配置、持久层要可替换， <br />程序最好能用一万年， <br />客户一见面，甭管有事没事， <br />都得问人家：您准备换框架不？ <br />系统还得能够集群 <br />访问量再小也得同时开１０几台服务器 <br />一天２４小时在线 <br />火星撞地球了都能提供服务 <br />服务器上跑得都是weblogic、websphere <br />你要用一jboss，都不好意思跟人家打招呼 <br />你说这系统，得做多长时间？ <br />（怎么地也得５年吧？） <br />５年？那是一期工程， <br />１０年起， <br />你得揣摩老板的心理， <br />愿意花５年开发一套系统的老板， <br />根本就不在乎再多等５年， <br />什么是软件工程你知道么？ <br />软件工程就是，搞什么都不用最好的，用最复杂的 <br />所以我们口号就是： <br />不求最好，但求最复杂。 <br />转自：http://www.javaeye.com/topic/177070
          <br/>
          <span style="color:red;">
            <a href="http://chenzengpeng.javaeye.com/blog/192191#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 12 May 2008 12:55:28 +0800</pubDate>
        <link>http://chenzengpeng.javaeye.com/blog/192191</link>
        <guid>http://chenzengpeng.javaeye.com/blog/192191</guid>
      </item>
      <item>
        <title>关于struts1.2中的一些问题，请教大家了。</title>
        <author>chenzengpeng</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://chenzengpeng.javaeye.com">chenzengpeng</a>&nbsp;
          链接：<a href="http://chenzengpeng.javaeye.com/blog/191724" style="color:red;">http://chenzengpeng.javaeye.com/blog/191724</a>&nbsp;
          发表时间: 2008年05月10日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <strong>还是一个在校的大学生，由于对J2EE特别的感兴趣，所以特别的想学SSH框架。<br />最近正在认真学习struts1.X系列中，今天在写一个简单的用户登陆过程中遇到了一些问题。<br />首先在写自己的LoginAction方法时，定义了ActionError的一个实例errors，当登陆失败时在调用errors.add(,)时遇到了问题，提示说我的ActionError类已经过时，后来看到网上说现在1.X系列的版本已经去掉了ActionError类的支持，郁闷···后来用ActionMessages类来代替完成了相应的功能。<img src="/images/smiles/icon_cry.gif"/><br />这个问题解决后又遇到了一个问题，在写struts-config.xml配置时，用到了action中的属性input="/login.jsp"，想问下大家这个代表输入的信息是login.jsp传递给struts的相应的From的吗？<br />在用struts的From时，直接调用相应的getXX（）方法可以直接得到在login.jsp中输入的信息吗？为什么我的得不到相应的值呢？是不是还需要调用什么代码？<img src="/images/smiles/icon_arrow.gif"/></strong>
          <br/>
          <span style="color:red;">
            <a href="http://chenzengpeng.javaeye.com/blog/191724#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sat, 10 May 2008 13:44:19 +0800</pubDate>
        <link>http://chenzengpeng.javaeye.com/blog/191724</link>
        <guid>http://chenzengpeng.javaeye.com/blog/191724</guid>
      </item>
      <item>
        <title>软考证书（我的感受）</title>
        <author>chenzengpeng</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://chenzengpeng.javaeye.com">chenzengpeng</a>&nbsp;
          链接：<a href="http://chenzengpeng.javaeye.com/blog/190752" style="color:red;">http://chenzengpeng.javaeye.com/blog/190752</a>&nbsp;
          发表时间: 2008年05月07日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          现在还是大学生，可是一年半之后就离开学校了·<br />一年前还是想考研的，但现在还是放弃了这个计划，因为感觉计算机行业实践比理论有用得多，不然干吗还有个“最佳实践”呢···所以决定考证··<br />不过也有人说，证书有什么用，是的，是没用，但是在进公司之前还是看得这个，毕竟公司无法在短时间内评价一个人。<br />软考的话，更多的还是软件工程的知识，现在在学《软件工程》，学得时候恨不得把它整本书背下来。最大的感触就是学来学去还是软件工程的东西。<br />JAVA学习的计划现在已经进入了白热化的阶段，感觉水平比刚开始时好了不少··面对太多的JAVA的东西要学了··<br />问问高手们，你们当初进公司时最深的感受是WHAT？
          <br/>
          <span style="color:red;">
            <a href="http://chenzengpeng.javaeye.com/blog/190752#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 07 May 2008 22:53:38 +0800</pubDate>
        <link>http://chenzengpeng.javaeye.com/blog/190752</link>
        <guid>http://chenzengpeng.javaeye.com/blog/190752</guid>
      </item>
      <item>
        <title>native2ascii使用到的一些编码格式</title>
        <author>chenzengpeng</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://chenzengpeng.javaeye.com">chenzengpeng</a>&nbsp;
          链接：<a href="http://chenzengpeng.javaeye.com/blog/188714" style="color:red;">http://chenzengpeng.javaeye.com/blog/188714</a>&nbsp;
          发表时间: 2008年05月01日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          背景：在做Java开发的时候，常常会出现一些乱码，或者无法正确识别或读取的文件，比如常见的validator验证用的消息资源（properties）文件就需要进行Unicode重新编码。原因是java默认的编码方式为Unicode，而我们的计算机系统编码常常是GBK等编码。需要将系统的编码转换为java正确识别的编码问题就解决了。<br /><br />1、native2ascii简介：native2ascii是sun java sdk提供的一个工具。用来将别的文本类文件（比如*.txt,*.ini,*.properties,*.java等等）编码转为Unicode编码。为什么要进行转码，原因在于程序的国际化。Unicode编码的定义：Unicode（统一码、万国码、单一码）是一种在计算机上使用的字符编码。它为每种语言中的每个字符设定了统一并且唯一的二进制编码，以满足跨语言、跨平台进行文本转换、处理的要求。1990年开始研发，1994年正式公布。随着计算机工作能力的增强，Unicode也在面世以来的十多年里得到普及。（声明：Unicode编码定义来自互联网）。<br /><br />2、获取native2ascii：安装了jdk后，假如你是在windows上安装，那么在jdk的安装目录下，会有一个bin目录，其中native2ascii.exe正是。<br /><br />3、native2ascii的命令行的命名格式：<br />native2ascii -[options] [inputfile [outputfile]]<br /><br />说明： <br />-[options]：表示命令开关，有两个选项可供选择<br />-reverse：将Unicode编码转为本地或者指定编码，不指定编码情况下，将转为本地编码。<br />-encoding encoding_name：转换为指定编码，encoding_name为编码名称。<br />[inputfile [outputfile]]<br />inputfile：表示输入文件全名。<br />outputfile：输出文件名。如果缺少此参数，将输出到控制台。<br />4、最佳实践：首先将JDK的bin目录加入系统变量path。在盘下建立一个test目录，在test目录里建立一个zh.txt文件，文件内容为：“熔岩”，打开“命令行提示符”，并进入C:\test目录下。下面就可以按照说明一步一步来操作，注意观察其中编码的变化。<br /><br />A：将zh.txt转换为Unicode编码，输出文件到u.txt<br />native2ascii zh.txt u.txt<br />打开u.txt，内容为“\u7194\u5ca9”。<br />B：将zh.txt转换为Unicode编码，输出到控制台<br />C:\test>native2ascii zh.txt<br />\u7194\u5ca9<br />可以看到，控制台输出了“\u7194\u5ca9”。<br />C：将zh.txt转换为ISO8859-1编码，输出文件到i.txt<br />native2ascii -encoding ISO8859-1 zh.txt i.txt<br />打开i.txt文件，内容为“\u00c8\u00db\u00d1\u00d2”。<br />D：将u.txt转换为本地编码，输出到文件u_nv.txt<br />native2ascii -reverse u.txt u_nv.txt<br />打开u_nv.txt文件，内容为“熔岩”。<br />E：将u.txt转换为本地编码，输出到控制台<br />C:\test>native2ascii -reverse u.txt<br />熔岩<br />可以看到，控制台输出了“熔岩”。<br />F：将i.txt转换为本地编码，输出到i_nv.txt<br />native2ascii -reverse i.txt i_nv.txt<br />打开i_nv.txt文件，内容为“\u00c8\u00db\u00d1\u00d2”。发现转码前后完全一样的。也就是说，等于没有转，或者说思想糊涂，对命名没有理解。。<br /><br />G：将i.txt转换为GBK编码，输出到i_gbk.txt<br />native2ascii -reverse -encoding GBK i.txt i_gbk.txt<br />打开i_gbk.txt文件，内容为“\u00c8\u00db\u00d1\u00d2”。发现转码前后完全一样的。也就是说，等于没有转，或者说思想糊涂，对命名没有理解。<br /><br />H：将u_nv.txt转码到本地编码GBK，输出到控制台<br />C:\test>native2ascii -reverse -encoding ISO8859-1 i.txt<br />熔岩<br />从这个结果看，目标达到到了，编码i.txt为ISO8859-1，转为本地编码后内容为“熔岩”。从这里应该意识到，native2ascii -reverse命令中-encoding指定的编码为源文件的编码格式。而在native2ascii 命令中-encoding指定的编码为（生成的）目标文件的编码格式。这一点非常的重要！切记！！<br /><br />继续探索，新建文件12a.txt，内容“12axyz”。看看纯字母数字的编码又如何。<br /><br />I：将纯字母数字的文本文件12a.txt转换为Unicode编码<br />native2ascii 12a.txt 12a_nv.txt<br />打开12a_nv.txt文件，内容为“12axyz”。<br />继续测试，转为ISO8859-1编码看看<br />C:\test>native2ascii -encoding ISO8859-1 12a.txt<br />12axyz<br />结果还是没有转码。<br />从结果可以得出结论：对于纯数字和字母的文本类型件，转码前后的内容是一样的。<br /><br />5、总结：native2ascii是一个非常的好转码工具，并且转码是可逆的！而其真正的含义并非本地编码——>转码为ASCII码，而是一个通用的文本文件编码转换工具。在做编码转换的时候有两类指定编码的情形，分别指输出文件编码和输入文件编码，具体可以看看最佳实践部分。
          <br/>
          <span style="color:red;">
            <a href="http://chenzengpeng.javaeye.com/blog/188714#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 01 May 2008 21:26:02 +0800</pubDate>
        <link>http://chenzengpeng.javaeye.com/blog/188714</link>
        <guid>http://chenzengpeng.javaeye.com/blog/188714</guid>
      </item>
      <item>
        <title>程序员谈如何掌握计算机专业英语(转凌风阁论坛 )</title>
        <author>chenzengpeng</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://chenzengpeng.javaeye.com">chenzengpeng</a>&nbsp;
          链接：<a href="http://chenzengpeng.javaeye.com/blog/188263" style="color:red;">http://chenzengpeng.javaeye.com/blog/188263</a>&nbsp;
          发表时间: 2008年04月30日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          干程序员是一项很辛苦的工作，要成为一个高水平的程序员尤为艰难。这是因为计算机软件技术更新的速度越来越快，而这些技术大多来源于英语国家，我们在引进这些技术时往往受到语言障碍的制约，严重影响到对新技术的理解和消化。首先编程本身就依赖于英语，虽然现在技术的发展，可以使得某些开发工具在变量名和字段名中支持中文，但还未发现能够完全使用中文的编程语句。其次，软件开发中的技术文档和资料大都是来自英文，即使有翻译好的，不是晦涩难懂，就是译法混乱，比如:roll back就有"回滚"、"回退"、"返回"、"重算"等多种译法，又如我们遇到翻译后的术语"域"，往往不清楚译者是根据"field"、"region"还是"domain"所译(如果阅读原文则不存在这些问题)。还有更重要的一点，这就是等待译文会严重影响我们掌握新技术的时间。通常，一本外版计算机图书从获得版权到翻译出版要一年的时间。就算原作者消化新技术和写作的时间最短为一年，那么加起来这已经超过通常软件版本的更新周期(软件版本的更新周期一般是1年至2年)，这意味着当你通过阅读翻译资料掌握这一版本的软件时，可能该版本已经淘汰至少是面临淘汰。 <br />　　当然，这并不是说国内没有好的译者和译文，也不是说不能通过阅读译文来进行学习。而是说通过别人翻译的间接阅读风险较大，如果能掌握计算机英语，利用第一手原文资料进行学习，除了效率之外，被误导的风险较小。比如:国内引进的一部外版好书《Java编程思想》(原书名《Think in Java》)，其翻译水平较差，就严重影响了阅读和学习，不少读者深有体会。如果读着有着过硬的计算机英语水平就可以按照书上提供的作者网址下载原文阅读，不但可以获得原汁原味的感受，还可以免费下载该书最新的第二版。<br /><br />　　因此，我们可以得出这样的结论，干程序员这行实在是离不开英语。实际上，可以毫不夸张地说英语是IT的行业语言。由于英语的优势，印度、爱尔兰等国的软件业在国际上比我们更有竞争力，这并不是说我们的程序员在编程和开发能力上不如别人，而是在使用计算机英语水平上差距太大。不久前在南京举办的一次高规格的软件开发交流会上，就遇到过印度专家讲课，英文翻译译不下去的情景，因为太多的IT专用术语和缩略语以及很强的专业知识使得没有计算机背景的英语专业翻译无能为力，而在场的开发人员因为语言障碍又无法和印度专家直接沟通，错过了一次极好的交流学习机会。现在，已经有越来越多的程序员意识到计算机英语的重要性了，这种压力一方面来自进一步向高级程序员或资深IT开发人员发展的需要，一方面来自于后起之秀不断竞争的威胁。对于前者，没有较好的计算机英语，能难进一步发展，晋升到更高的技术职位;对于后者，不少大学已经开始使用原版教科书进行专业授课，毕业生的计算机英语水平实在是后生可畏，挑战是不言而喻的。<br /><br />　　那么，一个程序员应该怎样去学习和掌握计算机英语呢?是立即开始背英汉计算机字典还是先考完6级再考"托"考"G"?其实，在下定决心之后最关键的是要搞清6个W，即:为什么学(why)、学什么(what)、怎样学(how)、何时学(when)、何处学(where)、跟谁学(who)。下面我们就谈一谈这6个W.<br /><br />　　首先是为什么要学计算机英语。几乎所有的程序员都知道学习计算机英语的重要性，但并不是所有人都具有学习的主动性。这个问题的提出就是要让我们从自身的需求出发，掌握学习的主动性。一旦你有强烈的学习动机，任何学习上的困难都不会认你屈服，而你的每一点进步都将给你带来无比自豪的感觉。<br /><br />　　学什么，是死背单词?还是猛抠语法?其实都不是。计算机英语的学习是一项系统工程，需要找到一个适合自己的学习目标，并从词汇、语法、阅读、写作多方面去融汇贯通。用程序员的术语讲，"学什么"的问题本质上是一个"确定系统边界"的问题。应为学习计算机英语是一个很宽泛的概念，若不根据个人的具体情况进行定义，恐怕难以有一个可以管理学习目标。无目标的或边界不清的项目往往是失败的项目，在学计算机英语的问题上也是一样。因此，我们先要根据自己的实际英语水平和工作需要界定计算机英语学习的系统边界。关于实际英语水平，我们可以简单地以大学非英语专业的英语教育作为参考，以通过大学英语四级考试(CET4)作为基线，即如果你通过了CET4，则表明你的英语水平为中高级，词汇量接近5千，不存在基本的语法问题，有一定的读写能力;如果你没有通过CET4，则表明你的英语水平为初中级，词汇量不足4千，可能存在一些语法问题，读写能力较弱。关于工作需要，我们可以将计算机英语学习对象划分成计算机研发人员、泛IT人员。其中计算机研发人员是指从事计算机研究和开发的专业人员，他们又划分为软件研发和硬件研发，显然程序员是属于前者。计算机研发人员要掌握的计算机英语最专业，要求最高，但软件硬件各有侧重。泛IT人员是指在IT行业从业的或与IT行业有密切联系的那些非研发人员，包括操作使用人员、技术管理人员、支持服务人员等等。不难看出，泛IT人员对计算机英语的要求不是太高，也不太专业，一般能够使用英文界面的软件，能够阅读原版的操作手册和说明书即可。针对以上的划分，我在下表中大致给出了计算机英语的学习目标:<br /><br />　　计算机英语的学习目标<br /><br />　　初中级 中高级泛IT行业人员 掌握计算机英语的基本术语;了解计算机英语中常用的语法和惯用法;能借助字典阅读英文界面和在线帮助以及简单的操作手册，阅读熟读在70-90词/分钟。 掌握计算机英语的常用术语和缩略语; 掌握计算机英语中语法和惯用法的表达方式和功能;能借助字典阅读英文文档和技术资料，阅读熟读在100词/分钟以上;能使用英文编写简单的文档。<br /><br />　　计算机研发人员 掌握计算机英语的常用术语和缩略语;熟悉计算机英语中的语法和惯用法;能阅读英文界面和在线帮助以及简单的操作手册，阅读熟读在80-100词/分钟。 掌握大量的计算机英语术语和缩略语;熟练掌握计算机英语中语法和惯用法的表达方式和功能;能阅读英文文档和技术资料，阅读熟读在100词/分钟以上;能借助字典翻译专业技术图书；能使用英文编写简单的技术文档和程序注释。<br /><br />　　知己知彼，百战不殆。在了解了学习计算机英语的一般要求之后，接下来就需要对自己的具体情况进行具体分析，制定一个学习计划或简单地定一个学习方向。作为程序员学习计算机英语的根本目的是为了提高自己在英语环境中掌握计算机技术的能力，所以学习的内容应该是围绕本专业的领域展开。对于没有上过计算机专业英语课程的程序员来说，学习的重点应该是掌握专业词汇和术语，了解计算机英语的一些规范译法和习惯用法。对于有一定计算机英语基础的程序员则应该把重点放在提高阅读速度和阅读质量上，并逐渐习惯使用英语注释程序撰写文档。<br /><br />　　在明确学习目的和学习方向之后，还必须有一个好的学习方法，"怎样学"就是一个学习方法问题。这其中还包含了何时学、何处学、跟谁学等一系列问题。在这里我建议把短期的系统学习和长期的日常学习结合起来，这样做的效果最好，也最科学。所谓短期的系统学习是指集中一段时间系统地学习计算机英语，这对于没有参加过大学计算机英语课程学习程序员尤为重要。而日常的学习则是指在日常工作用有意识地多接触和多使用计算机英语，边用边学，持续不断地积累提高。下面我就从这两个方面来具体谈一谈。<br /><br />　　要系统地学习计算机英语，最好是参加专门的计算机英语课程培训班。培训班的选择非常重要，好的老师、成功的办学经验和系统的课程设置都是选择的重要依据。然而大多数程序员工作繁忙，可能采取的方式多是自学了。如果不能选择一位好老师，那就只能选择一本好教材了。一本好的计算机英语教材对系统地学习计算机英语帮助极大。目前市面上的计算机英语教材多达30种，在选择教材时不少程序员往往无从下手，大家不妨从以下几方面进行考虑:<br /><br />　　教材的难易程度--对于不同学历层次有不同的教材，选择教材是一定要看清该教材的培训对象是中专、大专、本科还是研究生。选择难易程度适合自己的教材，太简单则不利于提高、太难则容易使学习受挫。<br /><br />　　教材的专业侧重--有的计算机英语教材偏重于硬件，有的偏重于软件，还有的教材是信息电子类的计算机英语，侧重于通信电子方面，比如:汇编语言、单片机等。另外有的教材侧重于理论，如:数据结构、离散数学;而有的则侧重于应用，如:软件工程、数据库开发。所以程序员在选择计算机英语教材时，应仔细察看书中的内容，以免偏离软件开发的实际工作需要。<br /><br />　　教材的体系结构--目前计算机英语教材主要分为按语法体系组织和按计算机体系组织的两种结构。如果你是初中级的英语水平建议使用前者，如果你是中高级的英语水平建议使用后者。<br /><br />　　教材的易用性--教材的易用性是指教材的编排是否符合人们的学习习惯。虽然计算机英语是专业课程教材，但如果编排活泼、图文并茂、注解查阅方便肯定能调动学习的兴趣，降低阅读的难度。这方面国内的教材应该多向国外的教材学习。<br /><br />　　然而国内许多大学的计算机英语课程作为专业英语教学起步较晚，而早期出版的计算机英语教材大多出自于任课老师收集的计算机英文资料，教材规划不够系统，编排也比较简单。这些教材虽然使用的学校较多，为早期的计算机英语教学做出过不可磨灭的贡献，但致命的弱点是内容陈旧、与时代脱节。最典型的代表是清华大学出版社的《计算机英语》，该书最新版本是1997年更新的，里面还充斥着Dos这样的陈旧内容。有些老师苦于没有新颖实用的计算机英语教材，于是一本国外的计算机入门读物《Computing Essentials》(McGraw-Hill出版公司)被许多大学选用为计算机英语教材，效果极佳。这本书现在已经由高等教育出版社影印发行，书名是《计算机专业英语》。该书的特点是:时效性强(版本更新快)，新颖实用，编排活泼。但对于中高级英语水平的专业开发人员未免有点太浅。<br /><br />　　我们在分析和研究了市面上大量计算机英语教材的基础上，又结合计算机英语教学和学习经验，编写了一本非常适合于软件开发人员的《计算机英语》，该书已经由机械工业出版社出版，是该社"重点大学计算机教材"系列中的一本。需要说明的是该书最适合的读者对象为英语达到CET4的程序员，因为该书的选材直接来自国外计算机教材和出版物、技术文档和专业论文、IT精英的言论以及计算机方面的大百科全书，这样的选材在保持原汁原味的同时使学习者更能接触到计算机英语的真实语境和主流思想，虽然有一定的难度，但非常实用和专业。同时为便于学习，我们为超出CET4的词汇和一些专业术语都进行了注释，而且注释就在课文旁边，免去了翻查生词表的麻烦。这本书适合于程序员的另一条重要原因是全书侧重于软件和应用，没有枯燥繁琐的理论。计算机英语是用来学习专业英语的，而不是用来学习计算机理论的。我们没有像其他的计算机英语教材那样，充斥了大量难懂的计算机理论文章，而这些理论本身就非常难学。这本教材与其它计算机英语教材不同的地方还在于它更关注计算机素养、计算机应用以及IT对社会和生活的深刻影响。在这里我们可以聆听到IT精英比尔。盖茨和IBM公司CEO郭士纳的精彩演讲，也能拜读到英特尔公司前总裁葛洛夫的惊世之作《只有偏执狂才能生存》的序言。<br /><br />　　系统学习计算机英语，这里的系统性包括了计算机体系的系统性和英语语言的系统性，我们在学习时必须时刻牢记。除了借助计算机英语教材系统地了解计算机硬件软件、操作系统、软件工程、编程语言、网络通信、信息安全、应用系统等诸方面的英语表达和专业词汇外，还要对英语语言本身从听、说、读、写四个方面下功夫，以免出现偏废。有些程序员就是因为在听和说方面偏废，以至于影响到出国发展。如何加强听和说的训练，这是关于英语学习的话题，我自己的一个经验是多看原版电影(VCD/DVD)以提高听力(当然不能看字幕)，多参加英语聊天(英语角)以提高口语。<br /><br />　　计算机英语的学习不同于考"托"考"G"，无法靠短期的突击来完成。长期的日常学习尤为重要。所谓的日常学习并不需要你抛开工作，安排专门的时间，而是边用边学。比如，你为了解决编程上的一个问题，查阅英文的帮助或技术资料。然而，不少程序员不太喜欢看英文，他们喜欢使用中文版的软件，喜欢汉化的帮助，喜欢读翻译好的书。这实际上就错过了许多日常学习计算机英语的机会。不可否认，读中文肯定比读英文方便，节省时间，但从长期的发展来看，弊大于利。这种对翻译的依赖使许多程序员失去了获取一手资料的宝贵机会。<br /><br />　　其实，既然你已经通过对计算机英语的系统学习掌握了一定数量的专业词汇，就完全可以借助字典去使用那些原文资料和在线帮助，加上有金山词霸这样的工具，阅读原文并不很困难，关键是一个习惯问题。我有一个朋友，在自己的电脑里从不装任何中文版或汉化软件，连上网聊天也坚持用英文。几年下来英语突飞猛进，效果甚佳，有志者不妨一试。<br /><br />　　在日常工作中大量阅读英文书籍和资料是提高计算机英语水平的最佳途径。目前市场上大量的计算机原版影印图书为我们提供了绝好的机会。阅读英文计算机图书一开始是"啃"的感觉，比较费时费力，对于不太好读的地方，不妨拿起笔来逐行逐字翻译出来，这样对提高英语水平很有帮助。对于有经验的程序员可以利用自己的专业背景知识和上下文(Context)进行大胆推测，这样有利于提高阅读速度。即使是不求甚解，也不要紧，你可以通过多读同类书来弥补。原版计算机书读多了，你会发现一些很有规律的东西和一些常用的词汇，这些来自实践的经验非常宝贵，并让你终生受益。一般在完整阅读2-3本原版书以后，你就能发现读原版书的乐趣。值得一提的是读原版书的真正乐趣并非只是在于提高英语水平，而更是在于获得一种和西方人一致的思维方式，这种思维方式对学习计算机技术极为有益，因为计算机技术甚至现代科学体系都是建立在这种思维方式的基础之上的。坚持阅读英文计算机图书可以达到"品"的感觉，这种感觉是指在阅读时无需将英文转换为中文，而是直接用英文和作者在同一个水平线上进行思考和交流。至此，我们获得的不仅是英语水平的突破，更是计算机水平的突破。这也是许多计算机高手成功的秘密。<br /><br />　　如果你有一定的英语基础，并希望突破计算机英语的障碍并成为高手，从现在起就养成一个学用计算机英语的良好习惯吧。<br /><br />　　1、给自己起一个英文名字。并用作网名和登录名。<br />　　2、选一本适合自己的计算机英语教材。<br />　　3、保证一年至少读1-2本原版影印的计算机书，并坚持读完。<br />　　4、上网尽量多访问英文的技术论坛和网站，不使用汉化的帮助。<br />　　5、在程序中使用英文注释，坚决不用中文或汉语拼音作变量名、字段名、文件和文件夹名。<br />　　6、每月至少看1-2部原版电影(VCD/DVD)，尽量不看字幕，提高语感和听力。<br />　　7、不看中英文对照读物，但可以看注释读物；多使用英英字典，少使用英汉字典。<br />　　8、每天坚持记录和复习遇到的生词，对于缩略语，一定搞清每个字母的英文含义
          <br/>
          <span style="color:red;">
            <a href="http://chenzengpeng.javaeye.com/blog/188263#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 30 Apr 2008 08:48:34 +0800</pubDate>
        <link>http://chenzengpeng.javaeye.com/blog/188263</link>
        <guid>http://chenzengpeng.javaeye.com/blog/188263</guid>
      </item>
      <item>
        <title>Java开发者需坚守的十大基本准则</title>
        <author>chenzengpeng</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://chenzengpeng.javaeye.com">chenzengpeng</a>&nbsp;
          链接：<a href="http://chenzengpeng.javaeye.com/blog/186446" style="color:red;">http://chenzengpeng.javaeye.com/blog/186446</a>&nbsp;
          发表时间: 2008年04月24日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          来源；IT168<br />　　有许多标准和实践准则可适用于Java开发者，但此处要说的，是每个Java开发者需坚守的基本原则。<br /><br />　　一、为代码加注释。虽然每个人都知道这点，但有时却不自觉忘了履行，今天你“忘了”加注释了吗？虽然注释对程序的功能没什么“贡献”，但过一段时间，比如说两星期之后或者更长，回过头来看看自己的代码，说不定已经记不住它是干什么的了。如果这些代码是你个人的，那还算是走运了，不幸的是，当然了，大多数时候都是别人的不幸，很多时候大家都是在为公司写代码，写代码的人也许早已经离开了公司，但别忘了一句古话，有来有往嘛，为他人，也为我们自己，请为你的代码加上注释。<br /><br />　　二、不要让事情复杂化。程序员有时候总是对简单问题想出复杂的解决方案，比如说，在只有五个用户的程序中引入EJB、对程序实现了并不需要的框架（framework），之类的还有属性文件、面向对象解决方案、多线程等等。为什么要这样做呢？也许我们并不知道是否这样会更好，但这样做也许可以学到一些新东西，或者让自己更感兴趣一些。如果是不知道为什么这样做，建议多请教经验丰富的程序员，如果是为了个人的目的，麻烦让自己更专业一点。<br /><br />　　三、始终牢记——“少即是好（Less is more）并不总是对的”。代码效率虽然很重要，但在许多解决方案中，编写更少的代码并不能改善这些代码的效率，请看下面这个简单的例子：<br /><br /><pre name="code" class="java">if(newStatusCode.equals("SD") && (sellOffDate == null ||
todayDate.compareTo(sellOffDate)＜0 || (lastUsedDate != null &&
todayDate.compareTo(lastUsedDate)＞0)) ||
(newStatusCode.equals("OBS") && (OBSDate == null ||
todayDate.compareTo(OBSDate)＜0))){
newStatusCode = "NYP"; 
}</pre><br />　　能看明白if条件语句是干什么的吗？能想出来是谁写的这段代码吗？如果把它分成两段独立的if语句，是不是更容易理解呢，下面是修改后的代码：<br /><br /><pre name="code" class="java">if(newStatusCode.equals("SD") && (sellOffDate == null ||
todayDate.compareTo(sellOffDate)＜0 || (lastUsedDate != null &&
todayDate.compareTo(lastUsedDate)＞0))){
newStatusCode = "NYP"; 
}else
if(newStatusCode.equals("OBS") && (OBSDate == null ||
todayDate.compareTo(OBSDate)&lt;0))
{
newStatusCode = "NYP"; 
}</pre><br />　　是不是读起来容易多了呢，在此只是多加了一个if和两个花括号，但代码的可读性与可理解性就一下子提高了一大截。<br /><br />　　四、请不要硬编码。开发者经常有意“忘记”或忽略掉这点，因为有些时候开发日程逼得实在太紧。其实，多写一行定义静态变量的代码能花多少时间呢？<br /><br /><pre name="code" class="java">public class A {
public static final String S_CONSTANT_ABC = "ABC"; 
public boolean methodA(String sParam1){
if (A.S_CONSTANT_ABC.equalsIgnoreCase(sParam1)){
return true; 
}
return false; 
}
}</pre><br />　　现在，每次需要将“ABC”与其他变量进行比较时，不必记住实际代码，直接引用A.S_CONSTANT_ABC就行了，而且在今后需要进行修改时，也可在一处修改，不会翻遍整个源代码逐个修改了。<br /><br />　　五、不要“创造”自己的框架（framework）。确切来说，有数以千计的各种框架存在，而且大多数是开源的，这些框架都是优秀的解决方案，可用于日常程序开发中，我们只需使用这些框架的最新版本就行了，至少表面上要跟上形势吧。被大家广为接受的最为明显的一个例子就是Struts了，这个开源web框架非常适合用在基于web的应用程序中。是不是想开发出自己的Struts呢，还是省点力气吧，回头看看第二条——不要让事情复杂化。另外，如果正在开发的程序只有3个窗口，就不要使用Struts了，对这种程序来说，不需要那么多的“控制”。 <br /><br />　　六、不要使用println及字符串连接。通常为了调试方便，开发者喜欢在可能的所有地方都加上System.out.println，也许还会提醒自己回过头来再来删除，但有些时候，经常会忘了删除或者不愿意删除它们。既然使用System.out.println是为了测试，那么测试完之后，为什么还要留着它们呢，因为在删除时，很可能会删除掉真正有用的代码，所以不能低估System.out.println危害啊，请看下面的代码：<br /><br /><pre name="code" class="java">public class BadCode {
public static void calculationWithPrint(){
double someValue = 0D; 
for (int i = 0; i ＜10000; i++) {
System.out.println(someValue = someValue + i); 
}
}
public static void calculationWithOutPrint(){
double someValue = 0D; 
for (int i = 0; i ＜ 10000; i++) {
someValue = someValue + i; 
}
}
public static void main(String [] n) {
BadCode.calculationWithPrint(); 
BadCode.calculationWithOutPrint(); 
}
}</pre><br />　　从测试中可以发现，方法calculationWithOutPrint()执行用了0.001204秒，作为对比，方法calculationWithPrint()执行可是用了10.52秒。<br /><br />　　要避免浪费CPU时间，最好的方法是引入像如下的包装方法：<br /><br /><pre name="code" class="java">public class BadCode {
public static final int DEBUG_MODE = 1; 
public static final int PRODUCTION_MODE = 2; 
public static void calculationWithPrint(int logMode){
double someValue = 0D; 
for (int i = 0; i ＜ 10000; i++) {
someValue = someValue + i; 
myPrintMethod(logMode, someValue); 
}
}
public static void myPrintMethod(int logMode, double value) {
if (logMode ＞ BadCode.DEBUG_MODE) { return; }
System.out.println(value); 
}
public static void main(String [] n) {
BadCode.calculationWithPrint(BadCode.PRODUCTION_MODE); 
}
}</pre><br />　　另外，字符串连接也是浪费CPU时间的一个大头，请看下面的示例代码：<br /><pre name="code" class="java">public static void concatenateStrings(String startingString) {
for (int i = 0; i ＜ 20; i++) {
startingString = startingString + startingString; 
}
}
public static void concatenateStringsUsingStringBuffer(String startingString) {
StringBuffer sb = new StringBuffer(); 
sb.append(startingString); 
for (int i = 0; i ＜ 20; i++) {
sb.append(sb.toString()); 
}
}</pre><br />　　在测试中可发现，使用StringBuffer的方法只用了0.01秒执行完毕，而使用连接的方法则用了0.08秒，选择显而易见了。<br /><br />　　七、多关注GUI（用户界面）。再三强调，GUI对商业客户来说，与程序的功能及效率同等重要，GUI是一个成功程序的最基本部分，而很多IT经理往往都没注意到GUI的重要性。在现实生活中，许多公司可能为了节省开支，没有雇用那些有着设计“用户友好”界面丰富经验的网页设计者，此时Java开发者只能依赖他们自身的HTML基本功及在此领域有限的知识，结果，很多开发出来的程序都是“计算机友好”甚于“用户友好”。很少有开发者同时精通软件开发及GUI设计，如果你在公司“不幸”被分配负责程序界面，就应该遵守下面三条原则：<br /><br />　　1、 不要再发明一次轮子，即不做无用功。现有的程序可能会有类似的界面需求。<br />　　2、 先创建一个原型。这是非常重要一步，用户一般想看到他们将使用的东西，而且可以先利用这个原型征求用户的意见，再慢慢修改成用户想要的样子。<br />　　3、 学会换位思考。换句话来说，就是从用户的角度来审查程序的需求。举例来讲，一个汇总的窗口可以跨页或者不跨页，作为一个软件开发者，可能会倾向于不跨页，因为这样简单一些。但是，从用户的角度来看，可能不希望看到上百行数据都挤在同一页上。<br /><br />　　八、文档需求不放松。每个商业需求都必须记录在案，这可能听上去像童话，似乎在现实生活中很难实现。而我们要做的是，不管开发时间多紧迫，不管最终期限多临近，对每个商业需求都必须记录在案。<br /><br />　　 九、单元测试、单元测试、单元测试。关于什么是单元测试的最好方法，在此不便细说，只是强调，单元测试一定要完成，这也是编程中最基本的原则。当然了，如果有人帮你做单元测试自然是最好，如果没有，就自己来做吧，当创建一个单元测试计划时，请遵守以下三条最基本的原则：<br /><br />　　1、 先于编写类代码之前编写单元测试。<br />　　2、 记录单元测试中的代码注释。<br />　　3、 测试所有执行关键功能的公有方法，这里不是指set和get方法，除非它们是以自己独特方式执行set和get方法。<br /><br />　　十、质量，而不是数量。有些时候因为产品问题、期限紧迫、或一些预料之外的事情，导致常常不能按时下班，但一般而言，公司不会因为雇员经常加班而对之表扬和奖励，公司只看重高质量的工作。如果遵守了前九条原则，你会发现自己写出的代码bug少且可维护性高，无形中质量提高了一大步。
          <br/>
          <span style="color:red;">
            <a href="http://chenzengpeng.javaeye.com/blog/186446#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 24 Apr 2008 16:24:23 +0800</pubDate>
        <link>http://chenzengpeng.javaeye.com/blog/186446</link>
        <guid>http://chenzengpeng.javaeye.com/blog/186446</guid>
      </item>
      <item>
        <title>把握现在，掌控未来：2008 Java开发展望(CSND)</title>
        <author>chenzengpeng</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://chenzengpeng.javaeye.com">chenzengpeng</a>&nbsp;
          链接：<a href="http://chenzengpeng.javaeye.com/blog/186445" style="color:red;">http://chenzengpeng.javaeye.com/blog/186445</a>&nbsp;
          发表时间: 2008年04月24日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          2007 充满了激荡人心的事件，动态语言的不断升温，JVM在开源社区不断发展以及Java社区的重要贡献者，Google的崛起等。问题是，这些预示了来年什么 呢？安德鲁•格勒弗（Andrew Glover）准备了一些答案给那些打破砂锅问到底的Java开发者――现在，什么在2008接踵而至。<br /><br />法国诗人保尔•瓦雷里曾经伤心地写下“困扰我们这个时代的是，未来，并不像过去看上去的那样”。然而，对于我们这些生活在Java平台崛起推动的互联网时代的人来说，瓦雷里多年前留下的这些诗句是永恒的。<br /><br />过去的十多年，我们见证了Java Applet的兴起和没落，见证了EJB头顶上光环的不断暗淡，见证了JSF，Spring和Struts的异军突起（暂且不谈Struts渐渐显露的颓 势），见证了Java已经重新定义成为一种语言和一个平台。Java平台已经衍生出三个分支（标准版本，企业版本，微型版本），JDK也开放给了开源社 区。Java语言扩充了，包含了注解，范型，枚举类型，高级集合类型，还有更多。它也开始与动态语言，如Groovy，JRuby和Rhino等，共享 Java运行时（JRE）。事实上，如果稍稍留神一下，我们在过去的几年里注视着Java不断地从一种语言演变成为一个真正的平台。<br /><br />在最近的十年里，我们知道Java已经不仅仅局限于一种语言或者一个平台了：它是一个社区，一个经济生态系统，一个鲜活的实体，而且这个实体已经发展成熟，成为了丰富的应用程序，或大或小公司的真正的生命线。<br /><br />因此，尽管流言不少，我还是坚持认为Java在2008会持续红火。与其拿起卦子掐算未来，我们不如回顾一下过去的一年的趋势以及发生的重大事件。这些事件汇集起来，它们会告诉我们2008将发生什么。<br /><br />遍地开花<br /><br />2007 年犹如过山车一样，非常引人注目。人们对动态语言的不断关注， JVM在开源社区不断发展以及Java社区的重要贡献者，Google的崛起。更多的是，单元测试，持续化集成和其他敏捷开发技术得到了更广泛的接受，这 些都表明Java开发者开始认识到我们的技艺是一门有责任要求的行业。我们终于开始重视代码的质量和寿命，将其与推向市场的速度，或者是在企业的即时应用 放到同等重要的地位上来。<br /><br />每个人都说，2007年有一些绝对的胜利，但是同时也有一些失望和争论，这给Java社区产生了超出预期更多的阻碍。留心一下以下这些体现过去一年的重大因素。<br /><br />动态语言的成熟<br /><br />随着1.0以及随后的1.5版本的发布，Groovy在2007的发展达到了一个关键的里程碑。走过过去5年或者多年的历程，Groovy没有替代Java，相反定位成了Java运行时（JRE）的补充语言。<br /><br />Groovy的大卖点是简练的语法，简化了日常的开发工作。例如，打开和读取一个文件在Java语言是典型的冗长结构：<br /><br />try {BufferedReader in = new BufferedReader(new FileReader(path)); String line; while((line = in.readLine()) != null){System.out.println(line); }in.close(); }catch(IOException e){System.err.println("Exception reading"); }<br /><br /><br />但是同样的代码，Groovy可以写的更加敏捷：<br /><br />new File(path).eachLine{ line ->println line}<br /><br /><br />根本上，Groovy像其他动态语言一样，可以让你扔掉异常处理，类型和分号，还可以使得代码更加简练，而代码简练最终使得代码的可读性更强（是的，上面那个File对象是一个Java java.io.File对象）。<br /><br />把网撒开<br /><br />然而，Groovy并不是2007年动态语言阵营的唯一参与者。2006年发布的Java 6版本引入了一个与动态语言交互的标准API，很多Java开发者在去年临近年底才开始体验。对该API进行旗舰式集成的是Rhino。但是，看起来在 Java7版本发布时还会有更多集成进来。<br /><br />最早进行集成的语言之一不容置疑是JRuby，1.0版本的发布和令人咋舌的比Ruby本身运行速度还快的实现，使得它备受瞩目。像Groovy一 样，由于可以使用更加宽松的语法，加入了一些特殊机制的JRuby（它可以使 RubyJVM里运行，且与正常的Java对象交互）使Java开发更加简单。例如，使用Ruby可以增强标准的对象，象用Ruby的String操作会 更加容易。在标准的Java里，检查一个String实例是否为空值可能要做象如下方法的一样的操作（这是一个Apache commons-lang的 isBlank实现）。<br /><br />public static boolean isBlank(String str) {int strLen; if (str == null || (strLen = str.length()) == 0) {return true; }for (int i = 0; i &lt; strLen; i++) {if ((Character.isWhitespace(str.charAt(i)) == false)) {return false; }}return true; }<br /><br /><br />在Java 里，String是一个final类，所以你无法为了让String类型支持一个象isBlank的方法而扩展它。后果是，你不得不依赖第三方类库，象 common-lang。有了Ruby，你就可以在Ruby的String上另外定义一个blank方法，如：<br /><br />class Stringdef blank?empty? || strip.empty?endend<br /><br /><br />实际上，Ruby式的动态允许运行时添加额外的行为到核心类库或任意对象（象给String增加一个blank?方法）。更进一步，JRuby可以进行反作用对核心Java对象增加方法。因此，稍一施法就可以给Java String类添加一个blank方法。<br /><br />开放Java核心<br /><br />07年Java的开源意味Java平台的发展不再由Sun核心工程师们说了算了：现在它的前途由我们掌握了。对Java类库，Javac，甚至JVM本身都采取GPL协议，OpenJDK保证将会开创一个创新的周期。实际上，我们已经看到了。<br /><br />在2007 年十月，一个名为Multi-Language VM的项目在OpenJDK旗下开展了。这个项目旨在通过修改Java的底层架构，实现“以JVM特性为原型，高效支持Java之外的语言”。很明显，这 项目结合了07年最令人振奋的两个发展潮流，也就是围绕在动态语言的热衷和OpenJDK，这宣称我们处在了一个Java核心创新的时代。<br /><br />Sun 的开放当然不是从OpenJDk开始的，而是Glassfish，作为Sun支持的开源应用服务器，它在2007自始至终获得了社区更多的追捧。最近，我 们无法忽略Sun对MySQL AB的收购，MySQL背后的公司是MySQL AB，而MySQL似乎是当今最流行的开源数据库。<br /><br />所有这些发展都表明Java的鼻祖采取了一种受开源软件很大影响的商业模式。这意味我们在2008或者更远将看到Java平台更多的开放。当然，这会对Java生态系统的商业方面产生深远影响。相比最近Oracle以70十亿美金收购BEA，这似乎很绿色，很健康。<br /><br />Google flexes<br /><br />移动Java领域曾经变的不景气，但是临近2007年尾时，却因Google的Android平台的发布而重焕青春。Android的目标是为新一 代移动设备引入应用软件，且运行在由Google主导的开源操作系统之上。虽然Android是一个完整的平台（很像Java），但是构建Android 应用程序的SDK却是建立在Java之上。<br /><br />此外，Android的Java与J2ME的Java截然不同。实际上，在JVM层面，Android的JVM就已相当独特了。除了运行专门为 Android而设计，高度优化的字节码格式的代码，它不可以运行标准Java字节码。移动设备上运行不同实现的Java意味这我们将可以看到一些有趣的 应用程序――当然，这也仅进一步说明了Java的无处不在。<br /><br />2007 年Google在Java世界移动领域之外也进展的很顺利。但是，备受关注的是Guice的发布，Guice是一个基于Java 5注解和范型的依赖注入开源框架。虽然IOC市场上的佼佼者还是Spring，因其摒弃XML文件，提倡使用注解和Guice本身的Module类型，注 定了Guice在公开发布时就是一个先行者。<br /><br />考虑到Google对第二代IOC框架的影响和Google AdWrods本身的基础架构都是依赖Guice的，Guice在来年很有可能将得到更多的关注。<br /><br />敏捷成为主流――测试时代到来了<br /><br />敏捷（agile）这个名称对大家来说并不新鲜，单元测试与持续化集成也不陌生。不过，2007年似乎是这些实践更加成为主流的年份。你不会碰到一 个会议里没有一到两个关注在敏捷上的演示的。再哆嗦几句，瞥一眼2008年度Jolt Award大奖关于综合性和技术性书籍（从2007年甄选的）的最终名单，就可以看出关于单元测试和持续化集成的书籍占有一席之地。然而，更重要的是，不 管是享有盛誉的，还是刚刚发展的框架都已经开始宣称它们的架构是多么容易地进行测试了。似乎，开发人员的测试时代终于到来了。<br /><br />Java成长之痛<br /><br />Java在不断的成长，不断的扩充，然而它在逐渐变化成为一个平台，而不仅仅是一种语言。不知是好还是坏，独具特性的东西一直在不断的添加进来，以后还将会有，社区会接受特性吗？<br /><br />然而，一些特性就没有其他特性那样受欢迎了。举个例子来说，注解就很受欢迎――象JUnit4， TestNG， Spring和Google的Guice这些框架，由于对注解的创新的使用，就得到了不少开发人员的青睐。相反的是，到目前为止，人们对范型（在Java 5中引入）并没有保持对其自始至终的热情。<br /><br />闭包（Closure）未见踪影<br /><br />如果范型不足以使编程的前景变的灰暗，有人可能会发现当前围绕关于在Java 7 foggy中加入闭包和局部函数提议的争论。虽然我绝不会否认它们是有用的组成部分，只是，将它们增加到Java语言的语义中，概念的复杂性增加只会降低它们的有用性。<br /><br />例如，在一个闭包的典型参考实现中，找到如下代码，它定义了一个简单的支持整数加法的闭包：<br /><br />{Integer,Integer=>Integer} plus1 = {Integer x, Integer y => x+y}; <br />非常有趣的是，由于Java天生的对语义要求，语句变的拖沓冗余――用Groovy来重写同样功能，却很容易。例如<br /><br />plus1 = { x, y -> x+y }<br /><br /><br />注意到，在Groovy的例子中，类型的缺失无疑使得代码的意图一目了然。当然，Ruby版本也会同样简明扼要。<br /><br />显然，象动态语言普遍受到欢迎此类的外部力量在不断地影响Java。如果想使用闭包，你完全不必等待Java自带的闭包――Groovy和JRuby对其的支持就已经很优雅。<br /><br />真正的并发<br /><br />Java7 值得期待的其他事情是java.util.concurrent包的发布，这个包致力于通过充分利用底层硬件来达到真正的并发。虽然Java已经支持多线 程，但是通过对并行性的进一步重视，硬件资源将变的越来越健壮。最终，Java语言也发展的可以应付这些要求。<br /><br />由JSR 166专家组领导的Java 7将很有可能包含一些新特性，包括名为join-fork的细粒度的并行计算框架。好消息是，看起来这些新特性是崭新的类（和API），与生俱来就不符合句法规则。<br /><br />奔向RIA<br /><br />07年，特别是Sun在2007年JavaOne上让JavaFx对公众面世后，RIA（Rich Internet Application）继续让Java Web应用程序开发人员产生莫大的兴趣。JavaFX产品家族现在由JavaFX Script和JavaFX Mobile组成。<br /><br />由于开发类Ajax应用的JavaScript无处不在，对 JavaFx的反应显得见仁见智。看起来JavaFX将会加剧本来就已经四分五裂的移动环境之间的裂缝。很多人感觉JavaFX的公告有点操之过急，还有 一些人怀疑它究竟是不是一个雾件。不管怎样，Sun进入RIA领域传达了一个长期战略的消息，这会使Java的前景更加光明。<br /><br />结束语<br /><br />有个非洲谚语说“明天属于那些今天为它准备的人”。因此，Java的未来（至少来年）已经孕育了一段时间了。2008年的大事的很大部分将不仅由 JVM本身促成，而且也会随着JRuby和Groovy不断受欢迎，最终得到更多厂商的采纳而形成。由于Google Android的出击和Sun JavaFX Mobile的发布，使用Java开发用户移动应用的前景也好像比以前更加容易到达了。大部分人的注意力将被多核系统的出现吸引过去，期待Java 7 java.util.concurrent包对其的回应。最后，围绕它的开源的Java和商业模型也会不断的成长。<br /><br />作者简介<br /><br />Andrew Glover是Stelligent Incorporated的总裁，Stelligent Incorporated是一家帮助开发团队加速软件开发的咨询公司。他的blog通常是thediscoblog.com和testearly.com。
          <br/>
          <span style="color:red;">
            <a href="http://chenzengpeng.javaeye.com/blog/186445#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 24 Apr 2008 16:24:22 +0800</pubDate>
        <link>http://chenzengpeng.javaeye.com/blog/186445</link>
        <guid>http://chenzengpeng.javaeye.com/blog/186445</guid>
      </item>
      <item>
        <title>总结JDBC连接SQLServer的错误Error establishing socket</title>
        <author>chenzengpeng</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://chenzengpeng.javaeye.com">chenzengpeng</a>&nbsp;
          链接：<a href="http://chenzengpeng.javaeye.com/blog/186441" style="color:red;">http://chenzengpeng.javaeye.com/blog/186441</a>&nbsp;
          发表时间: 2008年04月24日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          在用MSSQL连接数据库的过程中，经常会遇见“Error establishing socket.”的错误，大概得错误日志信息如下： <br /><pre name="code" class="sql">java.sql.SQLException : [Microsoft][SQLServer 2000 Driver for JDBC]Error establishing socket. 
	at com.microsoft.jdbc.base.BaseExceptions.createException(Unknown Source) 
	at com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source) 
	at com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source) 
	at com.microsoft.jdbc.sqlserver.tds.TDSConnection.&lt;init>(Unknown Source) 
	at com.microsoft.jdbc.sqlserver.SQLServerImplConnection.open(Unknown Source) 
	at com.microsoft.jdbc.base.BaseConnection.getNewImplConnection(Unknown Source) 
	at com.microsoft.jdbc.base.BaseConnection.open(Unknown Source) 
	at com.microsoft.jdbc.base.BaseDriver.connect(Unknown Source) 
	at java.sql.DriverManager.getConnection( DriverManager.java:523 ) 
	at java.sql.DriverManager.getConnection( DriverManager.java:171 ) 
	at test.SqlServerTest.main( SqlServerTest.java:29 ) </pre><br /><br />我在网上查询到问题解决的方式有大概如下　种： <br />一　配置错误 <br />jdbc配置语句为: jdbc:microsoft:sqlserver://server_name:1433 <br />其中的sqlserver、server_name和端口号都要看仔细了。 <br />二　1433端口问题 <br />可以通过命令“netstat -an”，来查看是否开了１４３３端口，如果列表中没有，要增开端口。 <br />要保持jdbc配置语句（ jdbc:microsoft:sqlserver://server_name:1433）中的端口与数据库传输协议默认的端口相同。 <br />MSSQL设置端口号步骤如下： <br />1． 打开企业管理器，依次在控制台根目录 ->Microsoft SQL Servers->SQL Server 组，列出一部分数据库服务器。 <br />2． 右击我们要连接的数据库服务器，选择属性，在常规选项卡点击网络配置弹出新窗口。 <br />3． 在启用的协议区域我们选择 TCP/IP ，点击属性按钮，弹出新窗口。在这个窗口有网络协议默认值设置，一般默认端口是：1433。 如果你在ｕｒｌ中用的端口号与这个不同，就会出现错误。应保持二者相同。 <br />三 没打补丁 <br />可以用如下的方式查看MSSQL的版本： <br />打开企业管理器-〉工具-〉SQL查询分析器-〉帮助-〉关于 <br />查看MSSQL的详细版本号 <br />如果 是 8.00.194 就是还没打补丁 <br />8.00.760 就是SP3 <br />8.00.2039 就是SP4 <br /><br />1、下载MSSQL　2000 Service Pack 3a并安装，SQL请选用混和安装模式！！！ <br />http://www.microsoft.com/downloads/details.aspx?FamilyId=90DCD52C-0488-4E46-AFBF-ACACE5369FA3&displaylang=zh-cn <br />解压缩sp3的升级包后,还要点击setup安装.才能成功升级到sp3。 <br />2、下载SQL Server 2000 Driver for JDBC Service Pack 3 <br />http://www.microsoft.com/downloads/details.aspx?FamilyId=07287B11-0502-461A-B138-2AA54BFDC03A&displaylang=en <br />四　系统防火墙或者杀毒软件 <br />如果系统开防火墙或者杀毒软件，在有些情况下也可以出现类似的问题。 <br />没有遇见过，有人这么说。 <br /><br />可能我查询的未必全面,如果你的解决方式不同,可以给我留言,一起完善其解决方法. <br /><br /><br />参考文献： <br />1 http://dev.csdn.net/article/70/70360.shtm <br />2 http://blog.chinaunix.net/u/20532/showart_289640.html <br />3 http://dev2dev.bea.com.cn/bbs/thread.jspa?forumID=81&threadID=29250&messageID=175704
          <br/>
          <span style="color:red;">
            <a href="http://chenzengpeng.javaeye.com/blog/186441#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 24 Apr 2008 16:21:23 +0800</pubDate>
        <link>http://chenzengpeng.javaeye.com/blog/186441</link>
        <guid>http://chenzengpeng.javaeye.com/blog/186441</guid>
      </item>
      <item>
        <title>JDBC数据库连接与各种数据库的连接</title>
        <author>chenzengpeng</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://chenzengpeng.javaeye.com">chenzengpeng</a>&nbsp;
          链接：<a href="http://chenzengpeng.javaeye.com/blog/169947" style="color:red;">http://chenzengpeng.javaeye.com/blog/169947</a>&nbsp;
          发表时间: 2008年03月10日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          Db Name: Microsoft SQL Server (6.5, 7, 2000 and 2005) and Sybase (10, 11, 12).  <br />~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ <br />JDBC Name: jTDS <br />Home Page: http://jtds.sourceforge.net/ <br />JDBC Ver: 1.0.2 <br />Download: http://sourceforge.net/project/showfiles.php?group_id=33291 <br />Conn Code: <br />   Class.forName("net.sourceforge.jtds.jdbc.Driver "); <br />   Connection con = DriverManager.getConnection("jdbc:jtds:sqlserver://host:port/database","user","password"); <br />or <br />   Connection con = DriverManager.getConnection("jdbc:jtds:sybase://host:port/database","user","password"); <br /><br />   Db Name: Microsoft SQL Server 2000 <br />~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ <br />JDBC Name: SQL Server 2000 Driver for JDBC <br />Home Page: http://www.microsoft.com/china/sql/ <br />JDBC Ver: (SQL Server 2000 Driver for JDBC) <br />Download: http://www.microsoft.com/china/sql/downloads/2000/jdbc.asp <br />Conn Code: <br />   Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");  <br />   Connection conn = DriverManager.getConnection ("jdbc:microsoft:sqlserver://server1:1433","user","password"); <br /><br />   Db Name: Oracle <br />~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ <br />JDBC Name: Connector/J  <br />Home Page: http://www.oracle.com/technology/software/tech/java/ <br />JDBC Ver: (based on Oracle) <br />Download: http://www.oracle.com/technology/software/tech/java/sqlj_jdbc/ <br />Conn Code: <br />   Class.forName("oracle.jdbc.driver.OracleDriver"); <br />   Connection con = DriverManager.getConnection("jdbc:oracle:thin:@host:port:databse","user","password"); <br /><br />   Db Name: MySQL <br />~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ <br />JDBC Name: Connector/J <br />Home Page: http://dev.mysql.com/ <br />JDBC Ver: 3.1 <br />Download: http://dev.mysql.com/downloads/ <br />Conn Code: <br />   Class.forName("com.mysql.jdbc.Driver"); <br />   Connection con = DriverManager.getConnection("jdbc:mysql://host:port/database","user","password"); <br /><br />   Db Name: Sybase <br />~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ <br />JDBC Name: jConnect  <br />Home Page: http://www.sybase.com.cn/cn/content/SDN/ <br />JDBC Ver: 4.5/5.5 <br />Download: http://www.sybase.com/detail_list?id=13&morenavId=8668&multi=true&SR=Y&show=1265 <br />Conn Code: <br />Class.forName("com.sybase.jdbc2.jdbc.SybDriver").newInstance(); <br />DriverManager.getConnection("jdbc:sybase:Tds:IP:2638?ServiceName="+database,"user","password"); <br /><br />   Db Name: Postgresql <br />~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ <br />JDBC Name: PostgreSQL JDBC <br />Home Page: http://jdbc.postgresql.org/ <br />JDBC Ver: 8.0 Build 310 <br />Download: http://jdbc.postgresql.org/download.html <br />Conn Code: <br />   Class.forName("org.postgresql.Driver");  <br />   Connection con = DriverManager.getConnection("jdbc:postgresql://host:port/database","user","password"); <br /><br />   Db Name: IBM Informix <br />~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ <br />JDBC Name: Informix JDBC Driver (IBM Informix JDBC V3.0) <br />Home Page: http://www-306.ibm.com/software/data/informix/ <br />JDBC Ver: 3.0.JC1 <br />Download: http://www14.software.ibm.com/webapp/download/search.jsp?go=y&rs=ifxjdbc <br />Conn Code: <br />   Class.forName("com.informix.jdbc.IfxDriver").newInstance();  <br />   Connection conn= DriverManager.getConnection("jdbc:informix-sqli://123.45.67.89:1533/myDB:INFORMIXSERVER=myserver;user=testuser;password=testpassword";); <br /><br />   Db Name: IBM DB2 <br />~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ <br />JDBC Name: DB2 JDBC Universal Driver <br />Home Page: http://www-306.ibm.com/software/data/db2/udb/  <br />JDBC Ver:  <br />Download: http://www-128.ibm.com/developerworks/db2/downloads/jcc/ <br />Conn Code: <br />   Class.forName("com.ibm.db2.jdbc.app.DB2Driver ").newInstance();  <br />   Connection conn= DriverManager.getConnection("jdbc:db2://localhost:5000/sample",user,password);  <br /><br />IBM AS400主机在用的JDBC语法 <br />~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ <br />  有装V4R4以上版本的Client Access Express <br />  可以在C:\Program Files\IBM\Client Access\jt400\lib <br />  找到 driver 档案 jt400.zip，并更改扩展名成为 jt400.jar <br />Conn Code: <br />   java.sql.DriverManager.registerDriver (new com.ibm.as400.access.AS400JDBCDriver ()); <br />   Class.forName("com.ibm.as400.access.AS400JDBCConnection"); <br />   con = DriverManager.getConnection("jdbc:as400://IP","user","password");  <br /><br />   Db Name: Ms Access or Ms Foxpro <br />~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ <br />Conn Code: <br />   step 1: 配置 odbc (例如：myDb) <br />   step 2:  <br />   String dbURL = "jdbc:odbc:myDb"; <br />   Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); <br />　Connection conn = DriverManager.getConnection(dbURL);  <br />or <br />   String dbURL = "jdbc:odbc:driver={MicrosoftAccessDriver(*.mdb)};DBQ=dabaseName.mdb"; <br />   Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); <br />　Connection conn = DriverManager.getConnection(dbURL);
          <br/>
          <span style="color:red;">
            <a href="http://chenzengpeng.javaeye.com/blog/169947#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 10 Mar 2008 19:21:46 +0800</pubDate>
        <link>http://chenzengpeng.javaeye.com/blog/169947</link>
        <guid>http://chenzengpeng.javaeye.com/blog/169947</guid>
      </item>
  </channel>
</rss>