Java书籍

单位的书架:
《软件需求》 刘晓晖(译)
《DreamWeaver MX2004 中文版标准教程》 刘瑞华
《FireWorks MX2004 中文版标准教程》 张静波
《JavaScript权威指南》 张铭泽
《XML手册》(第四版) 张晓晖
《形式语言与自动机理论》 蒋宗礼
《形式语言与自动机理论教参》 蒋宗礼
《Java编程原理——面向工程和科学人员》 张 珑(译)
《数据结构——Java版》 杨 浩(译)
《JSP2.0技术手册》 林上杰
《Servlet与JSP核心编程》(第二版) 赵学良(译)
《JSP 应用开发详解》(第二版) 飞思科技
《Struts编程》 孙江宏(译)
《EJB应用指南》(第二版) 施平安(译)
《J2EE企业级应用开发》 刘晓华
《J2EE技术参考手册》 飞思科技
《JDBC数据库编程与J2EE》 李东升(译)
《Oracle9i数据库管理员使用大全》 滕永昌
《Jbuilder X实用技术手册》 Borland
《Jbuilder X高级技术手册》 Borland
《程序员修炼之道》 马维达(译)
《计算机网络》(第四版) 潘爱民(译)
程序员最喜欢的十本书
来源:《程序员》2003.01调查
《Java编程思想》(第二版)
《C++ Primer中文版》(第三版)
《C++程序设计语言》(特别版)
《精通EJB》(第二版)
《精通.Net核心技术——原理与构架》
《设计模式:可复用面向对象软件的基础》(英文版)
《人月神话》
《TCP/IP详解 卷Ⅰ:协议》(英文版)
《C++编程思想 第Ⅰ卷:标准C++导引》(第二版)
《STL源码剖析》
一些图书:
《SOAP Version 1.2中文版》
《J2EE核心设计模式》
《精通EJB》(第二版)
《离散数学教程》耿素云、屈婉玲、王悍贫
软件工程:
来源:《程序员》2003.10软件工程好书榜
总体方法论和过程
第一名:《解析极限编程:拥抱变化》(影印版)  KentBeck著  中国电力出版社  2003.09.01
第二名:《敏捷软件开发》(影印版)  Alistair Conckburn著  人民邮电出版社  2003.08.01
第三名:《测试驱动开发》(影印版)  KentBeck著  中国电力出版社  2003.08.01
分析和设计:
第一名:《编写有效用例》(影印版)  Alistair Conckburn著  机械工业出版社  2002.07.01
第二名:《改善既有代码的设计》  Martin Fowler著,侯捷译  中国电力出版社  2003.08.01
第三名:《分析模式:可重用对象模型》(影印版) Martin Fowler著  中国电力出版社  2003.06.20
项目和配置管理:
第一名:《人月神话》(影印版)  Frederick Philips著  中国电力出版社  2003.03.01
第二名:《快速软件开发》(影印版)噪Steve McConnell著,机械工业出版社  2003.03.01
第三名:《领导软件开发团队》  Richard Whitehead著,吴志明译  电子工业出版社  2002.05.01 
Java
来源:《程序员》2003.11Java好书榜
语言参考和原理
第一名:《Java编程思想》(第二版)  Bruce Eckel著,侯捷译  机械工业出版社  2002.09.01
第二名:《Effective Java中文版》  Joshua Bloch著,潘爱民译  机械工业出版社  2003.01.01
第三名:《Java2核心技术》(第六版)卷Ⅰ:基础知识  Sun  机械工业出版社  2003.10.01
J2EE架构开发
第一名:《J2EE核心设计模式》  Deepak Alur著,牛志奇译  机械工业出版社  2002.01.01
第二名:《精通EJB》(第二版)  Ed Lonan著,刘晓华译  电子工业出版社  2002.10.01
第三名:《Servlet与JSP核心技术》  Narty Hall著,邓英材译  人民邮电出版社  2001.10.01
其他应用领域:
第一名:《Java TCP/IP应用开发详解》  飞思科技  电子工业出版社  2002.01.01
第二名:《深入嵌入式Java虚拟机》  深矽工作室  中国铁道出版社  2003.05.01

来自巴黎的华人软件架构师

