本书从Java语言的特点、语法、开发环境入手,深入讲解如何利用JDK提供的API进行应用开发,如输入输出、线程、图形界面、数据库存取、XML等,并对Java语言的高级开发技巧,如分布式计算、本地调用、Annotation、反射、动态代理、JMX等进行详细的阐述。本书基于最新的JDK 6.0,对该版本新引入的特性:JDBC 4.0、内嵌Apache Derby数据库、动态语言支持、本地化桌面支持、增强的XML解析引擎等,均开辟专题予以介绍。并对Java相关技术和常用软件工具包进行详细讲解,包括:Java客户端开发技术SWT和JavaFX,数据库存取框架Hibernate和iBatis,Groovy,以及Java与Ruby、Python、PHP等动态语言的结合,日志和日程工具包等。\r\n 本书既可供Java语言的初学者作为入门书籍使用,也可供具有一定开发经验的人员作为进阶材料阅读。
第1章 Java基础 \r\n第2章 Java进阶 \r\n第3章 第一个Java程序 \r\n第4章 文件系统 \r\n第5章 网络通信基础 \r\n第6章 输入输出综合 \r\n第7章 Java线程 \r\n第8章 并发情况下的多线程编程 \r\n第9章 Java安全 \r\n第10章 图形界面开发 \r\n第11章 Applet、JavaWebStart、SWT与JavaFX \r\n第12章 数据库存取 \r\n第13章 开源数据库产品 \r\n第14章 分布式计算 \r\n第15章 Java本地调用 \r\n第16章 反射机制及其应用 \r\n第17章 Java动态编程 \r\n第18章 与动态语言的结合 \r\n第19章 JMX资源管理容器 \r\n第20章 XML开发 \r\n第21章 常用工具包 \r\n附录A 在XMLSpy中编写DTD \r\n附录B 在XMLSpy中编写XML Schema \r\n附录C HTTP 1.1状态代码及其含义
涂传滨,1999年毕业于南昌大学。拥有多年的企业应用开发经验,现任厦门三五互联科技股份有限公司(http://www.35.com)技术专家,从事基于互联网的应用系统研发,研究范围包括基于互联网的应用系统架构、应用集成、安全技术、软件过程等。在CN级刊物上发表论文多篇,从2004年底开始技术书籍的写作。
当博文视点的毕宁老师邀请笔者写一本关于JDK 6.0方面的技术书籍时,没有多加思索便答应了下来,当时认为凭借对Java语言的熟悉程度,要完成这样一本Java基础书籍是不难的。不料当真正进入到写作状态时才发现,离开了终日倚重的集成开发环境和企业服务容器的支持,要把Java变量存储、垃圾回收机制、线程、输入输出等基础概念阐述清楚,远比笔者之前参与的JBuilder和WebSphere题材难得多!
以Java语言为开发工具的程序员群体组成了国内最大规模的技术社区。但是笔者发现,在日益增多的Java程序员中,流行着一种错误的观点:学习Java语言重在掌握一些常用的开源框架——这和当年的“掌握了EJB就是Java高手”的观点是多么的相似!于是,出现了一种奇怪的现象:从事了多年Java应用开发的程序员,却不知道“堆”和“栈”的区别、不理解对象序列化的真实目的、不懂得如何编写线程安全的程序代码…… 他们眼中仿佛只有实用API和一些只知其一、不知其二的开源框架。这类程序员虽然能够完成日常的开发任务,但是却不能开发出具备高可用性的应用系统,当应用系统出现故障时的诊断和恢复能力也不足。
本书特色
市面上介绍Java开发的技术书籍琳琅满目。与其他书籍相比,本书有以下特色。
与Java教材比较
各类培训机构使用的Java教材重在介绍Java语法和基础API。本书仅花费了一章的篇幅来介绍Java语法,因为今日的面向对象语言在语法方面实际上已经趋同,而且语法从来不是学习Java语言的难点。本书重在阐述Java程序的运行原理和高级开发技巧。
与介绍开源框架和工具包的书籍比较
开源框架和工具包在Java应用开发领域正发挥着越来越关键的作用,虽然视它们为Java开发的全部是错误的,但是忽视它们的地位同样是不对的。实际上,各类开源框架和工具包的涌现与Java阵营的策略方向是吻合的——面对大量语法越来越简单、入门门槛越来越低的新型语言的挑战,Java没有大幅度改变自身语言结构,而是把突围的重点放在增强工具的易用性方面:近年来,Java集成开发环境发生了突飞猛进的变化、由全世界聪明的程序员贡献的开源框架和工具包迅速增多。开源框架和工具包不仅大幅度提升了Java应用开发的产能,彻底改善了Java企业开发烦琐、冗长的过程,而且正在为JDK注入新鲜血液:新加入JDK的并发工具包(java.util.concurrent包)、XML与Java对象的映射引擎JAXB等都源自开源工具包。
当然,本书不是专门介绍开源框架和工具包的书籍,而是对它们采取为我所用、拓宽视野,进而达到让读者加深理解的目的。例如,在阐述输入输出的过程中涉及的HttpUnit、J-FTP等;在阐述数据库存取的过程中涉及的数据库存取框架Hibernate和iBatis;嵌入式数据库BerkeleyDB和StelsEngine;在阐述动态代理的过程中涉及的Hibernate拦截器和Spring AOP;在阐述Java动态编程的过程中涉及的Javassist和Spring方法注入;在阐述XML解析、编辑、转换、校验、映射的过程中涉及的多种工具包。此外,本书还独立开辟了一章篇幅集中介绍常用工具包,包括Quartz、XFire、Velocity等。
与介绍JavaEE的书籍比较
JavaEE与JavaSE的界线正在日渐模糊,比如Web Services开发在传统上属于JavaEE的范畴,但是JavaSE已经提供了通过Annotation快速开发Web Services的能力。在处理与JavaEE的关系方面,本书采取不拘一格的态度:如果有助于读者理解知识点的话,则适度地引入一些JavaEE的知识。例如,在阐述基于HTTP协议的开发过程中,为了帮助理解Web站点如何保存用户状态,本书对Web容器工作原理进行了简单介绍。
本书的读者对象
本书涉猎广泛,适合以下读者群体:
Java语言的初学者
从全日制院校毕业的计算机相关专业的学生,以及在各类培训机构接受过Java语言培训的学员,因为缺少实际的项目经验,急需寻找有别于课堂上使用的Java基础教材的技术书籍。本书作者拥有多年的一线开发和设计经验,深谙日常练习题和高可用的复杂系统之间的天壤之别。初学者们可以从提炼自实际项目的大量开发专题中汲取丰富的营养。
谋求进阶的Java程序员
如上所述,大量的程序员对诸如Java内存堆栈、对象序列化、线程安全等概念存在模糊认识,通过阅读本书,将能在短期内迅速澄清。更为难能可贵的是,本书所介绍的Java本地调用、Java并行开发、Java动态编程、JMX资源管理容器、嵌入式数据库等章节均属于Java技术书籍中的“罕见”内容。例如,围绕IoC和AOP出现了大量的介绍Spring框架的技术书籍,但是唯独本书指导读者们如何自己动手实现一个动态代理框架。
需要与异质语言互操作的Java程序员,以及需要与Java语言互操作的其他程序员
笔者日常使用的语言不限一种,深知异质语言、异构平台互操作需求的普遍性。通过本书,读者们不仅能找到Java语言与Ruby、PHP、Python、Groovy等动态语言互操作的途径,而且还能在Linux平台上体验Java调用原生的C程序,在Windows平台上体验Java调用Delphi程序,以及通过JCOM调用COM组件的无限乐趣。
需要补充新知、了解动态、开拓视野的软件开发从业人员
为了迎接Web 2.0时代的到来,JDK在编程的动态性和桌面GUI方面适时予以增强。另一方面,围绕着Java基础API,近年来涌现出了大量的开源框架和工具包。这些新知识对于Java程序员来说,既是对产能提升的机遇,也是对能力提升的挑战。所幸的是,本书的读者将能收获大量的JDK之外的知识。
本书内容
章 名 核心内容
第1章 Java基础 本章的目的在于帮助读者建立对Java语言的基本认识。首先从Java语言的特点谈起,然后分析Java语言的运行环境和,最后阐述Java语言诸多特点中最本质、最重要的特点——对象性
第2章 Java进阶 本章内容可以分为3部分:Java内存管理机制(包括垃圾收集、对象引用类型、变量存储和复制的原理)、Java语法进阶(包括异常、集合、泛型、修饰等)、实用工具(包括代码注释和Javadoc工具、类包管理工具jar命令、定制JVM启动参数、Java程序调试工具、Java进程监控平台、JVM内存分析工具)
第3章 第一个Java程序 本章首先下载、安装、设置Java开发工具——JDK 6.0,接下来动手在新建立的环境中编写我们的第一个Java应用程序
第4章 文件系统 本章开篇先鸟瞰式地介绍Java输入输出的体系结构,然后进入利用输入输出API操作文件系统的正题,分为顺序存取和随机存取两种操作方式,最后利用一些实用例程帮助读者们进一步熟悉Java文件及目录对象的常用方法和属性
第5章 网络通信基础 Java作为一种高级语言,从OSI参考模型之传输层开始向程序员提供编程接口,本章围绕这些核心编程接口向读者们介绍如何开发基础的网络通信程序
第6章 输入输出综合 本章首先回顾Java输入输出API,包括字节流、字符流和对象流。接下来对对象序列化、HTTP开发、大文件传输、字符集问题展开专题讨论。最后是一些输入输出相关的经典范例
第7章 Java线程 本章首先介绍线程理论,然后介绍多线程编程的基础技能:创建和启动线程、管理线程的状态、线程组,接着介绍如何利用管道在线程之间实现传输信息。最后利用本章介绍的多线程技术开发一个类似网络蚂蚁的多线程下载程序
第8章 并发情况下的多线程编程 本章内容包括:分析线程安全问题的现象和本质,并寻求各种现象的解决方案;介绍现代网络服务器经常采用的线程池工作模式,并带领读者们开发基本的线程池;并发工具包在开发线程池方面带来的便利
第9章 Java安全 本章一方面阐述安全技术的基石,包括:消息摘要、对称和不对称加密、数字签名和数字证书;另一方面指出应用系统安全的目的是信息存储安全、信息传输安全、访问控制(访问控制又可以分为身份认证和权限管理)。向读者们揭示如何在Java安全框架下利用基础安全技术实现应用系统的安全需求
第10章 图形界面开发 本章首先介绍利用java.awt.Graphics进行基础绘图,然后系统阐述AWT和Swing开发的基础知识,包括控件、布局管理器和事件模型。接下来在JBuilder中利用可视化环境实际开发Java图形界面应用程序。最后介绍JDK 6.0的桌面API增强
第11章 Applet、JavaWebStart、SWT与JavaFX 本章内容分为Applet、JavaWebStart、SWT和JavaFX共4节,其中的重点在于Applet和SWT,而JavaWebStart是一项借助于浏览器的应用程序发布途径、JavaFX目前尚未进入成熟阶段
第12章 数据库存取 本章首先介绍JDBC开发的基础知识,包括JDBC驱动程序、增删改查数据等基础开发、元数据、JDBC异常。然后分成数据集二次处理、RowId、动态游标、预编译执行计划、批处理、操作大二进制数据、事务共7个专题详细地介绍JDBC开发的技巧。最后向读者们展示了一种有别于数据库的持久化途径——Preferences API,以及在Java命名与目录服务(JNDI)的名字空间中绑定数据源对象
续表
章 名 核心内容
第13
无封面