重磅推荐
【编辑推荐】

从lambda表达式、JavaFX 8,到网络编程和支持移动设备等方面,Java 8都有许多更新。本书包含了数百个经过实践验证的技巧,内容涵盖了广泛的Java主题,可帮助你快速进入编程状态。你可以从中学到一切有用的技术,包括调试、数据结构、GUI开发和函数编程。

本书的每个技巧既给出了代码部分,也给出了运行结果,还有对它们的讨论。你可以免费使用这些代码。如果你对Java基础知识比较熟悉,学习本书将使你进一步掌握语言方面的通用知识和Java 8 中主要API方面的特殊知识。



【内容简介】

本书的主题包括:

· 用于编译、运行和调试的方法。

· 对文本的处理、比较和重新安排。

· 用于字符串匹配和模式匹配的正则表达式。

· 处理数字、日期和时间。

· 使用集合、数组和其他类型实现数据的结构化。

· 面向对象技术和函数编程技术。

· 目录和文件系统运算符。

· 使用图形、视频和音频。

· GUI开发,包括JavaFX和处理器。

· 客户端和服务器端的网络编程。

· 数据库访问,使用JPA、Hibernate和JDBC。

· 处理JSON和用于数据存储的XML。

· 多线程和并发机制。


【作者简介】

Ian F.Darwin,已在计算机工业界工作了三十年。除了编程和提供咨询,Ian还为Learning Tree International公司讲授UNIX、C和Java,这是一家世界上*的培训公司之一。他还编写了《Checking C Programs with Lint》(O'Reilly 公司出版)一书,以及超过100篇有关C和UNIX方面的文章。


【媒体评论】

业界评论

“O’Reilly Radar博客有口皆碑。” ——Wired

“O’Reilly凭借一系列(真希望当初我也想到了)非凡想法建立了数百万美元的业务。” ——Business 2.0

“O’Reilly Conference是聚集关键思想领袖的*典范。” ——CRN

“一本O’Reilly的书就代表一个有用、有前途、需要学习的主题。” ——Irish Times

“Tim是位特立独行的商人,他不光放眼于长远、广阔的视野并且切实地按照 Yogi Berra的建议去做了:‘如果你在路上遇到岔路口,走小路(岔路)。’回顾 过去Tim似乎每一次都选择了小路,而且有几次都是一闪即逝的机会,尽管大路也 不错。” ——Linux Journal


【目录】

前言

第1章 入门:编译、运行和调试Java 程序

引言

编译和运行Java 程序:JDK 方式

用带语法高亮显示的编辑器编辑和编译程序

使用IDE 编译、运行和测试程序

有效使用CLASSPATH

下载和使用代码示例

使用Ant 工具自动编译

使用Apache Maven 自动设置依赖关系、编译、测试和部署

使用Gradle 自动设置依赖关系、编译、测试和部署

处理过期警告

没有#ifdef 的条件编译

使用断言机制维护程序的正确性

使用JDB 调试

用单元测试避免调试

用持续集成维护代码

获取可读回溯

更多的Java 源代码:程序、框架和库

第2章 与运行环境交互

引言

获得环境变量

从系统属性获得信息

了解当前的JDK 版本

编写操作系统相关的代码

使用扩展包或其他API 包

解析命令行参数

第3章 字符串

引言

用Substring 分解字符串

将字符串分解成词

用StringBuilder 连接字符串

处理单个字符串

字符串对齐

Unicode 字符和String 之间的转换

按单词或字符颠倒字符串

扩展和压缩Tab

控制字母大小写

缩排文本文档

输入非打印字符

删除字符串的尾部空格

解析用逗号分隔的数据

程序:一个简单的文本格式化工具

程序:Soundex 算法

第4章 正则表达式的模式匹配

引言

正则表达式语法

在Java 中使用正则表达式:测试模式

找到匹配的文本

替换匹配的文本

打印匹配的所有字符串

打印包含一个模式的行

在正则表达式中控制大小写

匹配“重音符”或复合字符

在文本中匹配换行符

程序:Apache 日志文件解析

程序:数据挖掘

程序:完整的Grep

第5章 数字

引言

检查字符串是否是有效数字

用小数据类型储存大数据类型的数字

数字与对象的相互转换

直接使用分数而不用浮点数

保证浮点数的准确

比较浮点数

舍入浮点数

格式化数字

二进制、八进制、十进制和十六进制之间的转换

对整数序列的操作

使用罗马数字

复数的正确格式化

生成随机数

计算三角函数

取对数

矩阵乘法

使用复数

处理非常大的数字

程序:TempConverter

程序:数字回文

第6章 日期和时间——新的API

引言

查看当天日日期

日期和时间的格式化

日期/时间、YMDHMS 和纪元秒(Epoch Seconds)之间的转换

将字符串解析为日期

两个日期之间的差

日期或日历的加减

与传统日期和日历类的接口

第7章 结构化数据

引言

使用数组

调整数组长度

集合框架

动态数组列表

使用泛型集合

使用泛型避免强制类型转换

迭代器的使用方式

使用Set 避免元素重复存储

使用迭代器或枚举

链表结构

使用Hashtable和HashMap 进行映射

Properties 类和Preferences 类

对集合排序

避免频繁排序

在集合中查找对象

将集合转换为数组

自定义迭代器

堆栈

多维结构

程序:运行时间比较

第8章 面向对象技术

引言

使用toString() 格式化对象并输出

覆盖equals() 和hashCode() 方法

使用关闭钩子清理程序

使用内部类

通过接口提供回调

多态性/抽象方法

传递数值

使用类型安全的枚举

Singleton 模式

自定义异常

使用依赖注入

程序:绘图仪

第9章 函数式编程技术:函数接口、流、并行集合

引言

使用lambda/Closure 替代内部类

使用lambda 预定义接口

使用流

使用并行流与集合提高吞吐量

创建自己的函数式接口

函数引用

Java Mixins:方法混合

第10章 输入与输出

引言

从标准输入设备读取数据

从控制台或控制终端读取数据,隐藏读取密码

向标准输出或标准错误流写数据

使用Formatter 和printf 输出

使用Stream Tokenizer 的扫描输入

使用Scanner 类扫描输入

使用语法结构扫描输入

按文件名打开文件

复制文件

把文件读入一个字符串

重新分配标准流

复制一个流

读/写不同的字符集

行结束符

平台相关的文件编码

阅读“连续”行

读/写二进制数据

在文件中定位

处理C程序写的数据流

存储和还原Java 对象

防止ClassCastExceptions 异常

读写JRA 或Zip 文档

利用get Resource() 和getResourceAsStream() 获得文件

读写压缩文件

了解串行和并行端口的通信API

将用户数据保存到磁盘

程序:将文本输出为PostScript 格式

第11 章 目录和文件系统操作

引言

获取文件信息

创建一个文件

重命名一个文件

删除一个文件

创建临时文件

改变文件属性

列出目录内容

获取根目录

创建新的目录

使用路径而不是文件

使用FileWatcher 服务得到文件变化的通知

程序:Find

第12 章 媒体:图形、音频、视频

引言

使用Graphics 对象画图

无需编写主函数显示图形组件

绘制文本

在组件中央绘制文本

绘制阴影

绘制2D(二维)文本

使用应用程序字体绘制文本

绘制图像396

使用javaximageio 读写图像

播放音频/语音文件

播放视频文件

在Java 中打印

程序:PlotterAWT

程序:Grapher

第13章 网络客户端

引言

访问服务器

查找和报告网络地址

处理网络错误

读写文本数据

读写二进制数据

读写串行化数据

UDP 数据报

程序:TFTP 的UDP 客户端

URI 、URL,还是URN?

轻量级Web 服务客户端

SOAP Web 服务客户端

程序:Telnet 客户端

程序:聊天客户端

程序:简单的HTTP 链接检查器

第14 章 图形用户界面

引言

显示GUI(图形用户界面)组件

在事件调度线程上运行GUI

设计一个窗口布局

选项卡视图

事件处理:使按钮工作

使用匿名内部类进行事件处理

使用Lambdas 的事件处理

用“窗口关闭”来终止程序

对话框

捕捉和格式化GUI 异常

在窗口上打印

使用JSpinner 选择一个值

用JFileChoose 选择一个文件

选择一种颜色

用HTML 格式化jcomponents

将主窗口居中显示

改变Swing 程序的外观和感觉

改进MAC OS X 下的Swing GUI

使用JavaFX 构建GUI 应用程序

程序:定制字体选择器

程序:定制AWT/Swing 布局管理器

第15 章 国际化和本地化

引言

用I18N 资源创建一个按钮

列出可用的语言环境

使用I18N 资源创建菜单

编写国际化的方便子程序

使用I18N 资源创建一个对话框

创建一个资源包

从代码中提取字符串

使用特定的语言环境

设置默认语言环境

使用MessageFormat 格式化消息

程序:MenuIntl

程序:BusCard

第16 章 Java 服务器端

引言

打开服务器套接字

返回一个响应(字符串或二进制)

通过网络连接返回对象信息

处理多个客户端

为HTTP 协议服务

用SSL 和JSSE 保护Web 服务器

网络日志

使用SLF4J 进行网络日志记录

使用log4j 进行网络日志记录

使用javautillogging 进行网络日志记录

查找网络接口

程序:一个Java 聊天服务器

第17 章 Java 和电子邮箱

引言

发送电子邮件:浏览器版本

发送电子邮件:真实的

启用服务器程序的邮件发送

发送MIME 邮件

提供邮件设置

阅读电子邮件

程序:MailReaderBean

程序:MailClient

第18 章 数据库访问

引言

用JPA 或Hibernate 轻松访问数据库

JDBC 设置和连接

连接JDBC 数据库

发送一个JDBC 查询并获取结果

使用JDBC 准备好的语句

在JDBC 中使用存储过程

使用ResultSet 修改数据

在RowSet 中存储

使用SQL 更新数据

查找JDBC 元数据

程序:SQLRunner

第19 章 处理JSON 数据

引言

直接生成JSON

使用Jackson 解析和编写JSON

用orgjson 解析和编写JSON

第20 章 处理XML

引言

用JAXB 在对象与XML 之间转换

使用序列化实现对象与XML 之间的转换

通过XSLT 转换XML

用SAX 解析XML

用DOM 解析XML

用XPath 查找XML 元素

用Schema 或DTD 验证结构

用DOM 和XML 转换器生成自己的XML

程序xml2mif

第21 章 包和打

引言

创建一个封装包

用Javadoc 为类写文档

超出Javadoc:注解/元数据

用jar 归档

从一个JAR 运行一个程序

将一个类作为JavaBean

将Bean 放入一个JAR 中

打包一个Servlet 到WAR 文件

编写一次,随处安装

编写一次,在Mac OS X 上进行安装

Java Web Start

签名你的JAR 文件

第22 章 Java 线程

引言

在不同线程中运行代码696

用动画显示运动图像700

停止一个线程704

交会和超时707

用synchronized 关键字实现线程同步708

使用锁简化同步

用wait() 和notifyAll() 同步线程

使用队列接口简化生产者/消费者模式

用Fork/Join 优化并行处理

在编辑器的后台保存

程序:多线程网络服务器

使用Concurrency Utilities 简化服务器

第23 章 反射或“命名类的类”

引言

获取类描述符

查找并使用方法和域

通过反射访问私有的方法和域

动态加载并实例化一个类

通过一个ClassLoader 从头开始构造一个类

性能计时

输出类的信息

显示包中包含的类清单

使用和定义注解

通过注解找到类似插件的类

程序:CrossRef

程序:AppletViewer

第24 章 Java 和其他语言的结合

引言

在Java 中运行外部程序

运行一个程序并捕捉其输出

通过javaxscript 调用其他语言

启动自己的脚本引擎

Java 和Perl 的结合

通过本机代码调用其他语言

从本机代码中调用Java

后记

附录A Java 的过去与现在


【前言】

【书摘与插画】


返回顶部