他缔造了著名的设计软件PowerDesigner,并在全球拥有5万多的正版用户,被称为“Power- Designer创始教父”;他还在著名国际软件企业Sybase中担任此产品的首席软件架构师。王晓昀所书写的这一段软件传奇,也成为了中国所有程序员的骄傲。
自从王晓昀在1988年研发出第一套Windows版本的PowerDesigner 1.0,经过不断修正与改良,2004年正式推出PowerDesigner最新版本10.0,功能强大而完整,涵盖Business Process、UML、E-R Model、Enterprise Repository 等必要模组功能,是目前市面上著名的软件工程建模工具。
为协助中国广大的软件用户,将软件工程技术应用到实际开发工作上,王晓昀应邀到中国巡回演说。从上海讲座返回北京后,在中国大饭店的一间会议室中,刚刚下飞机的王晓昀接受了采访。
记者:请您谈谈此次来中国,做技术讲座之后的感受?
王晓昀:应该说,对模型设计关注的人要比我想象的多,上海的听众就超过了一百多人,有开发人员,也有很多老师,大家都对软件工程表现出了浓厚的兴趣。
PowerDesigner在中国也有很多人使用,但一般只用在数据库设计,而对UML设计和模型设计这些功能还不知道如何运用,他们也对如何把商业流程模型、面向对象模型和数据模型联系,如何应用在软件工程中非常感兴趣。不过,这也同此方面的资料和书籍比较缺乏有关。
软件企业需要在提高开发速度和质量上做很多工作,而国内这方面的教育可能还刚开始,学生学习软件工程还只是着重理论,在工具的使用和教材方面都有待提高。当然,现在已经比去年我来的时候要好多了。
记者:最近PowerDesigner已经推出10.0版本,都有哪些新特性呢?
王晓昀:在Gartner的报告中,认为PowerDesigner对UML支持比Rational Rose要好,数据库模型比ERwin的要好,同时我们在MDA方面做了很多工作,所有的特性我们都支持。可以把一种模型任意转变为另外的模型,比如将UML模型分析模型转变为Java模型,还可以把Java模型转变为EJB模型。客户做一个新的模板,就可以生成适合自己的编码,做的模板越多,写的代码越少。而且数据模型和商业流程模型也可以互相转换。自动生成BPEL4WS(Web服务的业务流程执行语言),这主要是因为软件内部有一个类似Biztalk的引擎。
现在的PowerDesigner只支持分析设计,此后会支持需求分析扩展,因为这部分也属于分析设计。下一代产品中还将支持代码修改前,就能够显示出来一处设计的修改会影响到其他哪些设计。此外,PowerDesigner也会和开发工具更加紧密的联系,比如支持Eclipse和微软的Visual Studio .NET的版本。今年四月份就会推出Eclipse的版本,所有的产品功能都可以在这个开发环境中使用,对.NET开发工具的支持也很快会推出,今年要做一个嵌入Visual Studio .NET的版本。
记者:最近,MDA也很受关注,您如何看待?
王晓昀:MDA和我们做的一些功能是很相似的,MDA主要是把模型的分析和软件开发分开,而且是与平台无关的。无论是Java平台还是.NET平台,首先用模型把所有的功能都显示出来,并根据不同的平台生成代码。PowerDesigner也采用了类似的思想,对市场上的很多技术都支持,比如支持所有的数据库。
记者:您设计的PowerDesigner和IBM收购的Rational以及Borland公司的Together产品有哪些相同点和不同点呢?
王晓昀:相同点就是这些产品都是基于面向对象的设计,都支持UML。不同的是,PowerDesigner有三种不同的模型。我们认为,因为客户水平不同,不能只用一种模型,比如业务人员对业务很了解,但UML只有学会了九种图才能做商业流程设计,因此我们不能强求其都懂UML模型,不同的人员应该用专门的模型。此外,数据库设计具有特殊性,这三个方向要能够互通,比如做UML模型应该可以和数据模型有关,因为设计需要存储在数据库中。在Gartner的报告中,也提到这三种模型在两三年内联系在一起的可能性有90%以上。
记者:当初您是如何开发Power-Designer软件并使之成为一个具有国际影响力的工具的呢?
王晓昀:我是从北京大学去法国的第一批留学生。到巴黎之后学的是自动化专业,从那时起,我开始接触计算机并对软件产生了兴趣。
毕业后我在一家法国软件公司SDP Technologies工作,这家公司主要给其他企业开发数据库方面的软件。因此经常需要做数据库的分析设计,虽然有些客户自己开发了一些工具,但很难用。于是,我们觉得不如花时间做一个数据库设计的产品,磨刀不误砍柴工,反而可以为以后的项目开发缩短时间。
最早这个产品称为S-Designor,因为也没有可参考的产品,只能自己琢磨。最初的版本只是供公司内部使用。第二个版本开发完成后,感觉很好用,公司老板考虑到否卖给其他的公司,于是开始在法国销售这个产品并且取得了不错的成绩。后来,我们考虑到法国市场很小,于是在美国开了分公司销售,情况也不错。在1995年,Powersoft公司收购了我们,因为他们的客户在使用PowerBuilder做开发的时候,也经常需要首先设计数据库。又过了几个月,Sybase又收购了Powersoft公司。
记者:PowerDesigner是一个很优秀的产品,你认为一个优秀的软件设计师需要具备哪些素质?
王晓昀:首先要对技术特别了解,设计一个新产品,需要了解可以采用哪些新技术,如果产品的技术不好,与其他的产品比较时就容易被轻视;第二是要对客户的需求比较了解,如果做出的产品不能满足客户需求,那就很难获得认可;第三就是要创新,开发软件和做其他产品没有什么区别,如果不能做出真正与其他产品相区别的吸引客户的关键点,即便技术再好,客户也不一定会购买你的产品。
我现在每天都花很多时间了解新技术,对其他的新产品做一些测试,看看有哪些好的想法。此外还做项目的设计,并对开发中出现的问题进行处理。有时我也写一些代码,因为总不写就会对编程失去感觉。我现在每天的工作都要在十个小时以上。
记者:PowerDesigner的开发团队有多大?在整个PowerDesigner的开发中,有哪些重要的里程碑或者转折点?
王晓昀:最初只有我一个人在做开发,大概四年中做了四个版本。后来为了加速开发进度,又招了一些人。我们被收购时,公司有20多人,有一半是做PowerDesigner产品。
我认为第一个版本最重要,因为当时没有软件是将数据库分成两种,也就是将CDM(概念数据模型)和PDM(物理数据模型)分开。这是一种思想,虽然当时还不知道用户能否接受,现在看来,当初的决定还是正确的。
此外,就是PowerDesigner的7.0版本,这个版本是用C++重新写的,之前的版本都是用C开发。C++刚出现时,因为找不到一个很好的C++编译器没有敢采用。后来感觉还是用C++开发要快一些,而且当时准备把商业模型和数据模型连接到一起,系统架构也需要重写。不过,7.0版本刚出的时候还不是很完整,并没有把所有的功能都加进去,直到7.5才把功能做全,现在的功能就更加完整了。
记者:你们在软件开发中采用哪些软件工程方法,经常使用哪些工具软件?
王晓昀:我们是根据需要选择适合我们的软件工程方法。我们做了一些简单的软件工程,比如用PowerDesigner做设计,用Word写设计文档, 用Project做项目计划。测试方面除了人工测试外,还引入了自动测试,我们用的是WinRunner,每天晚上进行自动测试,这样可以大大提高工作效率,自动测试做的越多,质量就越高。
记者:您是华人,但PowerDesigner这款有国际影响力的开发工具却诞生在法国,为什么国内诞生不了这样的工具软件和厂商呢?
王晓昀:这一点我也同其他朋友谈论过。其实国内有很多人理论水平很高,不过研究和产品开发还是有相当一段距离,而且国内对国际市场的了解不够,开发的产品不一定适合国际市场的需求。
要改变这种状况可能还需要一段时间,现在我觉得应该首先把软件工程的思想更好的传递给学生,他们一出学校,就知道如何用软件工程来开发和设计软件。其实这对开发人员也有好处,因为掌握了分析设计,自己的价值也就提高了。
记者:法国的软件发展状况如何?软件开发氛围怎样?
王晓昀:应该说,法国与国际接轨还是比较紧密的,法国在软件教育方面做的也不错,和美国交流也很多。法国也有一些出名的软件公司,比如我们公司,还有BusinessObject公司和Ilog公司。很多大公司都在开发自己用的软件,他们也都知道如何用建模工具。而且,法国软件公司中,只要达到几十人的规模,一般都有专门负责跟踪软件技术发展的人员,他们会了解如何使用这些工具,研究软件工程中哪些部分适应本公司的需要。
我们跟踪技术一般也通过网上、杂志等来学习,法国也有类似《程序员》这样的杂志,叫《Programmez》,还有诸如“01 Informatique”这样的技术网站,公司每个星期都会组织新技术的讲座。在法国,有很多专门做培训新技术的公司。国家法律也规定,公司做技术培训还可以抵税,可以占到营业额的1%,因此这也极大的促进了公司对技术人员培训的投入。
我觉得法国的氛围还是比较适合做软件的,尤其是给公司开发内部用的软件很适合,但要做适应市场需要的产品,和美国相比还差一些,因为法国敢冒险的人不多,真正敢投资的人也不多。

