JAVA及其相关
-
实战J2EE与WebLogic Server应用开发张宏展等编著本书以WebLogicServer7.0为应用开发环境,介绍J2EE的开发技术。在讲解过程中融合了丰富翔实的例子,从而指导初涉了J2EE和WebLogicServer的开发者成功地开发、部署和运行了2EE程序。通过对本书的学习,读者可以掌握以下知识:●熟悉了J2EE的WebLogicServer7.0开发环境。●掌握Servlet,JSP,JavaScript和Applet的应用开发。●使用JDBC连接数据库和使用JTA处理事务。●理解EJB技术的基础::RMI和JNDI。●学会开发会话EJB、实体EJB和消息EJB程序,以及它们的集成应用开发。●学会利用JavaMail收发E-mail。本书以BEAWebLogicServer7.0为开发环境,详细介绍了J2EE框架下各个组件的开发技术。全书以剖析J2EE各个组件及在WebLogicServer环境下开发和部署的过程为中心,共分为两大部分14章。前一部分包括前8章,是Web应用部分,包括Servlet,JSP,JavaScript,Applet,以及JDBC和JTA。后一部分是后面6章,包括EJB的基础:RMI和JNDI,会话EJB、实体EJB和消息EJB,以及JavaMail。这些均是目前的技术热点和读者所关注的问题。书中的实例对读者的实际应用开发有非常强的借鉴意义。本书适合于具有一定Java编程基础的程序员阅读,也可作为正在进行J2EE开发的各类程序员的必备参考书。 -
Java语言导学(美)Mary Campione等著本书反映了Java技术的最新发展,针对Java2SDK1.3平台进行了更新,同时也适用于以前的1.2和1.1版本。书中清晰地解释了对象、类以及数据结构等基本概念,介绍了面向对象编程、applet构造。用户界面设计、异常、I/O和线程等主题。为帮助初学者避免许多常见错误,附录A给出了编程问题及其解决方案。每章后面的“小结”是本版新增的。另外,还新增了“问题与练习”小节,有助于读者实践所学内容。MaryCampione是SunMicrosystems公司的高级技术作家,自1995年开始从事关于Java平台的写作。除本书外,她还与人合著有《PostScriptbyExample》一书。KathyWalrath是SunMicrosystems公司Swing组的高级技术作家。在获得了加州大学伯克利分校的电子工程与计算机科学学士学位后,Kathy编撰了关于UNIX,Mach和NEXTSTEP的大量著作。自1993年开始,Kathy专职从事Java平台规范和入门指南的写作。AlisonHuml是SunMicrosystems公司的技术作家,获得了加州大学伯克利分校的计算机科学硕士学位。 -
Java面向对象程序设计(美)Ralph Morelli著;董永乐等译;董永乐译本书从解决实际问题的角度讲解Java面向对象程序设计,提供了健壮而灵活的问题求解方式,有助于读者了解对象的抽象原则,掌握对象的交互概念以及各种方法的使用。书中首先采用"从对象开始"的方式引导读者,在引入大多数程序设计基本特性和结构化程序设计概念之前,先介绍设计对象和方法的基础知识。本书重点关注问题分解和问题设计,并采用了分而治之和逐步求精的原则。这种方式与大量的习题以及实验题相结合,为读者提供了理论与实践的最佳结合方案。另外,书中也讲解了Java高级特性,如GUI组件(AWT和Swing)、异常、线程、文件和套接字等。全书的组织风格便于教师根据初学者的接受能力和课时安排选讲适当的高级主题。本书适合作为高等院校计算机专业或相关专业的Java程序设计或面向对象程序设计课程的教材,也非常适合专业技术人员作为参考书。译者序任何程序员都应该熟悉Java,无论你曾经是一位系统程序设计大师,还是一位擅长快速原型法的数据库应用程序设计师,或者仅仅是一位刚刚踏入程序设计之门的初级程序员。从最初为嵌入式程序而设计的语言到现在特别适合Internet程序设计的语言,Java已经不可逆转地成为Internet时代的主流程序设计语言之一。本书最令人心动之处莫过于它能给不同的程序员从不同的角度提供帮助。本书没有对读者做任何不合理的假定,而是尽量适合几类读者:初学编程的新手、C/C++程序员以及其他各种伟大或者平凡的语言的使用者。正因为如此,本书非常适合作为一本入门教材。作者把极为广博的知识融入本书,为读者学习Java提供了全面而且实用的指导。在强调面向对象的同时并没有忽视语言细节,通过各种重要提示反复提醒读者应该注意的内容,包括语法、语义、调试和测试等。另外,每章的Java语言小结、Java库类、实验课、自测题以及习题,都有助于读者在学习过程中巩固知识并提高实际编程能力。"从对象开始"使本书免于俗套。确实,它能让一个初学程序设计的新手很快对面向对象这个激动人心的概念有一个总体印象。这也是许多C程序员在转向C++时难过的一关。C++最大的优点在于它既可以是面向对象的,也可以是面向过程的。初看起来,C++提供了从面向过程到面向对象的平滑过渡,但也正是因为这一点,许多C程序员学习C++或者用C++编程达半年以上却仍然未能清楚地理解"面向对象"的真实内涵。本书在深入Java语言的语法与语义细节之前用尽可能浅显的语言和例子清晰而形象地向读者展现了面向对象的概念,使读者在尚未真正开始学习Java之前就能对面向对象程序设计有鲜明的感性认识。而本书的后续内容也一直不遗余力地不断强化面向对象程序设计中的各个关键主题。学完本书,读者真正能够达到一个目标:学会用Java进行面向对象程序设计。本书的另一新颖之处是有配套的Web站点www.prenhall.com/morelli/,其中包括教学的辅助资源以及本书的代码下载。另外,在书中文字以及代码例子中多处涉及了http://starbase.trincoll.edu/,即作者所在的TrinityCollege的网站,从这里同样可以浏览或下载本书的代码。但是,译者尝试后发现,可能由于网站内容的调整,个别代码或链接可能会失效。如果出现这种情况,请尝试采用http://starbase.cs.trincoll.edu/。本书前言、第0章到第9章由董永乐翻译,第10章到第16章由陈康与缪国往初译,附录由吴嫣翻译。陈渝老师修改了初译稿并对全书内容进行了整理和统校,段海新、钱芳、于洁阅读了译稿并提出了宝贵的修改意见。张少华、姜进磊、许超、杨武勇、钱俊、张力也参予了翻译工作,在此一并表示感谢。限于译者水平,译文中的疏漏和错误在所难免,欢迎读者批评指正。前言本书读者对象本书覆盖的内容和采用的讲解方式适用于典型的计算机科学入门(CS1)课程,或者内容稍深的Java语言课程。本书也非常适用于那些转向Java与面向对象编程的专业程序员。本书采用一种"从对象开始"的方法讲述编程与问题求解,既不要求读者有任何编程经验,也不需要读者事先具备任何Java或面向对象编程的知识。第二版的新增内容本书第二版在如下方面有重大改进:●统一建模语言(UML)。UML框图贯穿全书,以帮助阐述面向对象的概念,描述我们开发的Java程序的设计过程。第一版中的许多流程图现在已经用UML框图代替了,同时添加了很多新的UML框图。UML正在迅速发展成为设计面向对象程序的业界标准,所以熟悉它会非常有用。但是,使用UML的主要原因还是出于教学上的考虑,这样更容易介绍和讲授信息隐藏、继承以及多态性等面向对象的概念。●强调面向对象设计。第二版更多地强调了面向对象设计,这种变化大部分体现在开发书中涉及的例子的过程中。重新编写了许多编程例子,以便在深入Java编码细节之前重点关注设计。使用UML框图有助于采用这种方式。●改变了内容的组织结构。根据前一版的评阅者和用户的建议,本书有几章的内容进行了调整。前两章进行了大幅度改写。第0章现在提供了更详细的面向对象的概述,并且介绍了UML的主要特点,这样有助于在深入讨论Java的面向对象实现之前给学生以正确的方向指导。为了强调设计相对于编码的重要性,第1章在介绍Java代码之前重点讲述程序设计与开发。这一章中还包括了对基本的Java语言特性的简要概述。这样,学生们在开始学习具体的Java例子之前就有了很好的总体认识。关于Java语言要素的组织,本书把switch语句的讨论移到了第3章,与其他的选择控制结构一起讨论。本书还改写了第11章,以便在课程中更早、更容易地使用它。为什么从对象开始本书从对象开始讲授Java,早一些给初学者总体印象,让他们有更多的时间来掌握面向对象编程的原理。我第一次在CS1课程中讲授Java时,使用的是讲授C和C++时所用的方法,即从基本的语言特性和结构化编程的概念开始,然后在课程中期的某个时候开始介绍面向对象。这种方法是大家都很熟悉的,因为大多数Java与C++教材都使用这种方法。这种方法的一个问题是很多学生都得不到一个总体印象。他们能弄清楚循环、if-else结构以及算术表达式,但很难把一个编程问题分解成结构良好的Java程序。另外,这种过程化的方法似乎无法利用Java面向对象的强大功能的优势。如果要用对待C或者Pascal的方式来对待它,那么为什么还要讲授面向对象的语言呢?这样也使我想起来当Pascal是流行的CS1课程时的相似情况。当时,初学者最大的障碍就是过程抽象,即学习过程调用与参数传递的基本机制,学习如何将程序设计成一系列过程的集合。"Oh!Pascal!"是我最喜欢的入门书籍,该书采用的就是典型的"从过程开始"的方式。在第1章中讲述了赋值与I/O结构之后,紧接着就在第2章中讲述过程与参数。然后,第3章开始讲述程序设计与组织方式。直到第4章及以后才开始讲述循环、if-else以及其他结构化编程的概念。现在,初学者的主要障碍在于"对象抽象"。新手程序员必须能把程序看成多个相互作用的对象的集合,而且必须学会如何将编程问题分解成多个设计良好的对象。面向对象同时包容了来自Pascal时代的过程抽象与结构化编程的概念。"从对象开始"的讲授方式自顶向下讲清楚了这3个重要的概念。越早介绍对象和类,学生越能更好地掌握面向对象的重要原则。面向对象(OO)是一种基本的问题求解与设计的概念,而不仅仅是另一个应该归入教材(或课程)的中后期的语言细节。如果很晚才介绍OO的概念,就非常容易在课程进度紧张时将其略过。Java是一种非常适合介绍面向对象概念的语言。它的对象模型比C++组织得更好。在C++中,很容易绕过OO的特点并把它当成C来对待。在Java中,有很好的机会来激发关于面向对象的讨论。例如,几乎不可能不讨论继承和多态性就讨论Applet。这样,教师可以用Java的某些基本特点,如Applet,类库和GUI组件,自然而然地引发这些讨论,而不必另外准备一些使用OO概念的例子。主要特点除了"从对象开始"的方法之外,本书还有其他几个重要特点:●统一建模语言(UML)框图。200多个UML框图贯穿全书,用于解释面向对象的概念,并重点关注面向对象设计。使用UML框图有如下几方面的优势。首先,UML框图提供了一个简要描述类和对象的主要特性的可视化方式。读者很容易看到一个对象的属性和方法,它们是私有的还是公共的,这个类或对象与其他的类之间的关系是什么。第二,UML框图为重要的面向对象概念(如继承和多态性)提供了简单的图形模型。一幅图可以替代许多文字,所以除了文字描述之外,UML框图有助于学生们理解这些重要的概念。第三,就其在本书中的使用目的而言,UML理解起来相对容易一些并且非常直观。第0章中用浅显易懂的例子介绍了基本的标记法。最后,UML正在迅速成为业界标准。所以,通过本书熟悉UML可以更好地读懂其他关于Java与面向对象设计的书籍。●CyberPet例子。CyberPet类贯穿全书,作为一个能够运行的例子来阐述并加强重要的概念。CyberPet在第2章中以一种拟人的方式展示了对象的基本特征。每个CyberPet属于一个类(定义),有某个状态(实例变量),能够执行类似吃和睡(实例方法)这样的行为。方法调用用于命令CyberPet吃和睡。在第3章中,着重讲解了定义和使用方法与参数,与CyberPet进行通信。在后续章节中,通过CyberPet阐述了继承、随机性、动画和线程等概念。一些实验和编程练习也在丰富CyberPet的行为并使之更加复杂。●Applet与GUI。Applet与GUI在第4章中首次引入,并在后续章节中一直使用。显然,Applet是学生入门的诱饵并且可以作为一种很好的激励因素。另外,事件驱动编程(event-drivenprogramming)与图形用户界面(GUI)是学生们应该在CS1课程中学习的。我们早已过了那个把命令行界面作为设计应用程序的标准的时代。JavaApplet的另一个优势是它们从根本上讲是面向对象的。要想全部掌握Applet,学生们需要理解基本的OO概念,这也正是直到第4章才讲授Applet的原因。第4章中以一种很好的方式促进了关于继承与多态性的讨论。●配套Web站点。本书设计成和一个包括许多有用资源的配套Web站点配合使用。这些资源包括书中所有例子的Java代码和Java文档(HTML格式),补充的实验与编程作业,自动评分的在线测验以及PowerPoint教案(部分资源为收费使用:编者注)。关于提供给教师的辅助教学资源,详见本书末尾的"教学支持说明"。●问题求解方法。全书采用问题求解教学方法,共有13个完整地开发好的"实例分析",以及其他用于阐述这种问题求解过程的大量例子。●自测题。全书包括200多个自测题,答案在每章最后给出(位于章末习题之前)。●章末习题。全书一共提供了400多个章末习题,其中还有很多标明为"难题"。采用本书作为教材的教师可以得到包含习题答案的教师手册(详见本书末尾的"教学支持说明")。●编程、调试与设计技巧。本书包含了近400个单独标记的"技巧"(编程技巧、调试技巧、高效设计原则以及Java语言规则),言简意赅地给出了关于编程与设计的有用信息。●"实验课"小节。从第1章开始,每一章都包含实验课内容,非常适合有实验环节的CS1课程。对于那些没有实验环节的CS1课程,这些小节也可以用于准备编程作业,作为课堂上的演示或者作为其他形式的实践作业。书中的每个实验在配套的Web站点上都有补充资源和讲义,还提供了可供选用的实验作业。●"Java库类"小节。从第1章开始,每一章都介绍了一个或多个来自JavaAPI(ApplicationProgrammingInterface)的库类。在前面的几章中,这些小节用来介绍编写简单程序所需的工具,如I/O类与方法。在后面的几章中,一些小节用来介绍有用的选读内容,如用于格式化数字输出的NumberFormat类,另外一些用来介绍程序例子和实验课中涉及的基本GUI组件。●"面向对象设计"小节。从第1章开始,每一章都有一个关于面向对象设计的小节,强调并详述继承、多态性与信息隐藏之类的重要概念。表1为那些希望强调面向对象设计的教师提供了应该讲授的章节的清单。●"Java语言小结"小节。介绍语言特性的几章中都包含了这个小节,以总结这些语言特性的基本语法和语义。表1有关面向对象的章节主题章节什么是面向对象0.7节UML概述0.8节面向对象的设计过程1.2节对象:定义、创建和使用第2章方法:与对象通信第3章继承:toString()方法第3章,"面向对象设计"小节Applet中的继承与多态性4.2节至4.4节继承与多态性:ToggleButton第4章,"面向对象设计"小节信息隐藏第5章,"面向对象设计"小节结构化编程概念第6章,"面向对象设计"小节抽象类:Cipher第7章,"面向对象设计"小节多态性:多态排序第8章,"面向对象设计"小节(续表)主题章节模型-视图-控制器架构第9章,"面向对象设计"小节继承与多态性:Spider/Fly类13.6节通用Client/Server类15.7节抽象数据类型:List类第16章,"面向对象设计"小节内容组织从总体上讲,全书可以划分成三个部分。第一部分(第0章到第4章)介绍面向对象的基本概念,包括对象、类、方法、参数传递、信息隐藏、继承以及多态性。虽然这几章的重点在于面向对象而非Java的语言细节,但也都包含"Java语言小结"小节,总结了涉及到的语言要素。在第1章至第3章中,给学生提供了从最初的想法构造Java程序的基本程序块。虽然就控制结构与数据类型而言,在这个阶段的程序功能很有限,但其重点在于如何构造对象,以及如何通过方法调用和参数传递与其他对象交互。第二部分(第5章到第8章)重点关注其余语言要素,包括数据类型和操作符(见第5章)、控制结构(见第6章)、字符串(见第7章)和数组(见第8章)。当学生们理解了面向对象程序的基本结构与框架之后,讲授这些语言特点相对而言会容易一些。第三部分(第9章到第16章)讲解了各种高级内容,包括图形用户界面(见第9章)、图形(见第10章)、异常(见第11章)、递归(见第12章)、线程(见第13章)、文件(见第14章)、套接字和网络(见第15章)以及数据结构(见第16章)。教师可以根据学生的兴趣有选择地讲解这几章的内容。表2中的课程提纲取材于作者的一学期CS1课程(一学期为13周,加上一个不上课的阅读周)。表2一学期的课程安排周主题章1面向对象,UML第0章程序设计与开发第1章2~4对象和类定义第2章方法和参数第3章选择结构(if-else)5Applet编程第4章继承6数据类型与操作符第5章7~8控制结构(循环)第6章结构化编程9字符串处理(循环)第7章10数组处理第8章11递归第12章12高级内容(GUI)第9章13高级内容(异常)第11章高级内容(线程)第13章注意,这几章高级内容并不需要按顺序讲解。递归(见第12章)可以和循环(见第6章)一起讲,甚至可以在循环之前讲。递归这一章包括一些使用字符串、数组和绘制算法(分形)的例子,以及一些标准数值算法(阶乘)的例子。讲解递归的另一种方法是和字符串(见第7章)、数组(见第8章)以及图形(见第10章)一起讨论,这样就可以同时讲解递归和循环迭代。异常(见第11章)也可以早一些讲。这一章的前几节中的例子使用了简单的算术运算符和基本的for循环。如果单独介绍这些语言要素,可以紧接在第3章之后讲解异常。在有关高级内容的那几章中,有些例子用到了Applet(见第4章)和GUI(见第9章),所以这些章节在第10章(关于图形)、第13章(关于线程)、第14章(关于文件)以及第15章(关于套接字和网络)之前讲较为理想。然而,第16章(关于数据结构)与其他高级内容的讲解可以独立于Applet和GUI。图1给出了书中各章的主要依赖关系。 -
J2SE进阶JavaResearch.org编著本书作者都是具有多年丰富开发经验的Java开发人员,注重实际开发技术。本书融入了作者长期的学习、开发经验,内容定位在“进阶”。本书面向具有一定Java基础,希望能够继续深入掌握J2SE相关技术的朋友。本书作者都是具有多年丰富开发经验的Java开发人员,注重实际开发技术。本书融入了作者长期的学习、开发经验,内容定位在“进阶”,但不求面面俱到,覆盖了内容要求具有实用性和适中的深度,并穿插了对JDK源码、Tomcat源码、Struts源码、JDOM使用的剖析,以及Java新增特性logging、prefs、regex、nio、javax.sql等主题的探讨。本书是提高J2SE相关技术的理想读物。 -
举一反三——Java程序设计实战训练张伟编著Java以其“Writeonce,runanywhere”的特点,自诞生后便受到了用户的青睐,从小应用程序、网络编程、分布式运算到手机游戏,Java无处不在。在北美地区使用Java的软件开发人员比例达到了44%,在北美以外的地区,使用Java的软件开发人员比例为43%。国内近几年来使用Java的软件开发人员越来越多,我国对Java人员的需求量也较大,根据权威部门预测,到2005年我国对Java技术人员的需求量将高达20万人。JBuilder9.0是Borland公司推出的一个跨平台的Java开发环境,它不仅支持Windows操作系统,还支持Linux、Solaris等操作系统,利用JBuilder9.0可以构建符合业界标准的Java应用系统,还可开发EJB、JDBC、Web和XML等。JBuilder9.0还可大幅度提升Java开发团队的生产力,是不可多得的Java开发环境。本书根据作者多年使用JBuilder进行Java开发的经验和心得体会,通过典型实例由浅入深地向读者介绍如何利用JBuilder9.0开发Java程序。本书沿袭了“举一反三”丛书的编写风格,在带领读者完成一个典型实例的基础上,由读者开动脑筋、自主完成3个相关题目,达到提高实战能力的目的。全书共分7章,各章内容简要介绍如下。·第1章:从特性、平台、开发工具包、集成开发工具、语法和面向对象编程等方面综合介绍Java,方便读者快速掌握Java基础知识。·第2章:介绍图形用户界面设计和事件处理,并通过图形用户界面设计基础、计算器、记事本和树形组件等4个实例介绍利用JBuilder9.0开发Java程序。·第3章:介绍图形图像处理和多媒体的基础知识,并通过时钟、图像操作和多媒体应用等3个实例介绍图形图像处理和多媒体的应用。·第4章:介绍数据库基础、SQL语言、JDBC和JBuilder9.0数据库管理等知识,并通过两个综合实例介绍Java数据库应用程序的开发。·第5章:介绍网络协议、IP地址和域名系统DNS等网络基础知识,并通过IP地址、URL、Socket、UDP、JavaMail和Java网络编程综合等6个实例全面介绍最实用的Java网络应用。·第6章:介绍JSP的概念、运行环境、语法私内建对象等基础知识,并遍过Java论坛实例介绍JSP的应用。·第7章:介绍Java高级应用,主要包括JavaApplet基础知识及实例,文件操作基础知识及实例,Java应用程序的部署等。读者对象本书特别适合对Java语言有一定的了解,想在此基础上提高应用程序设计能力的读者,也可作为高等院校在校学生学习Java的参考资料。配套光盘内容及用法为了方便读者学习,本书附一张光盘,主要收录了本书所有典型实例的源代码,读者可先将光盘中的文件拷贝到本机硬盘中,去掉文件的“只读”属性,然后启动JBuilder9.0,选择菜单栏中的[File]/[OpenProject]命令打开相应实例文件夹下的“Jpx”文件,即可参考使用。读者若要运行光盘中的实例,可启动JBuilder9.0打开相应的工程,然后选择菜单栏中的[Run]/[RunProject]命令(按F9)键或单击▲按钮),编译运行程序。 -
Java程序设计高级主题(美)Joe Wigglesworth,(美)Paula Lumby著;赵强,陈洪译;赵强译我认为本书的两位作者是我碰到的最好的教师,他们将复杂难懂的编程内容揉碎以简单明了的方式讲授给读者,这一写作风格贯穿全书。——OlegKonovalov,fromPrinceton,NJUSA(http://www.amazon.com)这真是一本杰作,假如您有一定的Java基础,想更深入地掌握Java的高级内容,那您还等什么……我喜欢本书的写作风格,语言准确而简洁。——CameronMcKenzie,fromHalifax,NovaScotia(http://www.amazon.com)本书特点:●本书适合想深入了解Java高级主题和准备参加Java2认证考试的读者●本书两位作者都具有丰富的软件开发和教学经验,在书中内容的编排上采取循序渐进的方式,教授读者从简单的编程主题开始学习,直到Java高级主题,如JavaBean、网络编程、服务器端Java编程等,极大地帮助读者发掘编程潜能●书中实例丰富,但程序并不是简单地罗列,而是通过程序代码详细地解释Java中的概念和编程思想,从多个方面拓展读者的思维,使读者认真领会每一行代码的意图●各章的习题从以下三个方面考查读者对知识的掌握程度:Java认证考试模拟题、程序调试、补充未完成的程序。这些习题都覆盖了各章的重点知识,适合读者自测本书主要向读者讲述了Java语言的高级编程技巧。首先介绍了Java语言的基本语法,然后又指导已经对Java语言具有一定基础的读者进行高级程序设计。内容包括多线程、图形用户界面、窗口和事件编程、JavaBean、网络编程,以及服务器编程等,而且详细讲解如何编写JavaApplet。本书适合于对Java编程有一定基础并想学习更高技术和编程技巧的读者。适合作为大学计算机专业高年级的教材,也可作为程序员的参考用书。 -
Java算法(美)Robert Sedgewick著;傅为译;傅为译本书深入介绍了图算法。书中分别对图属性和类型、图搜索、有向图、最小生成树、最短路径以及网络流的有关内容进行了透彻的讨论。书中不仅对基本内容做了全面的阐述,而且对经典算法也提供了详尽的分析,同时还涵盖了有关的高级主题。全书既强调了与实用有关的内容,在分析和理论研究上也很有深度。另外,对于书中提供的算法,读者可以放心实现和调试,并用这些算法来解决问题。本书内容全面、论述清晰,适合于计算机科学和数学领域各个层次的人员使用。图和图算法在当今的计算应用中颇为常见。对于在实际中出现的图处理问题,本书描述了一些已知的最重要的解决方法。由于需要相关知识的人日渐增多,这本书的主要目的就是让他们了解这些方法及其所蕴藏的基本原则。全书由最基本的原则展开,并从基本概念开始介绍,逐步过渡到经典方法,最后对仍在开发中的最新技术加以讨论。在对算法和应用的描述中,我们提供了精心挑选的示例、详尽的图表以及完备的补充说明。算法为研究当前所使用的最为重要的计算机算法,计划共出版3卷,本书是其中的第2卷。第1卷(第1一Ⅳ部分)所涵盖的是基础知识(第1部分)、数据结构(第Ⅱ部分)、排序算法(第Ⅲ部分)以及查找算法(第Ⅳ部分);这一卷(第V部分)则讨论图与图算法;而未出版的第3卷(第Ⅵ~Ⅷ部分)将介绍串(第Ⅵ部分)、计算几何(第Ⅶ部分)以及高级算法和应用(第Ⅷ部分)。在学习计算机科学课程之初,即学生已经掌握了基本的编程技巧,熟悉计算机系统,但是尚未选修计算机科学或计算机应用高级领域中的专业课程时,将这些书作为教材是很有用的。这些书也可用于自学,对从事计算机系统或应用程序开发的人来说,将这些书用作参考书也是相当有用的,书中包含了实用算法的实现,并对这些算法的性能特性提供了详尽的信息。该系列图书覆盖面非常之广,因此适于作为这一领域的入门读物。多年以来,《Java算法》一书已由世界各地的学生和程序员广泛使用,而以上这3卷书加在一起则构成了这本书的第3版。在这一版本中,我完全重写了有关内容,并且增加了数千个新练习、数百个新图表以及数十个新程序,而且对所有的图表和程序做了详尽的注释说明。在此不仅涵盖了新的主题,而且还对许多经典算法提供了更为充分的解释。全书强调了抽象数据类型,从而使得有关程序的应用面更广,而且与当今的面向对象编程环境也更为相关。对于已经阅读过本书以前版本的人来说,会从这一版中发现相当多的新内容;而对于所有读者而言,都能从中得到极为丰富的学习资料,可以更好地理解基本概念。这套书不仅适合程序员和计算机科学专业的学生阅读。每一个使用计算机的人都希望它能运行得更快,或者可以解决更大规模的问题。我们所考虑的算法代表了近5年发展起来的知识体系,该体系是在各种各样的应用中有效地使用计算机的基础。从物理学中的多体仿真问题到分子生物学中的基因序列问题,在此所描述的基本方法在科学研究中已日显重要:另外,对于从数据库系统到Internet搜索引擎等当今的软件系统,这些基本方法也已经成为其基本的组成部分。随着计算机应用的覆盖面越来越广,基本算法的影响也日益显著,特别是本书所介绍的基本图算法,作用更为突出。广大学生以及专业人士可能会参与完成各种计算机应用,随着这些应用中相关需求的增长,本书的目标就是要提供一个有效的资源,从而使他们充分了解并明智地使用图算法。本书范围《Java算法》(第3版)的"第V部分:图算法篇"共包括6章,分别介绍图的属性和类型、图搜索、有向图、最小生成树、最短路径以及网。其目的是为了使读者能够了解尽可能多的基本图算法,并对其基本属性有所理解。如果你曾经学过有关算法设计和分析基本原则的课程,并且有利用诸如Java,C++或C等高级语言编程的经验,那么对于在此介绍的内容,就会充分领略到它的价值。当然,《Java算法》(第3版)的第1一Ⅳ部分已经为此做了充分的准备。本书假设你已经对数组、链表以及ADT(AbstractDataType,抽象数据类型)设计等有基本的了解,而且使用过优先队列、符号表以及并查ADT,所有这些在第1一Ⅳ部分中都有详细的描述(而且在另外一些有关算法和数据结构的介绍性文字中也有说明)。图和图算法的基本属性由最基本的原则建立,但要充分理解,则往往需要拥有博大精深的数学背景。尽管在此对高级数学概念的讨论很简短,而且是概括性和描述性的,但与第1一Ⅳ部分所介绍的内容相同,要想对图算法有更深入的认识,自然应该有更高的数学水平。不过广数学水平各不相同的读者都可从此书中获益。这种说法可做如下考虑:相对于并非任何人都能理解的一些高级算法,每个人都应该理解并使用的基本图算法只是略有差异。在此的主要意图是结合贯穿于全书的其他方法来讨论重要的算法,而不是对所有数学知识做全面的介绍。不过,好的数学基础往往要求严格的行事方式,而这通常可使我们得到好的程序,因此我尽量在理论家所崇尚的形式规范性和实践家所需要的内容丰富性之间进行权衡,同时也不损害严格性。教学使用在本书的讲授方式上有很大的灵活性,这取决于教师的偏好,同时也依赖于学生所做的准备。可把本书用作面向初学者的数据结构课程,因为它阐述了足够的基本内容;也可把本书用作面向高水平学生的算法分析与设计课程,因为它不仅足够详细,而且涵盖了高级内容。有些教师可能希望强调与实现和实用有关的内容,而另外一些教师则可能希望把重点放在分析和理论概念上。可将本书与第1一Ⅳ部分结合起来,作为一门更为全面的课程讲授。这样,教师就可以完全用一种一致的风格来介绍基础知识、数据结构、排序、查找和图算法等全部内容。书中的练习(几乎全都是在这一版中新增加的)可分为多种类型。有一些是为了检查对正文中内容的理解,只要求读者完成某个示例,或者应用正文中所描述的概念。另外一些则涉及实现和整理算法,或者进行实验研究,从而对不同算法加以比较以了解其属性。还有一些练习则相当于知识储备,是对一些重要信息所做的相当详细的说明,而这些信息本身不适于放在正文里。阅读这些练习并加以思考,会使每个读者都有意想不到的收获。实用算法任何人若希望更为有效地使用计算机,都可以将这本书作为参考,或用于自学。有编程经验的人可以从书中找到有关一些特定主题的信息。一般地,你可以抽取书中的各章独立地阅读。不过,有些情况下,某一章中的算法可能会用到前一章中所介绍的方法。本书的定位是对很可能会在实际中使用的算法加以研究。本书对所讨论的工具(即算法)提供了详尽的信息,读者可以放心地实现和调试,并用这些算法来解决问题,或在应用中利用它们来提供有关功能。在此对所讨论的方法提供了完整的实现,同时,针对书中一系列一致的示例程序的操作做了描述。由于我们采用了实际代码,而不是编写伪代码,因此这些程序很快就可以在实际中使用。通过访问本书的主页可以得到程序的代码清单。您可以用许多方法使用这些工作程序,从而帮助你研究算法。阅读它们以检查你对算法细节的了解,或用一种方法来处理实例化、边界条件和在编程中可能遇到的其他情况。运行这些程序,看看算法在实际中的表现,以根据经验研究性能,并根据书中提供的表检查结果,或试一下你自己所做的修改。实际上,由算法的一个实际应用已经得到了本书中的数百个图表。许多算法正是通过这些图表所提供的视觉维度直观地发现和得到的。本书将详细讨论这些算法的特性以及它们可能在哪些情况下是有用的。在此可建立算法分析与理论计算机科学之间的联系。在适当的情况下,都将给出经验性的结果以及分析结果,以说明为什么某些算法更为适用。如果有意义,还会对所讨论的实际算法与纯理论结果之间的关系加以描述。对于算法和实现的性能特性的特定信息,全书将对其进行综合性和概要性的讨论。编程语言书中所有实现所用的编程语言均为Java。程序中使用了大量的标准Java习惯用法且对于每个构造,正文中都做了简洁的描述。MikeSchidlowsky和本人基于ADT建立了一种Java编程的风格,并认为这是一个将算法和数据结构表示为实际程序的有效方法。我们在实现的优雅性、简洁性、有效性和可移植性方面做了很大的努力。程序风格会尽可能保持一致,因此类似的程序看-上去也是相似的。本书的目标是以尽可能简单明了的方式宋展示算法。对于许多算法而言,尽管所用的语言不同,但存在着相似性。作为一个突出的例子,Dijkstra算法就是Dijkstra算法,无论采用Algol-6,Basic,Fortran,Smalltalk,Ada,Pascal,C,C++,Modula-3,PostScript,Java,Python,还是任何一种其他的编程语言(这样的语言可谓不计其数)来编写,也不管所在的是何种环境,均可以证实为有效的图处理方法。一方面,采用这些语言(以及其他多种语言)宋实现算法会获得一些经验(本书的C和C++版本已经面世),代码会受到这些经验的影响:另一方面,对于这其中的一些语言,其属性会受其设计人员的经验所左右,而这些经验又来自于他对本书所讨论的部分算法和数据结构的使用。最后,我们认为本书所提供的代码不仅准确地定义了算法,而且在实际工作中也相当有用。 -
Java实例导学(美)Gary B.Shelly等著;董庆霞,李雪非译;董庆霞译本书特点:●适合对程序设计语言没有任何基础的读者●主要讲述了面向对象的程序设计语言的基本概念和方法;详细介绍如何利用Java小程序(applet)在网上进行发布及其与用户的交互性;使用Java抽象窗口工具(AWT)来构建应用程序和带有图形用户界面(GUI)的Java小程序。●实例丰富、新颖。书中用了6个项目将Java语言的基本概念和技术紧密结合在一起,读者在理解基本概念的基础上,能通过这些项目做到学以致用。●知识的架构合理,适合读者逐步进阶学习,从而掌握Java程序设计技术。●各章都提供了习题供读者自测,以检验读者对所学知识的掌握程度,查补知识上的漏洞,以便为以后的Java学习打下坚实的基础。本书是Java程序设计的入门书籍,重点介绍了面向对象程序设计的概念。通过编写现实中的案例,详细地讲解Java程序设计语言的基本概念和技术,例如,循环、数组、字符串、排序、AWT、数据文件等。本书适合初学Java语言的读者,可作为大学计算机及相关专业的教材,出可作为程序员的参考用书。 -
Java 基础教程樊荣编著本书主要讲解Java语言的核心基础知识,使读者能有个良好的语言基础,为以后进一步提高打下基础。 作者在长期的Java语言教学中,总结出初学者、一般开发人员不容易理解的概念、知识要点,通过大量的有针对性的简单例子和丰富通俗的讲解,帮助读者清晰全面地了解Java语言的最核心概念和知识。 本书的理念是从实践中学习,从代码中理解概念,让读者从程序实践和感性认识上升到对核心概念的理解,重点讲解Java语言核心知识。书中的内容涵盖了Java语言基础、面向对象编程、异常处理、图形化用户界面、I/Q、线程以及网络编程等。 本书的主要对象是Java语言的初学者以及希望能够比较全面地理解Java语言的读者。 -
爪哇夜未眠蔡学镛著本书是一本散文集。作为一名资深Java程序设计师,作者用清新自然的笔触记录下自己学习、工作生活中的所见所思。书中收录的文章内容贴近程序员的生活,令读者产生强烈共鸣。此外,书中部分文章也以轻松的风格介绍了学习Java技术时的一些常见问题,并介绍了一些优秀的Java书籍,能够帮助读者兴趣盎然地学习Java技术。本书适合于Java程序员、专业软件开发者、程序设计爱好者阅读。这本书的出现,纯粹是无心插柳的结果。四年多前,我还在就读台湾的清华大学信息系(ComputerScience)博士班时,和同学一起设计一套JavaMOD(Multimedia-On-Demand)系统,得了Java应用软件竞赛校园组的冠军,也因此在不久之后,知名的O''''Reilly出版社台湾分公司邀请我在网站上开辟Java专栏,便开始了我的兼职作家岁月。于是我在课业和工作之余,写写Java书评、技术心得、生活杂感,渐渐地,这些文章竟也得到大家的支持与喜爱,透过网络广泛地散播,这实在是我始料未及的。随着文章累积越来越多,我于是想将这些文章集结出版,以为纪念。
