本书为那些想要不断挑战自己的读者引入了新的类库、代码示例和项目创意,并将不同技术所用到的库和工具统一起来,通过注释加以标明,以方便读者阅读。书中探讨了字符串实用工具、语义网络、图形、可视化数据以及多媒体应用等,相信每个读者都能从中受益。\r\n 本书主要内容:\r\n 语义网络的概念、工具以及代码\r\n 创建和处理RSS反馈表\r\n 使用分析器生成器或由Java核心、开源项目提供的xML API将非XML文\r\n 本结构转换为XML\r\n 利用单元矩阵(Cell Matrix)的Java模拟器,构建和测试自己的单元电路,并\r\n 实现在分布式系统内与其他单元电路的连接\r\n 用开源类库创建有关科学和数学的应用程序\r\n 使用Java创建动态音乐和声音,并将一些Java API应用于简单的数据发音\r\n 重用大量开源Java项目免费库中的代码
第1章 JAVA语言及核心API \r\n 1.1 在Java中没有for:使用增强的for循环 \r\n 1.2 计数:使用枚举 \r\n 1.3 执行安全存放:使用类型安全映射 \r\n 1.4 常用的泛型:使用泛型参数来编写方法 \r\n 1.5 使用多个参数:编写Vararg方法 \r\n 1.6 要决断:使用Java断言 \r\n 1.7 以纳秒级的时间计算:使用System.nanoTime \r\n 1.8 亚毫秒级的线程休眠\r\n 1.9 创建一个匿名的类 \r\n 1.10 “==”不等于“.equals” \r\n 1.11 本章小结 \r\n第2章 字符串实用程序 \r\n 2.1 使用正则表达式来搜索文本 \r\n 2.2 使用String.split方法 \r\n 2.3 在一个String中查找子串模式 \r\n 2.4 使用Regex捕获组 \r\n 2.5 使用正则表达式进行替换 \r\n 2.6 使用Scanner类进行语法分析 \r\n 2.7 使用Scanner类分析复杂的语法 \r\n 2.8 产生随机文本 \r\n 2.9 在Java 1.5中显示数组 \r\n 2.10 二进制编码和解码 \r\n 2.11 使用MessageFormat格式化字符串 \r\n 2.12 使用Formatter(格式化程序)格式化字符串 \r\n 2.13 本章小结 \r\n第3章 处理XML和HTML \r\n 3.1 XML简要回顾 \r\n 3.2 使用WebRowSet创建XML \r\n 3.3 SAX栈:记录SAX中的标签关系 \r\n 3.4 使用SAX:直接调用ContentHandler \r\n 3.5 筛选式触发ContentHandler \r\n 3.6 使用DOM4J读取XML文档 \r\n 3.7 使用XPath来简化数据提取 \r\n 3.8 不可见的标签:在加载到DOM4J中之前筛选文档 \r\n 3.9 使用JavaCC创建分析器 \r\n 3.10 将其他语法转换成XML \r\n 3.11 屏幕抓取HTML页面以获取数据 \r\n 3.12 使用Lucene进行搜索 \r\n 3.13 本章小结 \r\n第4章 逐步了解语义网(Semantic Web)\r\n 4.1 N3和Jena概述 \r\n 4.2 为你的组织创建RDF词汇 \r\n 4.3 在Jena中使用RDF层次结构 \r\n 4.4 将Dublin Core附加到HTML文档 \r\n 4.5 使用Jena RDQL进行查询 \r\n 4.6 Lojban、RDF和Jorne项目 \r\n 4.7 使用Informa发布RSS新闻馈送 \r\n 4.8 聚集RSS新闻馈送 \r\n 4.9 使用Informa轮询RSS馈送 \r\n 4.10 使用Informa筛选RSS馈送 \r\n 4.11 本章小结 \r\n第5章 科学和数学应用 \r\n第5章 科学和数学应用 \r\n 5.1 (Fun-Tors)有趣的物件:创建和应用仿函数 \r\n 5.2 奇特的仿函数:使用复合仿函数 \r\n 5.3 大信息容量:使用Colt的BitVector \r\n 5.4 通过BitMatrix创建真值表 \r\n 5.5 使用JScience Quantities(量) \r\n 5.6 难以处理的小数:任意精度的运算 \r\n 5.7 使用JScience中的代数函数 \r\n 5.8 连接非门:使用端口连接真值表 \r\n 5.9 使用JGraphT进行连接 \r\n 5.10 连接通用处理单元 \r\n 5.11 使用Joone构建神经网络 \r\n 5.12 将JGAP用于遗传算法 \r\n 5.13 使用Jade构建智能代理 \r\n 5.14 使用JwordNet向导英语 \r\n 5.15 本章小结 \r\n第6章 图形和数据可视化 \r\n 6.1 使用XML定义Java GUI \r\n 6.2 利用矢量消除破损:使用SVG显现数据 \r\n 6.3 了解SVG:使用Batik查看SVG的内容 \r\n 6.4 人体艺术:将JGraphT转换成JGraph视图 \r\n 6.5 使用JGraph属性图 \r\n 6.6 绘制新版图:使用JFreeChart创建图表 \r\n 6.7 使用Java创建报表 \r\n 6.8 周期模式:简单的2D数据可视化 \r\n 6.9 精致的变换:在Java 2D中使用仿射变换 \r\n 6.10 提供缩放功能:使用Piccolo构建可缩放的GUI \r\n 6.11 本章小结 \r\n第7章 多媒体和线程同步 \r\n 7.1 使用JFugue制作音乐 \r\n 7.2 同Java Sound MIDI一道使用JFugue \r\n 7.3 将事件发送到一个MIDI输出设备 \r\n 7.4 嘟嘟声和哔哔声:使用JMusic合成声音 \r\n 7.5 嘶嘶声、嗡嗡声、哼哼声:使用JMusic中的噪声和复杂的合成音 \r\n 7.6 使用低级Java Sound(声音) \r\n 7.7 是的,亲爱的,我正在听:读取来自输入线数据线的音频 \r\n 7.8 对我讲话:采用Java Speech使程序通话 \r\n 7.9 缩减、重用、回收利用无用单元:GC和Javolution实时API \r\n 7.10 抓紧时间:使用CyclicBarrier同步线程 \r\n 7.11 本章小结 \r\n第8章 娱乐、集成和项目创意 \r\n 8.1 程序之外的思考:使用Java来控制乐高机器人 \r\n 8.2 使用AWT Robot类控制鼠标 \r\n 8.3 单击和选取:使用JCalendar选取日期 \r\n 8.4 快速投递:使用HttpClient向HTTP服务器投递表单 \r\n 8.5 使用Java模拟单元矩阵(Cell Matrix) \r\n 8.6 自然界会变戏法:单元矩阵的进化 \r\n 8.7 真正的工蚁:使用Apache Ant运行应用程序 \r\n 8.8 玩赌博游戏:使用BeanShell \r\n 8.9 测试、测试、再测试:创建JUnit测试 \r\n 8.10 展望未来:将JXTA用于对等式应用 \r\n 8.11 网格是很有用的:使用Globus工具包和网格计算 \r\n 8.12 闲聊:使用Jabber向应用程序添加聊天功能 \r\n 8.13 需要一些汇编:编写JVM汇编语言 \r\n 8.14 字节码缺陷:结合遗传算法与BCEL \r\n 8.15 “爪哇”替代品:将其他语言编译成字节码 \r\n 8.16 Lojban的语法查看器 \r\n 8.17 打补丁:合成器补丁编辑器 \r\n 8.18 带有连线的单词:WordNet浏览器 \r\n 8.19 可随时提供的信息:自动新闻馈送(Newsfeed)生成器 \r\n 8.20 机器人学校:神经网络机器人 \r\n 8.21 注释革新:Java 5.0注释管理工具 \r\n 8.22 变幻之风:使用CVS和源代码控制 \r\n 8.23 提前伪造:将SourceForge用于你的项目 \r\n 8.24 本章小结 \r\n术语表
Brian D.Eubanks是Internet技术方面的专家,Eu Technologies公司的创始人。他有着二十多年的从业经验,担任过计算机程序员、网络工程师和系统顾问等职。目前致力于Java、xML和Flash方面的工作。
本书主要介绍由Sun微系统公司创建的Java编程语言。本书的读者对象是不同专业知识水平的所有Java开发人员,以及那些希望寻找有趣的和有用的API或项目创意的开发人员。从最初发布以来,Java已经经过了漫长发展。当我于1996年第一次接触Java时,当时的版本是1.0,并且只有少数人知道Java。当时几乎没有任何有经验的Java开发人员,且只有非常少的代码库,并且没有企业服务器。当时看来,它只是一种不成熟的语言,但是具有远大的前程。其实这些都是次要的,JVM的平台无关性功能才是Java不断成长的关键。目前,经过10年的发展,Java已经成为无所不在的成熟技术。核心API自身包含大量主题领域中的三千多个类。世界500强公司现在都围绕Java来构建整个公司计算策略,数以百万计的网站都在运行servlet和客户端的applet。
但许多开发人员认为这就是使用该语言可以做的所有工作,我对此感到非常惊讶。除了核心内容外,Java还有许多免费的财富,即开放源代码的库。本书就是为了介绍这些库,以及介绍一些Java可以实现的有趣的和有用的内容而编写的。而不是为了编写一本Java编程参考书籍—— 已有许多这样的优秀书籍可帮助人们学习编写Java代码。相反,我希望读者可以通过发现使用Java可以完成许多有趣的事来发现乐趣,而不是按部就班地学习。本书主要为对Java有一定了解(从基本了解到中等程度的了解)以及正在寻找改进其代码方法的程序员而编写。
本书中有许多示例代码和各种API的“Hello World”程序。其中的一些是介绍性的示例,而其他的一些示例则较为高级。书中有时会给出一些代码提示,有时则提出关于新项目的想法,如果某个人曾经试着实现这些想法,则这些项目就可能成为成功的开放源代码项目!如果你实现了任何有关这些项目的一个想法,那么我鼓励你加入本书的网站,和其他读者一同协作来完成开发以避免犯同样的错误。开发人员最应该做的事情是,协同工作并和其他人共享工作成果。
0.1 本书的结构
本书分为8章,每一章介绍了Java的特定领域。下面给出了每一章的简短描述。
第1章
在第1章中,我们讨论了一些核心API特性—— 一些存在较长时间但却很少有人知道的特性,而其他一些特性则是Java 5的新特性。我们对新的for循环、枚举、泛型、匿名类和断言展开了讨论。
第2章
在第2章中,我们讨论了字符串处理技术。首先介绍正则表达式,随后讨论随机文本、数组、二进制字符串以及消息格式化。Regex是功能非常强大的工具,可用来搜索、拆分和替换文本。从Java 1.4开始出现该工具,但许多Java程序员新手仍然不熟悉该工具。正则表达式是分析复杂文档的好起点。
第3章
在本章中,我们处理XML和HTML文档以及其他类型的结构化文本。我们介绍了分析器生成器并且给出了一些使用该工具的示例代码。
第4章
第4章介绍了语义网(Semantic Web),这是下一代的网络,我们将从概念上而不是用包含文本的文档实现事物的真正关联。我们介绍了一些使用RDF和RSS的API。
第5章
本章介绍了Java中的科学和数学应用程序。我们链接了大量开放源代码的项目,这些项目使用了不同方面的科学和数学知识。
第6章
本章中讨论了能简化图形应用程序开发及方便添加新特性的API。
第7章
本章处理声音和音乐API,其中还介绍了高级的线程同步。
第8章
本书的最后一章介绍了其他开放源代码的项目,并且讨论了有关创建自己的项目或创建集成前面章节中代码的项目的想法。
0.2 本书的网站
Java非常有趣,我们在本书中介绍了一些优秀的项目,也介绍了一些可用于你自己的项目的有用工具和技术。为了最有效地发挥Java的作用,你需要在某些情况下利用开放源代码的项目,这可以在本书的配套网站http://wickedcooljava.com中找到。该网站提供了正文、勘误表和代码示例中提及的项目的链接。此外,该网站中还提供了方便读者讨论本书内容及组织新项目的论坛。我希望能以此鼓励你学习Java核心API以外的内容并继续更深层次的学习。
无封面