J2EE建议的学习路线

  J2EE,发展到现如今,与其1999年刚推出来相比,它已经是解决关键级企业应用(mission-critical)的重要平台技术。尤其是J2EE 1.4平台规范(2003年11月24日发布Final Release Edition)的推出,标志了其向面向服务架构(Service-Oriented Architecture,SOA)的革新。
  从目前主流的J2EE应用服务器(本文以J2EE APS简称)厂商看待,基本上是形成了IBM WebSphere、BEA WebLogic以及JBoss三足鼎立的局面。JBoss的技术潮流性是其他J2EE APS无法比拟的,在某种程度上它是行业的领跑者。BEA的发言人说,【”Innovate-then-standardize” beats “standardize-then-implement”】。这在某种程度上说明,它为J2EE的发展速度,尤其是其对新技术、新规范的采纳速度慢等问题,提出了很大的挑战。JBoss在这方面做的就相当不错,比如AOP、将Hibernate作为持久化的基础等。
  抛开这些具体的J2EE实现,就J2EE平台技术本身对开发人员而言显得更为重要。对于J2EE初学者,或者对J2EE有初步了解的开发者而言,制定较为系统性的J2EE学习路线显得很重要。
J2EE学习研究
  正如学外语一样,主要包含三个层面的内容:首先是词汇,其次是语法,最后是习惯用法。其中,掌握习惯用法是最高境界。换个角度考虑,对于应用开发人员,如何精通业界架构J2EE系统常见的做法、如何结合具体的业务需求选用相应的J2EE设计模式等内容,都是“习惯用法”。
  为了达到灵活运用“习惯用法”的目标,本文从如下几方面给出建议的学习路线。
  【词汇—“J2EE规范”】
  【语法—“J2EE应用服务器” 】
  【习惯用法—“J2EE应用范例、模式”】
