java从入门到精通第三版?java入门到精通下载
大家好,今天小编来为大家解答java从入门到精通第三版这个问题,java入门到精通下载很多人还不知道,现在让我们一起来看看吧!
求 入门或基础的java英文版书籍
Java编程初步傻瓜书
零基础学Java电子教程附随书光盘
数据结与算法 Java语言版
精通JBuilder 2005中文版高清PDF+随书光盘
程序天下:J2EE整合详解与典型案例电子教程+随书光盘
JSF JavaServer Faces in Action
Spring in Action(第二版)
Manning jQuery in Action
Spring In Action
AspectJ in Action
Hibernate In Action
Struts in Action
Lucene in Action
Wrox出版 Beginning Spring Framework 2
Java Extreme Programming Cookbook
Java Programming Cookbook
Beginning Java Objects
Building Java Enterprise App
Ant: The Definitive Guide
Better Faster Lighter Java
Hibernate Reference 3.1
Pragmatic Version Control using CVS
Pragmatic Project Automation
jQuery Reference Guide
Java 2核心技术卷1&卷2 CHM版
Wrox Professional Java JDK 6 Edition
Java 2宝典
侯捷java编程思想 PDF中文版
Learning Java(第三版)
The Java Language Specification
Beginning Java Programming for Dummies第二版
Java 2核心编程
Java How to Program(第六版)
Java All-In-One案头参考傻瓜书(第二版)
21天自学 Java 6(2007年5月更新出版) PDF
Java咖啡馆
Thinking in Java(第四版)
深入学习JFC SWING- Java基础类组件集
J2EE全实例教程
Java信息系统设计与开发实例(第二版)
Java优化编程
Effective Java
Java信息系统设计与开发实例(第二版)
Tricks of the Java Programming
Wrox Professional Java Native Interfaces with SWT JFace
Java Swing第二版 PDF文字版 O'Relliy出版
O'Reilly- Java Database Programming with JDBC
JDBC与Java数据库程序设计
Learning JQurey(2007年7月最新出版)
J2EE with BEA WebLogic Server
Pragmatic Unit Testing in Java with JUnit
Wiley出版 J2EE 1.4 Bible
J2EE设计开发编程指南
Java Web Services简明教程
O'Reilly Java and XML(第二版PDF)
O'Reilly Java and XML(第三版PDF)
Java技术XML高级编程
Java Reflection in Action [MANNING]
Java Puzzler(Java解惑)
Java Database Best Practices
Struts: The Complete Reference
Log4j The Complete Manual
Programming for the Java Virtual Machine
Expert One-on-One J2EE Design and Development
Expert One-on-One J2EE Development without EJB
JBoss- A Developer's Notebook
The Java Programming Language(第四版)
Professional Java Development with the Spring Framework
Core Java Server Faces第二版
精通Enterprise JavaBeans
Enterprise JavaBeans EJB第四版
J2EE应用与BEA WebLogic Server(第二版PDF)
O'Reilly Java Web Services
Ant权威指南
Ajax和Java框架高级编程
Java Web Services简明教程
Cross-Platform Web Services Using C# and Java
O'Reilly Ajax on Java
O'Reilly Java and XSLT
O'Reilly Java and XML Binding
O'Reilly Java and SOAP
Design Patterns Java Companion
J2EE Java黑客大曝光开发安全的Java应用程序
J2ME API速查手册
精通J2ME无线编程
J2ME开发大全
Beginning J2ME从入门到精通第三版
Beginning JBoss Seam从入门到精通
Beginning Hibernate从入门到精通
Java网页开发的艺术
Java编程高手
Java 5.0 Tiger程序高手秘笈
Java2网络协议技术内幕(附源码)
Using Enterprise JavaBeans 2
Java技术实用教程
企业级Java安全性(构建安全的J2EE应用)
Java语言集成开发环境Eclipse中文教程
NetBeans IDE 5.5企业版高级开发教程
Using Enterprise JavaBeans 2
Borland JBuilder Developer's Guide
Eclipse [O'Reilly]
Eclipse精要与高级开发技术
Code Generation in Action
Java 6 3D游戏开发
Java视频教程孙鑫Java无难事(全12CD)
上海交大 Java初级编程基础共25讲下载 avi格式
张孝祥Java课堂系列之 Tomcat入门(七讲 swf)
张孝祥Java课堂系列之 Servlet开发入门(九讲 swf)
张孝祥Java课堂系列之 HTTP协议详解(四讲 swf)
张孝祥Java课堂系列之 Web XML基础(四讲 swf)
J2EE视频教程中间件技术浙江大学胡晓军全24讲完整版下载
EJB技术及应用视频教程东北大学全26讲完整版 RMVB格式
J2EE开发IDE Eclipse视频教程全9CD完整版
Java视频教程即学即会java
Java从入门到精通(第2版)的图书目录
第1篇基础知识
第1章初识Java
教学录像:35分钟
1.1 Java简介
1.1.1什么是Java语言
1.1.2 Java的应用领域
1.1.3 Java的版本
1.1.4怎样学好Java
1.1.5 Java API文档
1.2 Java特性
1.2.1简单
1.2.2面向对象
1.2.3分布性
1.2.4可移植性
1.2.5解释型
1.2.6安全性
1.2.7健壮性
1.2.8多线程
1.2.9高性能
1.2.10动态
1.3搭建Java环境
1.3.1 JDK下载
1.3.2 Windows系统的JDK环境
1.3.3 Linux系统的JDK环境
1.4第一个Java程序
1.5小结
1.6实践与练习
第2章熟悉Eclipse开发工具
教学录像:36分钟
2.1熟悉Eclipse
2.1.1 Eclipse简介
2.1.2 Eclipse的安装、配置与启动
2.1.3 Eclipse工作台
2.1.4透视图与视图
2.1.5菜单栏
2.1.6工具栏
2.1.7“包资源管理器”视图
2.1.8“控制台”视图
2.2使用Eclipse
2.2.1创建Java项目
2.2.2创建Java类文件
2.2.3使用编辑器编写程序代码
2.2.4运行Java程序
2.3程序调试
2.4小结
2.5实践与练习
第3章 Java语言基础
教学录像:38分钟
3.1 Java主类结构
3.1.1包声明
3.1.2声明成员变量和局部变量
3.1.3编写主方法
3.1.4导入API类库
3.2基本数据类型
3.2.1整数类型
3.2.2浮点类型
3.2.3字符类型
3.2.4布尔类型
3.3变量与常量
3.3.1标识符和关键字
3.3.2声明变量
3.3.3声明常量
3.3.4变量的有效范围
3.4运算符
3.4.1赋值运算符
3.4.2算术运算符
3.4.3自增和自减运算符
3.4.4比较运算符
3.4.5逻辑运算符
3.4.6位运算符
3.4.7三元运算符
3.4.8运算符优先级
3.5数据类型转换
3.5.1隐式类型转换
3.5.2显式类型转换
3.6代码注释与编码规范
3.6.1代码注释
3.6.2编码规范
3.7小结
3.8实践与练习
第4章流程控制
教学录像:26分钟
4.1复合语句
4.2条件语句
4.2.1 if条件语句
4.2.2 switch多分支语句
4.3循环语句
4.3.1 while循环语句
4.3.2 do…while循环语句
4.3.3 for循环语句
4.4小结
4.5实践与练习
第5章字符串
教学录像:33分钟
5.1 String类
5.1.1声明字符串
5.1.2创建字符串
5.2连接字符串
5.2.1连接多个字符串
5.2.2连接其他数据类型
5.3获取字符串信息
5.3.1获取字符串长度
5.3.2字符串查找
5.3.3获取指定索引位置的字符
5.4字符串操作
5.4.1获取子字符串
5.4.2去除空格
5.4.3字符串替换
5.4.4判断字符串的开始与结尾
5.4.5判断字符串是否相等
5.4.6按字典顺序比较两个字符串
5.4.7字母大小写转换
5.4.8字符串分割
5.5格式化字符串
5.5.1日期和时间字符串格式化
5.5.2常规类型格式化
5.6使用正则表达式
5.7字符串生成器
5.8小结
5.9实践与练习
第6章数组
教学录像:30分钟
6.1数组概述
6.2一维数组的创建及使用
6.2.1创建一维数组
6.2.2初始化一维数组
6.2.3使用一维数组
6.3二维数组的创建及使用
6.3.1二维数组的创建
6.3.2二维数组初始化
6.3.3使用二维数组
6.4数组的基本操作
6.4.1遍历数组
6.4.2填充替换数组元素
6.4.3对数组进行排序
6.4.4复制数组
6.4.5数组查询
6.5小结
6.6使用实践
第7章类和对象
教学录像:47分钟
7.1面向对象概述
7.1.1对象
7.1.2类
7.1.3封装
7.1.4继承
7.1.5多态
7.2类
7.2.1成员变量
7.2.2成员方法
7.2.3权限修饰符
7.2.4局部变量
7.2.5局部变量的有效范围
7.2.6 this关键字
7.3类的构造方法
7.4静态变量、常量和方法
7.5类的主方法
7.6对象
7.6.1对象的创建
7.6.2访问对象的属性和行为
7.6.3对象的引用
7.6.4对象的比较
7.6.5对象的销毁
7.7小结
7.8实践与练习
第8章包装类
教学录像:21分钟
8.1 Integer
8.2 Long
8.3 Short
8.4 Boolean
8.5 Byte
8.6 Character
8.7 Double
8.8 Float
8.9 Number
8.10小结
8.11实践与练习
第9章数字处理类
教学录像:20分钟
9.1数字格式
9.2数学运算
9.2.1 Math类
9.2.2常用数学运算方法
9.3随机数
9.3.1 Math.random()方法
9.3.2 Random类
9.4大数字
9.4.1 BigInteger
9.4.2 BigDecimal
9.5小结
9.6实践与练习
第2篇核心技术
第10章接口、继承与多态
教学录像:36分钟
10.1类的继承
10.2 Object类
10.3对象类型的转换
10.3.1向上转型
10.3.2向下转型
10.4 instanceof判断对象类型
10.5方法的重载
10.6多态
10.7抽象类与接口
10.7.1抽象类
10.7.2接口
10.8小结
10.9实践与练习
第11章类的高级特性
教学录像:29分钟
11.1包
11.1.1类名冲突
11.1.2完整的类路径
11.1.3创建包
11.1.4导入类包
11.2 final变量
11.3 final方法
11.4 final类
11.5内部类
11.5.1成员内部类
11.5.2局部内部类
11.5.3匿名类
11.5.4静态内部类
11.5.5内部类的继承
11.6小结
11.7实践与练习
第12章异常处理
教学录像:25分钟
12.1异常概述
12.2处理程序异常错误
12.2.1错误
12.2.2捕捉异常
12.3 Java常见异常
12.4自定义异常
12.5在方法中抛出异常
12.5.1使用throws关键字抛出异常
12.5.2使用throw关键字抛出异常
12.6运行时异常
12.7异常的使用原则
12.8小结
12.9实践与练习
第13章 Swing程序设计
教学录像:1小时1分钟
13.1 Swing概述
13.1.1 Swing特点
13.1.2 Swing包
13.1.3常用Swing组件概述
13.2常用窗体
13.2.1 JFrame窗体
13.2.2 JDialog窗体
13.3标签组件与图标
13.3.1标签的使用
13.3.2图标的使用
13.4常用布局管理器
13.4.1绝对布局
13.4.2流(FlowLayout)布局管理器
13.4.3边界(BorderLayout)布局管理器
13.4.4网格(GridLayout)布局管理器
13.5常用面板
13.5.1 JPanel面板
13.5.2 JScrollPane面板
13.6按钮组件
13.6.1提交按钮(JButton)组件
13.6.2单选按钮(JRadioButton)组件
13.6.3复选框(JCheckBox)组件
13.7列表组件
13.7.1下拉列表框(JComboBox)组件
13.7.2列表框(JList)组件
13.8文本组件
13.8.1文本框(JTextField)组件
13.8.2密码框(JPasswordField)组件
13.8.3文本域(JTextArea)组件
13.9常用事件监听器
13.9.1监听事件简介
13.9.2动作事件(ActionEvent)监听器
13.9.3焦点事件(FocusEvent)监听器
13.10小结
13.11实践与练习
第14章集合类
教学录像:26分钟
14.1集合类概述
14.2 Collection接口
14.3 List集合
14.3.1 List接口
14.3.2 List接口的实现类
14.4 Set集合
14.5 Map集合
14.5.1 Map接口
14.5.2 Map接口的实现类
14.6小结
14.7实践与练习
第15章 I/O输入输出
教学录像:35分钟
15.1流概述
15.2输入输出流
15.2.1输入流
15.2.2输出流
15.3 File类
15.3.1文件的创建与删除
15.3.2获取文件信息
15.4文件输入输出流
15.4.1 FileInputStream与FileOutputStream类
15.4.2 FileReader类和FileWriter类
15.5带缓存的输入输出流
15.5.1 BufferedInputStream与BufferedOutput-Stream类
15.5.2 BufferedReader与BufferedWriter类
15.6数据输入输出流
15.7 ZIP压缩输入输出流
15.7.1压缩文件
15.7.2解压缩ZIP文件
15.8小结
15.9实践与练习
第16章反射
教学录像:47分钟
16.1 Class类与Java反射
16.1.1访问构造方法
16.1.2访问成员变量
16.1.3访问方法
16.2使用Annotation功能
16.2.1定义Annotation类型
16.2.2访问Annotation信息
16.3小结
16.4实践与练习
第17章枚举类型与泛型
教学录像:22分钟
17.1枚举类型
17.1.1使用枚举类型设置常量
17.1.2深入了解枚举类型
17.1.3使用枚举类型的优势
17.2泛型
17.2.1回顾“向上转型”与“向下转型”
17.2.2定义泛型类
17.2.3泛型的常规用法
17.2.4泛型的高级用法
17.2.5泛型总结
17.3小结
17.4实践与练习
第18章多线程
教学录像:24分钟
18.1线程简介
18.2实现线程的两种方式
18.2.1继承Thread类
18.2.2实现Runnable接口
18.3线程的生命周期
18.4操作线程的方法
18.4.1线程的休眠
18.4.2线程的加入
18.4.3线程的中断
18.4.4线程的礼让
18.5线程的优先级
18.6线程同步
18.6.1线程安全
18.6.2线程同步机制
18.7线程间的通信
18.8小结
18.9实践与练习
第19章网络通信
教学录像:25分钟
19.1网络程序设计基础
19.1.1局域网与因特网
19.1.2网络协议
19.1.3端口和套接字
19.2 TCP程序设计基础
19.2.1 InetAddress类
19.2.2 ServerSocket类
19.2.3 TCP网络程序
19.3 UDP程序设计基础
19.3.1 DatagramPacket类
19.3.2 DatagramSocket类
19.3.3 UDP网络程序
19.4小结
19.5实践与练习
第20章数据库操作
教学录像:33分钟
20.1数据库基础知识
20.1.1什么是数据库
20.1.2数据库的种类及功能
20.1.3 SQL语言
20.2 JDBC概述
20.2.1 JDBC-ODBC桥
20.2.2 JDBC技术
20.2.3 JDBC驱动程序的类型
20.3 JDBC中常用的类和接口
20.3.1 Connection接口
20.3.2 Statement接口
20.3.3 PreparedStatement接口
20.3.4 DriverManager类
20.3.5 ResultSet接口
20.4数据库操作
20.4.1连接数据库
20.4.2向数据库发送SQL语句
20.4.3处理查询结果集
20.4.4顺序查询
20.4.5模糊查询
20.4.6预处理语句
20.4.7添加、修改、删除记录
20.5小结
20.6实践与练习
第3篇高级应用
第21章 Swing表格组件
教学录像:58分钟
21.1利用JTable类直接创建表格
21.1.1创建表格
21.1.2定制表格
21.1.3操纵表格
21.2表格模型与表格
21.2.1利用表格模型创建表格
21.2.2维护表格模型
21.3提供行标题栏的表格
21.4小结
21.5实践与练习
第22章 Swing树组件
教学录像:1小时3分钟
22.1简单的树
22.2处理选中节点事件
22.3遍历树节点
22.4定制树
22.5维护树模型
22.6处理展开节点事件
22.7小结
22.8实践与练习
第23章 Swing其他高级组件
教学录像:1小时30分钟
23.1高级组件面板
23.1.1分割面板
23.1.2选项卡面板
23.1.3桌面面板和内部窗体
23.2菜单
23.2.1创建菜单栏
23.2.2创建弹出式菜单
23.2.3定制个性化菜单
23.3工具栏
23.4文件选择器
23.4.1文件选择对话框
23.4.2使用文件过滤器
23.5进度条
23.6系统托盘
23.7桌面集成控件
23.8小结
23.9实践与练习
第24章高级布局管理器
教学录像:1小时40分钟
24.1箱式(BoxLayout)布局管理器
24.2卡片(CardLayout)布局管理器
24.3网格组(GridBagLayout)布局管理器
24.4弹簧(SpringLayout)布局管理器
24.4.1使用弹簧布局管理器
24.4.2使用弹簧和支柱
24.4.3利用弹簧控制组件大小
24.5小结
24.6实践与练习
第25章高级事件处理
教学录像:31分钟
25.1键盘事件(KeyEvent)
25.2鼠标事件(MouseEvent)
25.3窗体事件(WindowEvent)
25.3.1捕获窗体焦点变化事件
25.3.2捕获窗体状态变化事件
25.3.3捕获其他窗体事件
25.4选项事件(ItemEvent)
25.5表格模型事件(TableModelEvent)
25.6小结
25.7实践与练习
第26章 AWT绘图与音频播放
教学录像:30分钟
26.1 Java绘图
26.1.1 Graphics
26.1.2 Graphics2D
26.2绘制图形
26.3绘图颜色与笔画属性
26.3.1设置颜色
26.3.2笔画属性
26.4绘制文本
26.4.1设置字体
26.4.2显示文字
26.5绘制图片
26.6图像处理
26.6.1放大与缩小
26.6.2图像翻转
26.6.3图像旋转
26.6.4图像倾斜
26.7播放音频文件
26.8小结
26.9实践与练习
第27章打印技术
教学录像:30分钟
27.1打印控制类
27.2“打印”对话框
27.3打印页面
27.4多页打印
27.5打印预览
27.6小结
27.7实践与练习
第4篇项目实战
第28章企业进销存管理系统
教学录像:1小时30分钟
28.1系统分析
28.1.1需求分析
28.1.2可行性分析
28.1.3编写项目计划书
28.2系统设计
28.2.1系统目标
28.2.2系统功能结构
28.2.3系统业务流程图
28.2.4系统编码规范
28.3开发环境
28.3.1硬件开发环境
28.3.2软件开发环境
28.4数据库与数据表设计
28.4.1数据库分析
28.4.2创建数据库
28.4.3创建数据表
28.5创建项目
28.6系统文件夹组织结构
28.7公共类设计
28.7.1 Item公共类
28.7.2数据模型公共类
28.7.3 Dao公共类
28.8系统登录模块设计
28.8.1设计登录窗体
28.8.2“密码”文本框的回车事件
28.8.3“登录”按钮的事件处理
28.9系统主窗体设计
28.9.1设计菜单栏
28.9.2设计工具栏
28.9.3设计状态栏
28.10进货单模块设计
28.10.1设计进货单窗体
28.10.2添加进货商品
28.10.3进货统计
28.10.4商品入库
28.11销售单模块设计
28.11.1设计销售单窗体
28.11.2添加销售商品
28.11.3销售统计
28.11.4商品销售
28.12库存盘点模块设计
28.12.1设计库存盘点窗体
28.12.2读取库存商品
28.12.3统计损益数量
28.13数据库备份与恢复模块设计
28.13.1设计窗体
28.13.2文件浏览
28.13.3备份数据库
28.13.4恢复数据库
28.14运行项目
28.15系统打包发行
28.16开发常见问题与解决
28.16.1数据库无法访问
28.16.2打包的JAR文件无法登录
28.16.3数据库还原不成功
28.16.4数据库只读
28.16.5无法打开内部窗体
28.16.6“关于”界面被其他窗体覆盖
28.16.7打包JAR文件之后无法运行
28.16.8程序运行后没有出现闪屏界面
28.17小结
Java入门书
java入门教程《21天学通java2》第三版
《Java编程思想》(thinking in java)第三版
TOMCAT HOME是指安装tomcat的主目录,并非是说目录的名字就叫“TOMCAT HOME”。
JAVA编程详解
Think in JAVA(有点难度,推荐在熟悉之后再看)
刚开始其实只要是基础的都能看,我给你个好的JAVA书籍下载站点:
学习一门新的知识,不可能指望只看一本,或者两本书就能够完全掌握。需要有一个循序渐进的阅读过程。我推荐Oreilly出版的Java系列书籍。
在这里我只想补充一点看法,很多人学习Java是从《Thinking in Java》这本书入手的,但是我认为这本书是不适合初学者的。我认为正确的使用这本书的方法应该是作为辅助的读物。《Thinking in Java》并不是在完整的介绍Java的整个体系,而是一种跳跃式的写作方法,是一种类似tips的方法来对Java很多知识点进行了深入的分析和解释。
对于初学者来说,最好是找一本Java入门的书籍,但是比较完整的循序的介绍Java的语法,面向对象的特性,核心类库等等,在看这本书的同时,可以同步来看《Thinking in Java》,来加深对Java的理解和原理的运用,同时又可以完整的了解Java的整个体系。
对于Java的入门书籍,蔡学镛推荐的是Oreilly的《Exploring Java, 2nd Edition》或者《Java in a Nutshell,2nd Edition(针对C++背景)》,我并没有看过这两本书。其实我觉得电子工业出版社的《Java 2编程详解》或者《Java 2从入门到精通》就很不错。
在所有的Java书籍当中,其实最最有用的,并不是O'reilly的 Java Serials,真正最最有用处是JDK的Documentation!几乎你想获得的所有的知识在Documentation里面全部都有,其中最主要的部分当然是Java基础类库的API文档,是按照package来组织的,对于每一个class都有详细的解释,它的继承关系,是否实现了某个接口,通常用在哪些场合,还可以查到它所有的public的属性和方法,每个属性的解释,意义,每个方法的用途,调用的参数,参数的意义,返回值的类型,以及方法可能抛出的异常等等。可以这样来说,所有关于Java编程方面的书籍其实都不过是在用比较通俗易懂的语言,和良好的组织方式来介绍Documentation里面的某个package里面包含的一些类的用法而已。所以万变不离其宗,如果你有足够的能力来直接通过Documentation来学习Java的类库,那么基本上就不需要看其他的书籍了。除此之外,Documentation也是编程必备的手册,我的桌面上有三个Documentation的快捷方式,分别是J2SDK1.4.1的Documentation,Servlet2.3的Documentation和J2SDKEE1.3.1的Documentation。有了这个三个Documentation,什么其他的书籍都不需要了。
对于Java Web编程来说,最核心的是要熟悉和掌握HTTP协议,这个就和Java无关了,在熟悉HTTP协议之后,就需要熟悉Java的实现HTTP协议的类库,也就是Servlet API,所以最重要的东西就是Servlet API。当然对于初学者而言,直接通过Servlet API来学习Web编程有很大的难度,我推荐O'reilly的《Java Server Pages》这本书来学习Web编程。
EJB的书籍当中,《Enterprise JavaBeans, 2nd Edition》是一本很不错的书, EJB的学习门槛是比较高,入门很难,但是这本书完全降低了学习的难度,特别重要的一点是,EJB的学习需要结合一种App Server的具体实现,所以在学习EJB的同时,必须同步的学习某种App Server,而这本书相关的出了三本书,分别是Weblogic6.1,Websphere4.0和JBoss3.0上面部署书中例子的实做。真是既有理论,又有实践。在学习EJB的同时,可以边看边做,EJB的学习会变得很轻松。
但是这本书也有一个问题,就是版本比较旧,主要讲EJB1.1规范和部分EJB2.0的规范。而Ed Roman写的《Mastering EJB 2.0》这本书完全是根据EJB2.0规范写的,深入浅出,覆盖了EJB编程的各个方面,并且还有很多编程经验tips,也是学习EJB非常推荐的书籍之一。
如果是结合Weblogic来学习J2EE的话,《J2EE应用与BEA Weblogic Server》绝对是首选读物,虽然是讲述的Weblogic6.0,仍然值得购买,这本书是BEA官方推荐的教材,作者也是BEA公司的工程师。现在中文版已经随处可见了。这本书结合Weblogic介绍了J2EE各个方面的技术在Weblogic平台上的开发和部署,实践指导意义非常强。
在掌握了Java平台基础知识和J2EE方面的知识以后,更进一步的是学习如何运用OO的方法进行软件的设计,那么就一定要学习“设计模式”。Sun公司出版了一本《J2EE核心模式》,是每个开发Java企业平台软件的架构师必备的书籍。这本书全面的介绍了J2EE体系架构的各种设计模式,是设计师的必读书籍。
Java Learning Path(三)过程篇
每个人的学习方法是不同的,一个人的方法不见得适合另一个人,我只能是谈自己的学习方法。因为我学习Java是完全自学的,从来没有问过别人,所以学习的过程基本上完全是自己摸索出来的。我也不知道这种方法是否是比较好的方法,只能给大家提供一点参考了。
学习Java的第一步是安装好JDK,写一个Hello World,其实JDK的学习没有那么简单,关于JDK有两个问题是很容易一直困扰Java程序员的地方:一个是CLASSPATH的问题,其实从原理上来说,是要搞清楚JRE的ClassLoader是如何加载Class的;另一个问题是package和import问题,如何来寻找类的路径问题。把这两个问题摸索清楚了,就扫除了学习Java和使用JDK的最大障碍。推荐看一下王森的《Java深度历险》,对这两个问题进行了深入的探讨。
第二步是学习Java的语法。Java的语法是类C++的,基本上主流的编程语言不是类C,就是类C++的,没有什么新东西,所以语法的学习,大概就是半天的时间足够了。唯一需要注意的是有几个不容易搞清楚的关键字的用法,public,protected,private,static,什么时候用,为什么要用,怎么用,这可能需要有人来指点一下,我当初是完全自己琢磨出来的,花了很久的时间。不过后来我看到《Thinking in Java》这本书上面是讲了这些概念的。
第三步是学习Java的面向对象的编程语言的特性的地方。比如继承,构造器,抽象类,接口,方法的多态,重载,覆盖,Java的异常处理机制。对于一个没有面向对象语言背景的人来说,我觉得这个过程需要花很长很长时间,因为学习Java之前没有C++的经验,只有C的经验,我是大概花了一个月左右吧,才彻底把这些概念都搞清楚,把书上面的例子反复的揣摩,修改,尝试,把那几章内容反复的看过来,看过去,看了不下5遍,才彻底领悟了。不过我想如果有C++经验的话,应该一两天时间足够了。那么在这个过程中,可以多看看《Thinking in Java》这本书,对面向对象的讲解非常透彻。可惜的是我学习的时候,并没有看到这本书,所以自己花了大量的时间,通过自己的尝试和揣摩来学会的。
第四步就是开始熟悉Java的类库。Java的基础类库其实就是JDK安装目录下面jre\lib\rt.jar这个包。学习基础类库就是学习rt.jar。基础类库里面的类非常非常多。据说有3000多个,我没有统计过。但是真正对于我们来说最核心的只有4个,分别是
java.lang.*;
java.io.*;
java.util.*;
java.sql.*;
这四个包的学习,每个包的学习都可以写成一本厚厚的教材,而O'reilly也确实是这样做的。我觉得如果时间比较紧,是不可能通过读四本书来学习。我觉得比较好的学习方法是这样的:
首先要通读整个package的框架,了解整个package的class,interface,exception的构成,最好是能够找到介绍整个包框架的文章。这些专门介绍包的书籍的前几章应该就是这些总体的框架内容介绍。
对包整体框架的把握并不是要熟悉每个类的用法,记住它有哪些属性,方法。想记也记不住的。而是要知道包有哪些方面的类构成的,这些类的用途是什么,最核心的几个类分别是完成什么功能的。我在给人培训的时候一般是一次课讲一个包,所以不可能详细的介绍每个类的用法,但是我反复强调,我给你们讲这些包的不是要告诉你们类的方法是怎么调用的,也不要求你们记住类的方法调用,而是要你们了解,Java给我们提供了哪些类,每个类是用在什么场合,当我遇到问题的时候,我知道哪个类,或者哪几个类的组合可以解决我的问题,That'all!,当我们具体写程序的时候,只要你知道该用哪个类来完成你的工作就足够了。编码的时候,具体的方法调用,是边写代码,边查Documentation,所有的东西都在Documentation里面,不要求你一定记住,实际你也记不住3000多个类的总共将近10万个方法调用。所以对每个包的总体框架的把握就变得极为重要。
第五步,通过上面的学习,如果学的比较扎实的话,就打好了Java的基础了,剩下要做的工作是扫清Documentation里面除了上面4个包之外的其他一些比较有用处的类。相信进展到这一步,Java的自学能力已经被培养出来了,可以到了直接学习Documentation的水平了。除了要做GUI编程之外,JDK里面其他会有用处的包是这些:
java.text.*;
java.net.*;
javax.naming.*;
这些包里面真正用的比较多的类其实很少,只有几个,所以不需要花很多时间。
第六步,Java Web编程
Web编程的核心是HTTP协议,HTTP协议和Java无关,如果不熟悉HTTP协议的话,虽然也可以学好Servlet/JSP编程,但是达不到举一反三,一通百通的境界。所以HTTP协议的学习是必备的。如果熟悉了HTTP协议的话,又有了Java编程的良好的基础,学习Servlet/JSP简直易如反掌,我学习Servlet/JSP就用了不到一周的时间,然后就开始用JSP来做项目了。
在Servlet/JSP的学习中,重头仍然是Servlet Documentation。Servlet API最常用的类很少,花比较少的时间就可以掌握了。把这些类都看一遍,多写几个例子试试。Servlet/JSP编程本质就是在反复调用这些类来通过HTTP协议在Web Server和Brower之间交谈。另外对JSP,还需要熟悉几个常用JSP的标记,具体的写法记不住的话,临时查就是了。
此外Java Web编程学习的重点要放在Web Application的设计模式上,如何进行业务逻辑的分析,并且进行合理的设计,按照MVC设计模式的要求,运用Servlet和JSP分别完成不同的逻辑层,掌握如何在Servlet和JSP之间进行流程的控制和数据的共享,以及Web Application应该如何配置和部署。
第七步,J2EE编程
以上的学习过程如果是比较顺利的话,进行到这一步,难度又陡然提高。因为上面的知识内容都是只涉及一个方面,而像EJB,JMS,JTA等核心的J2EE规范往往是几种Java技术的综合运用的结晶,所以掌握起来难度比较大。
首先一定要学习好JNDI,JNDI是App Server定位服务器资源(EJB组件,Datasouce,JMS)查找方法,如果对JNDI不熟悉的话,EJB,JMS这些东西几乎学不下去。JNDI其实就是javax.naming.*这个包,运用起来很简单。难点在于服务器资源文件的配置。对于服务器资源文件的配置,就需要看看专门的文档规范了,比如web.xml的写法,ejb-jar.xml的写法等等。针对每种不同的App Server,还有自己的服务资源配置文件,也是需要熟悉的。
然后可以学习JTA,主要是要理解JTA对于事务的控制的方法,以及该在什么场合使用JTA。这里可以简单的举个例子,我们知道一般情况可以对于一个数据库连接进行事务控制(conn.setAutoCommit(false),....,conn.commit()),做为一个原子操作,但是假设我的业务需求是要把对两个不同数据库的操作做为一个原子操作,你能做的到吗?这时候只能用JTA了。假设操作过程是先往A数据库插一条记录,然后删除B数据库另一个记录,我们自己写代码是控制不了把整个操作做为一个原子操作的。用JTA的话,由App Server来完成控制。
在学习EJB之前要学习对象序列化和RMI,RMI是EJB的基础。接着学习JMS和EJB,对于EJB来说,最关键是要理解EJB是如何通过RMI来实现对远端对象的调用的,以及在什么情况下要用到EJB。
在学习完EJB,JMS这些东西之后,你可能会意识到要急不可待学习两个领域的知识,一个是UML,另一个是Design Pattern。Java企业软件的设计非常重视框架(Framework)的设计,一个好的软件框架是软件开发成功的必要条件。在这个时候,应该开始把学习的重点放在设计模式和框架的学习上,通过学习和实际的编程经验来掌握EJB的设计模式和J2EE的核心模式。
J2EE规范里面,除了EJB,JMS,JTA,Servlet/JSP,JDBC之外还有很多很多的企业技术,这里不一一进行介绍了。
另外还有一个最新领域Web Services。Web Services也完全没有任何新东西,它像是一种黏合剂,可以把不同的服务统一起来提供一个统一的调用接口,作为使用者来说,我只要获得服务提供者给我的WSDL(对服务的描述),就够了,我完全不知道服务器提供者提供的服务究竟是EJB组件,还是.Net组件,还是什么CORBA组件,还是其他的什么实现,我也不需要知道。Web Services最伟大的地方就在于通过统一的服务提供方式和调用方式,实现了整个Internet服务的共享,是一个非常令人激动的技术领域。Web Services好像目前还没有什么很好的书籍,但是可以通过在网络上面查资料的方式来学习。
Java Learning Path(四)方法篇
Java作为一门编程语言,最好的学习方法就是写代码。当你学习一个类以后,你就可以自己写个简单的例子程序来运行一下,看看有什么结果,然后再多调用几个类的方法,看看运行结果,这样非常直观的把类给学会了,而且记忆非常深刻。然后不应该满足把代码调通,你应该想想看如果我不这样写,换个方式,再试试行不行。记得哪个高人说过学习编程就是个破坏的过程,把书上的例子,自己学习Documentation编写的例子在运行通过以后,不断的尝试着用不同的方法实现,不断的尝试破坏代码的结构,看看它会有什么结果。通过这样的方式,你会很彻底的很精通的掌握Java。
举个例子,我们都编过Hello World
public class HelloWorld{
public static void main(String[] args){
System.out.println("Hello World");
}
}
很多初学者不是很理解为什么main方法一定要这样来定义public static void main(String[] args),能不能不这样写?包括我刚学习Java的时候也有这样的疑问。想知道答案吗?很简单,你把main改个名字运行一下,看看报什么错误,然后根据出错信息进行分析;把main的public取掉,在试试看,报什么错误;static去掉还能不能运行;不知道main方法是否一定要传一个String[]数组的,把String[]改掉,改成int[],或者String试试看;不知道是否必须写args参数名称的,也可以把args改成别的名字,看看运行结果如何。
我当初学习Java的时候就是这样做的,把Hello World程序反复改了七八次,不断运行,分析运行结果,最后就彻底明白为什么了main方法是这样定义的了。
此外,我对于staic,public,private,Exception,trycatch等等等等一开始都不是很懂,都是把参考书上面的例子运行成功,然后就开始破坏它,不断的根据自己心里面的疑问来重新改写程序,看看能不能运行,运行出来是个什么样子,是否可以得到预期的结果。这样虽然比较费时间,不过一个例子程序这样反复破坏几次之后。我就对这个相关的知识彻底学通了。有时候甚至故意写一些错误的代码来运行,看看能否得到预期的运行错误。这样对于编程的掌握是及其深刻的。
其中特别值得一提的是JDK有一个非常棒的调试功能,-verbose
java–verbose
javac–verbose以及其它很多JDK工具都有这个选项
-verbose可以显示在命令执行的过程中,JVM都依次加载哪里Class,通过这些宝贵的调试信息,可以帮助我们分析出JVM在执行的过程中都干了些什么。
另外,自己在学习过程中,写的很多的这种破坏例程,应该有意识的分门别类的保存下来,在工作中积累的典型例程也应该定期整理,日积月累,自己就有了一个代码库了。遇到类似的问题,到代码库里面 Copy& Paste,Search& Replace,就好了,极大提高了开发速度。最理想的情况是把一些通用的例程自己再抽象一层,形成一个通用的类库,封装好。那么可复用性就更强了。
所以我觉得其实不是特别需要例程的,自己写的破坏例程就是最好的例子,如果你实在对自己写的代码不放心的话,我强烈推荐你看看JDK基础类库的Java源代码。在JDK安装目录下面会有一个src.zip,解开来就可以完整的看到整个JDK基础类库,也就是rt.jar的Java源代码,你可以参考一下Sun是怎么写Java程序的,规范是什么样子的。我自己在学习Java的类库的时候,当有些地方理解的不是很清楚的时候,或者想更加清晰的理解运作的细节的时候,往往会打开相应的类的源代码,通过看源代码,所有的问题都会一扫而空。
Java Learning Path(五)资源篇
1、(英文)
Sun的Java网站,是一个应该经常去看的地方。不用多说。
2、
IBM的developerWorks网站,英语好的直接去英文主站点看。这里不但是一个极好的面向对象的分析设计网站,也是Web Services,Java,Linux极好的网站。强烈推荐!!!
3、(英文)
关于Java很多新技术的讨论和新闻。想多了解Java的方方面面的应用,这里比较好。
4、
BEA的开发者园地,BEA作为最重要的App Server厂商,有很多独到的技术,在Weblogic上做开发的朋友不容错过。
5、
灰狐动力网站,一个专业的中间件网站,虽然不是专业的Java网站,但是在J2EE企业应用技术方面有深厚的造诣。
6、(英文)
TheServerSide是一个著名的专门面向Java Server端应用的网站。
7、
Java研究组织,有很多优秀的Java方面的文章和教程,特别是在JDO方面的文章比较丰富。
8、
JSP技术网站,有相当多的Java方面的文章和资源。
9、
Jdon论坛,是一个个人性质的中文J2EE专业技术论坛,在众多的Java的中文论坛中,Jdon一个是技术含量非常高,帖子质量非常好的论坛。
10、
SourgeForge是一个开放源代码软件的大本营,其中也有非常非常丰富的Java的开放源代码的著名的软件。
关于java从入门到精通第三版的内容到此结束,希望对大家有所帮助。