剖析J2EE规范
  在某种程度上,J2EE平台规范以及J2EE相关技术规范构成了J2EE规范本身。其中,J2EE平台规范为【Java 2 Platform Enterprise Edition Specification, Version x.x】;J2EE相关技术规范为【Enterprise JavaBeans Specification, Version x.x】、【JavaServer Pages Specification, Version x.x】、【Java Servlet Specification, Version x.x】以及【J2EE Connector Architecture,Version x.x】等规范。
  一般情况下,遵循J2EE规范而开发的应用在各J2EE服务器之间是可移植的。因此,专注于企业级 Java 应用、培训以及咨询规范本身便构成了我们的“外语词典”。
主流J2EE APS研究
  J2EE应用服务器在某种程度上是“外语语法”。如果不熟悉各种目标J2EE APS的操作、使用方法,即使对J2EE规范本身的理解很透彻,也只是停留在“纸上谈兵”阶段。在熟悉目标J2EE APS的操作后,开发人员就能够开发、部署、测试、优化以及运行J2EE应用。因此,熟悉这些语法对于学习J2EE显得很重要。如果是商业J2EE应用服务器,则其提供的操作文档很丰富。如果是Open Source服务器,则很多的时候,需要依赖于其提供的服务,比如JBoss Group。
J2EE应用范例、模式
  基于上述两方面的分析,为达到精通“习惯用法”的目标,还需要去研读相关的J2EE Blueprints。 这个过程往往是漫长的。
建议的学习步骤
  理论联系实际、理论指导实践。因此,动手写程序、开发实际的应用系统很重要,对于理解J2EE架构很关键。 本文后面提到的企业级Java培训消息有助于您缩短学习时间。
小结
  企业级Java,因为其提供的API很丰富,使得初学者和对J2EE具有一定认识的开发者形成了一个假象:难学! 然而,如果对J2EE本身的架构设计具备很清楚的认识后,读者将发现开发J2EE应用是不难学的,至少上手简单。在开发简单的J2EE应用后,您再回去看J2EE本身的架构,您又会有新的认识,这就是【温故而知新】的道理。而这个过程往往比较漫长,是反复性的。因此,在这个IT技术快速更新的年代,您需要沉住气,去享受【温故而知新】的乐趣。 但是,有一点大家不要忽略:时间的宝贵性。如果您的旁边具备J2EE丰富经验的开发者,或者架构师,您就能够更快到达罗马。
www.open-v.com 原创 [2004年1月]
©Copyright www.open-v.com, all rights reserved
【阁下如果要转载本文,请保证内容的完整性,即 不要修改或删除原创内容的任何部分】

电视机的故事

  客户准备购买一台一流的彩色电视机,经过考察,选定了开发电子有限公司供货。然而开发公司现有的一流生产线产能不足,而扩大生产线怎样也得半年以上,偏偏客户要求半年内供货,开发公司只能让工人用电子管组装了一台彩色电视机。半年后,电视机如期交付。电视机外壳也蛮漂亮,功能按钮也很多很全面,客户欣然付款。
  使用一段时间后,客户想把调节频道的按钮转移到电视机的左边。这下开发公司可忙坏了,把电路板拆了下来,移动了很多电子管,总算完成了任务。然而好景不长,客户还想能有预存喜爱频道的功能,这下开发公司就难办了,只得另外新增了一块电路板,作为插件接到了主电路板上。就这样,时间一长,电视机外壳看起来已经和刚刚交付的时候迥然不同了,内部也是焊孔林立,附加的电路板更是多如牛毛。
  直到有一天,电视机打不开了,开发公司在这堆电子管中再也找不到毛病出在哪里,只得宣布,电视机报废。

Eclipse

  今天下载了Eclipse,用着感觉不错。
  http://www-900.ibm.com/developerWorks/cn/linux/opensource/os-ecov/index.shtml
  http://tech.ccidnet.com/pub/series/s102.html
  另外下载了火热已久的FireFox,用着感觉也不错。不过有些网站的代码兼容性不是很好,有错位现象出现,大网站还可以,用着和IE区别不大,速度挺快,不怎么占用系统资源。

如此架构

  今天项目组内就系统架构有了分歧,个人认为,归根到底,是商业上进度与质量的矛盾。不用EJB甚至Strus都可以理解,如果不用分层架构,就太让人想不通了。
  我不知道,这个是一个用将来要使用Tomcat的用JSP开发的项目,还是使用WebLogic的用J2EE开发的项目。

Java简介

  一. Java的由来
  当1995年SUN推出Java语言之后,全世界的目光都被这个神奇的语言所吸引。那么Java到底有何神奇之处呢?
  Java语言其实最是诞生于1991年,起初被称为OAK语言,是SUN公司为一些消费性电子产品而设计的一个通用环境。他们最初的目的只是为了开发一种独立于平台的软件技术,而且在网络出现之前,OAK可以说是默默无闻,甚至差点夭折。但是,网络的出现改变了OAK的命运。
  在Java出现以前。Internet上的信息内容都是一些乏味死板的HTML文档。这对于那些迷恋于WEB浏览的人们来说简直不可容忍。他们迫切希望能在WEN中看到一些交互式的内容,开发人员也极希望能够在WEB上创建一类无需考虑软硬件平台就可以执行的应用程序,当然这些程序还要有极大的安全保障。对于用户的这种要求,传统的编程语言显得无能为力,面SUN的工程师敏锐地察觉到了这一点,从1994年起,他们开始将OAK技术应用于WEB上,并且开发出了HotJava的第一个版本。当SUN公司1995年正式以Java这个名字推出的时候,几乎所有的WEB开发人员都想到:噢,这正是我想要的。于是Java成了一颗耀眼的明星,丑小鸭一下了变成了白天鹅。
  二. Java的定义
  Java是一种简单的,面象对象的,分布式的,解释的,键壮的安全的,结构的中立的,可移植的,性能很优异的多线程的,动态的语言。
  Java的开发环境有不同的版本,如sun公司的Java Developers Kit, 简称 JDK。后来微软公司推出了支持Java规范的Microsoft Visual J++ Java开发环境,简称 VJ++。
  三. Java的特点
  1. 平台无关性
  平台无关性是指Java能运行于不同的平台。Java引进虚拟机 原理,并运行于虚拟机,实现不同平台的Java接口之间。使 用Java编写的程序能在世界范围内共享。Java的数据类型与 机器无关,Java虚拟机(Java Virtual Machine)是建立在 硬件和操作系统之上,实现Java二进制代码的解释执行功能, 提供于不同平台的接口的。
  2. 安全性
  Java的编程类似C++,学习过C++的读者将很快掌握Java的精 髓。Java舍弃了C++的指针对存储器地址的直接操作,程序 运行时,内存由操作系统分配,这样可以避免病毒通过指 针侵入系统。Java对程序提供了安全管理器,防止程序的 非法访问。
  3. 面向对象
  Java 吸取了C++面向对象的概念,将数据封装于类中,利用类 的优点,实现了程序的简洁性和便于维护性。类的封装性、 继承性等有关对象的特性,使程序代码只需一次编译,然后 通过上述特性反复利用。程序员只需把主要精力用在类和接 口的设计和应用上。Java 提供了众多的一般对象的类,通 过继承即可使用父类的方法。在 Java 中,类的继承关系是单一的非多重的,一个子类 只有一个父类,子类的父类又有一个父类。Java 提供的 Object 类及其子类的继承关系如同一棵倒立的树形,根类 为 Object 类, Object 类功能强大,经常会使用到它及其 它派生的子类。
  4. 分布式
  Java建立在扩展TCP/IP网络平台上。库函数提供了用HTTP和FTP协议传送和接受信息的方法。这使得程序员使用网络上的文件和使用本机文件一样容易。
  5. 键壮性
  Java致力于检查程序在编译和运行时的错误。类型检查帮助检查出许多开发早期出现的错误。Java自已操纵内存减少了内存出错的可能性。Java还实现了真数组,避免了覆盖数据的可能。这些功能特征大大提高了开发Java应用程序的周期。Java提供: Null指针检测、 数组边界检测、 异常出口、 Byte code校验。
  四. Java与C/C++语言
  Java提供了一个功能强大语言的所有功能,但几乎没有一点含混特征。C++安全性不好,但C和C++被大家接受,所以Java设计成C++形式,让大家很容易学习。
  Java去掉了C++语言的许多功能,让Java的语言功能很精炼,并增加了一些很有用的功能,如自动收集碎片。
  Java去掉了以下几个C和C++功能:
  指针运算
  结构
  typedefs
  #define
  需要释放内存
  这将减少了平常出错的50%。而且,Java很小,整个解释器只需215K的RAM。
  面象对象:Java实现了C++的基本面象对象技术并有一些增强,(为了语言简单,删除了一些功能)。Java处理数据方式和用对象接口处理对象数据方式一样。
  五. Java与Internet
  我们知道,早先的 www 仅可以传送文本和图片,Java的出现实现了互动的页面,是一次伟大的革命。
  Java并不是为 Internet,WWW而设计的,它也可以用来编写独立的应用程序。Java 是一种面向对象语言。Java 语言类似于 C++ 语言,所以已熟练掌握 C++语言的编程人员,再学习 Java 语言就容易得多!Java 程序需要编译。实际上有两种 Java 程序:一种 Java 应用程序是一个完整的程序,如 Web 浏览器。一种 Java 小应用程序是运行于 Web 浏览器中的一个程序.
   Java程序和它的浏览器HotJava,提供了可让你的浏览器运行程序的方法。你能从你的浏览器里直接播放声音。你还能播放页面里的动画。Java还能告诉你的浏览器怎样处理新的类型文件。当我们能在2400 baud线上传输视频图象时,HotJava将能显示这些视频。
  当今Internet的一大发展趋势是电子商务,而Internet的安全问题是必须解决的问题,通常大的部门应设置防火墙,阻止非法侵入。
  电子商务是当今的热门话题,然而传统的编程语言难以胜任电子商务系统,电子商务要求程序代码具有基本的要求:安全、可靠、同时要求能 与运行于不同平台的机器的全世界客户开展业务。Java以其强安全性、平台无关性、硬件结构无关性、语言简洁同时面向对象,在网络编程语言中占据无可比拟的优势,成为实现电子商务系统的首选语言。
  Java程序被放置在Internet服务器上,当用户访问服务器时,Java程序被下载到本地的用户机上,由浏览器解释运行。

jspSmartUpload上传下载全攻略

http://www.tongyi.net/article/20031015/200310153755.shtml
一、安装篇
  jspSmartUpload是由www.jspsmart.com网站开发的一个可免费使用的全功能的文件上传下载组件,适于嵌入执行上传下载操作的JSP文件中。该组件有以下几个特点:
1、使用简单。在JSP文件中仅仅书写三五行JAVA代码就可以搞定文件的上传或下载,方便。
2、能全程控制上传。利用jspSmartUpload组件提供的对象及其操作方法,可以获得全部上传文件的信息(包括文件名,大小,类型,扩展名,文件数据等),方便存取。
3、能对上传的文件在大小、类型等方面做出限制。如此可以滤掉不符合要求的文件。
4、下载灵活。仅写两行代码,就能把Web服务器变成文件服务器。不管文件在Web服务器的目录下或在其它任何目录下,都可以利用jspSmartUpload进行下载。
5、能将文件上传到数据库中,也能将数据库中的数据下载下来。这种功能针对的是MYSQL数据库,因为不具有通用性,所以本文不准备举例介绍这种用法。
  jspSmartUpload组件可以从www.jspsmart.com网站上自由下载,压缩包的名字是jspSmartUpload.zip。下载后,用WinZip或WinRAR将其解压到Tomcat的webapps目录下(本文以Tomcat服务器为例进行介绍)。解压后,将webapps/jspsmartupload目录下的子目录Web-inf名字改为全大写的WEB-INF,这样一改jspSmartUpload类才能使用。因为Tomcat对文件名大小写敏感,它要求Web应用程序相关的类所在目录为WEB-INF,且必须是大写。接着重新启动Tomcat,这样就可以在JSP文件中使用jspSmartUpload组件了。
  注意,按上述方法安装后,只有webapps/jspsmartupload目录下的程序可以使用jspSmartUpload组件,如果想让Tomcat服务器的所有Web应用程序都能用它,必须做如下工作:
1.进入命令行状态,将目录切换到Tomcat的webapps/jspsmartupload/WEB-INF目录下。
2.运行JAR打包命令:jar cvf jspSmartUpload.jar com
(也可以打开资源管理器,切换到当前目录,用WinZip将com目录下的所有文件压缩成jspSmartUpload.zip,然后将jspSmartUpload.zip换名为jspSmartUpload.jar文件即可。)
3.将jspSmartUpload.jar拷贝到Tomcat的shared/lib目录下。
……

关于Java的几本书籍

Java语言参考和原理:
Java编程思想(第2版)
http://www.china-pub.com/computers/common/info.asp?id=7241
《程序员》书评:
经典,但不适合初学者。
《Effective Java中文版》
http://www.china-pub.com/computers/common/info.asp?id=8645
《程序员》书评:
经典,但不系统,57条最佳实践。
PS:英文版免费开放,中文版也可以免费下载,下载地址:
http://www.wgqqh.com/shhgs/tij.html
《Java 2核心技术(第6版) 卷I:基础知识》
http://www.china-pub.com/computers/common/info.asp?id=14354
《程序员》书评:
Sun Java团队编写,权威、系统、严谨,但有些呆滞,有课本味道。
http://www.china-pub.com/computers/bookreview/review/bookreview.05335.htm
http://www.china-pub.com/computers/bookreview/review/bookreview.08707.htm
《Java编程语言(第三版 影印版)》
http://www.china-pub.com/computers/common/info.asp?id=12303
J2EE架构:
《JSP设计》
http://www.china-pub.com/computers/common/info.asp?id=5400
《J2EE应用与BEA WebLogic Server》
http://www.china-pub.com/computers/common/info.asp?id=6069
《Servlet与JSP核心技术》
http://www.china-pub.com/computers/common/info.asp?id=4052
http://www.huachu.com.cn/itbook/itbookinfo.asp?lbbh=BB07682823
http://www.huachu.com.cn/itbook/itbookinfo.asp?lbbh=BB07705070
http://www.huachu.com.cn/itbook/itbookinfo.asp?lbbh=BB07698751
http://www.huachu.com.cn/itbook/itbookinfo.asp?lbbh=BB07686511
http://www.huachu.com.cn/itbook/itbookinfo.asp?lbbh=BR02684292
http://www.huachu.com.cn/itbook/itbookinfo.asp?lbbh=BB07679233
http://www.huachu.com.cn/itbook/itbookinfo.asp?lbbh=BB07620876

Java学习从入门到精通

written by robbin
Java Learning Path (一)、工具篇
一、 JDK (Java Development Kit)
JDK是整个Java的核心,包括了Java运行环境(Java Runtime Envirnment),一堆Java工具和Java基础的类库(rt.jar)。不论什么Java应用服务器实质都是内置了某个版本的JDK。因此掌握JDK是学好Java的第一步。最主流的JDK是Sun公司发布的JDK,除了Sun之外,还有很多公司和组织都开发了自己的JDK,例如IBM公司开发的JDK,BEA公司的Jrocket,还有GNU组织开发的JDK等等。其中IBM的JDK包含的JVM(Java Virtual Machine)运行效率要比Sun JDK包含的JVM高出许多。而专门运行在x86平台的Jrocket在服务端运行效率也要比Sun JDK好很多。但不管怎么说,我们还是需要先把Sun JDK掌握好。
1、 JDK的下载和安装
JDK又叫做J2SE(Java2 SDK Standard Edition),可以从Sun的Java网站上下载到,http://java.sun.com/j2se/downloads.html ,JDK当前最新的版本是J2SDK1.4.2,建议下载该版本的JDK,下载页面在这里:http://java.sun.com/j2se/1.4.2/download.html。
下载好的JDK是一个可执行安装程序,默认安装完毕后会在C:\Program Files\Java\目录下安装一套JRE(供浏览器来使用),在C:\j2sdk1.4.2下安装一套JDK(也包括一套JRE)。然后我们需要在环境变量PATH的最前面增加java的路径C:\j2sdk1.4.2\bin。这样JDK就安装好了。
2、 JDK的命令工具
JDK的最重要命令行工具:
java: 启动JVM执行class
javac: Java编译器
jar: Java打包工具
javadoc: Java文档生成器
这些命令行必须要非常非常熟悉,对于每个参数都要很精通才行。对于这些命令的学习,JDK Documentation上有详细的文档。
二、 JDK Documentation
Documentation在JDK的下载页面也有下载连接,建议同时下载Documentation。Documentation是最最重要的编程手册,涵盖了整个Java所有方面的内容的描述。可以这样说,学习Java编程,大部分时间都是花在看这个Documentation上面的。我是随身携带的,写Java代码的时候,随时查看,须臾不离手。
三、 应用服务器(App Server)
App Server是运行Java企业组件的平台,构成了应用软件的主要运行环境。当前主流的App Server是BEA公司的Weblogic Server和IBM公司的Websphere以及免费的Jboss,选择其中一个进行学习就可以了,个人推荐Weblogic,因为它的体系结构更加干净,开发和部署更加方便,是Java企业软件开发人员首选的开发平台。下面简要介绍几种常用的App Server:
1、 Tomcat
Tomcat严格意义上并不是一个真正的App Server,它只是一个可以支持运行Serlvet/JSP的Web容器,不过Tomcat也扩展了一些App Server的功能,如JNDI,数据库连接池,用户事务处理等等。Tomcat被非常广泛的应用在中小规模的Java Web应用中,因此本文做一点下载、安装和配置Tomcat的介绍:
Tomcat是Apache组织下Jakarta项目下的一个子项目,它的主网站是:http://jakarta.apache.org/tomcat/ ,Tomcat最新版本是Tomcat4.1.27,软件下载的连接是:http://www.apache.org/dist/jakarta/tomcat-4/binaries/ 。
下载Tomcat既可以直接下载zip包,也可以下载exe安装包(个人建议zip更干净些),不管哪种情况,下载完毕安装好以后(zip直接解压缩就可以了)。需要设置两个环境变量:
JAVA_HOME=C:\j2sdk1.4.2
CATALINA_HOME=D:\tomcat4 (你的Tomcat安装目录)
这样就安装好了,启动Tomcat运行CATALINA_HOME\bin\startup.bat,关闭Tomcat运行shutdown.bat脚本。Tomcat启动以后,默认使用8080端口,因此可以用浏览器访问http://localhost:8080来测试Tomcat是否正常启动。
Tomcat提供了两个Web界面的管理工具,URL分别是:
http://localhost:8080/admin/index.jsp
http://localhost:8080/manager/html
在启用这两个管理工具之前,先需要手工配置一下管理员用户和口令。用一个文本工具打开CATALINA_HOME\conf\tomcat-users.xml这个文件,加入如下几行:
这样用户“robbin”就具备了超级管理员权限。重新启动Tomcat以后,你就可以使用该用户来登陆如上的两个管理工具,通过Web方式进行Tomcat的配置和管理了。
2、 BEA Weblogic
Weblogic可以到BEA的网站上免费注册之后下载到最新的Weblogic8.1企业版,License可以免费使用1年时间,其实这已经完全足够了。Weblogic的下载连接:http://commerce.bea.com/index.jsp,Weblogic的在线文档:http://edocs.bea.com/ 。
3、 IBM Webshpere
Websphere同样可以下载到免费的试用版本,到IBM的developerWorks网站可以看到Websphere试用产品的下载和相关的Websphere的资料,developerWorks中文网站的连接是:http://www-900.ibm.com/developerWorks/cn/wsdd/ ,Websphere的下载连接:http://www7b.software.ibm.com/wsdd/downloads/WASsupport.html 。
4、 Jboss
Jboss是免费开源的App Server,可以免费的从Jboss网站下载:http://www.jboss.org/index.html,然而Jboss的文档是不免费,需要花钱购买,所以为我们学习Jboss设置了一定的障碍。在Jdon上有几篇不错的Jboss配置文档,可以用来参考:http://www.jdon.com/idea.html
四、 Java应用的运行环境
Java的应用可以简单分为以下几个方面:
1、 Java的桌面应用
桌面应用一般仅仅需要JRE的支持就足够了。
2、 Java Web应用
Java的Web应用至少需要安装JDK和一个web容器(例如Tomcat),以及一个多用户数据库,Web应用至少分为三层:
Browser层:浏览器显示用户页面
Web层:运行Servlet/JSP
DB层:后端数据库,向Java程序提供数据访问服务
3、 Java企业级应用
企业级应用比较复杂,可以扩展到n层,最简单情况会分为4层:
Browser层:浏览器显示用户页面
Client层:Java客户端图形程序(或者嵌入式设备的程序)直接和Web层或者EJB层交互
Web层:运行Servlet/JSP
EJB层:运行EJB,完成业务逻辑运算
DB层:后端数据库,向Java程序提供数据访问服务
4、 Java嵌入式应用
Java嵌入式应用是一个方兴未艾的领域,从事嵌入式开发,需要从Sun下载J2ME开发包,J2ME包含了嵌入式设备专用虚拟机KVM,和普通的JDK中包含的JVM有所不同。另外还需要到特定的嵌入式厂商那里下载模拟器。