深 入了解Android NDK,用JNI实现原生代码通信,使用swig自动生成INI代码,日志调试及故障处理,android NDK程序逆向分析,动态调试android程序,android软件破解技术,android系统移植,linux,进入android dalvik虚拟机,android可执行文件,静态分析android程序
传智播客J2EE学习路线图
(2015版)
第一步:JavaSE部分
-
第1阶段 Java基础知识
>> 计算机基础知识
>> Java开发环境的搭建和应用
>> 进制转换
>> 有符号数据表示法(原码,反码,补码)
>> Java语法基础(关键字,标识符,注释,
常量,变量,数据类型,运算符)
>> 程序流程控制语句及其应用
(if,switch,for,while)
>> 函数及其应用
>> 数组及其应用
>> 水仙花,裴波纳契数列,数据加密
等经典问题的详解讲解。 -
第2阶段 面向对象
>> 面向对象思想
>> 类与对象
>> 类的组成
>> 封装及其应用
>> 继承及其应用
>> 多态及其应用
>> 抽象类及其应用
>> 接口及其应用
>> 包,导包及其应用
>> 单例设计模式,简单工厂模式和工厂
方法模式,模板设计模式。 -
第3阶段 Eclipse的使用和常用API
>> Eclipse的安装和使用
>> Java API的介绍和使用
>> 字符串类的常见操作
>> 正则表达式的使用
>> 日期类的使用
>> 集合体系结构及其使用
>> 异常体系结构及其使用
>> File类的概述及其使用
>> IO流体系结构及其使用
>> 递归算法,装饰设计模式,泛型的使
用,增强for循环,可变参数,静态导
入等特性的详细讲解。 -
第4阶段 JavaSE高级
-
视频下载
>>基础幽默版下载 >>基础精华版下载
第二步:JavaWeb部分
-
第1阶段 JavaWeb前端
>> HTML
>> css
>> JavaScript
>> dom -
第2阶段 JavaWeb基础
>> xml
>> tomcat
>> http协议
>> servlet
>> request与resposne
>> cookie与session -
第3阶段 JavaWeb中级
>> jsp语法
>> el与jstl
>> 自定义标签
>> 国际化
>> mvc与jsp模式
>> web三层架构 -
第4阶段 JavaWeb-jdbc
>> Mysql数据库
>> 多表操作
>> jdbc原理与API
>> 事务管理
>> DataSource
>> DbUtils
>> 分页与其它操作 -
第5阶段 JavaWeb-高级
>> Listener
>> Filter
>> 文件上传下载
>> ajax操作 -
第6阶段 项目实战
>> 基础加强
>> 在线支付
>> 项目实战
视频下载
第三步:SSH框架部分
Struts2框架
-
1. Struts2入门
>> 框架介绍
>> Struts2框架介绍
>> Struts2快速入门
>> Struts2配置
>> 等等 -
2. action
>> action创建方式
>> action配置
>> action调用
>> action访问servlet
>> Result结果类型>> action类型转换
>> action处理请求参数
>> 请求参数校验
>> Struts2国际化 -
3. 拦截器
>> 拦截器原理介绍
>> 拦截器配置与使用
>> 拦截器案例
>> 文件上传与下载 -
4. Struts2核心-拦截器
>> 拦截器原理介绍
>> Struts2拦截器配置与使用
>> 拦截器案例
>> 文件上传与下载
>> 触发器 -
5. ognl与valueStack
>> ognl介绍与基本使用
>> valueStack介绍与使用
>> ognl获取valueStack中
信息 -
6. Struts2标签库
>> 逻辑标签介绍
>> 表单标签介绍 -
7. Struts2综合案例
>> Struts2防止表单重提交
>> Struts2中json插件使用
>> struts案例-员工信息管理
Spring框架
-
1. Spring入门
>> IoC快速入门
>> Bean管理
>> DI依赖注入
>> 注解开发 -
2. 切面编程
>> AOP编程思想
>> 自定义AOP实现
>> AspectJ编程
>> JdbcTemplate使用 -
3. 事务管理
>> 编程式事务管理
>> 声明式事务管理
>> 注解事务管理 -
3. SSH整合
>> Struts2整合spring
>> Spring整合Hibernate
>> HibernateTemplate
>> 注解整合
Hibernate框架
-
1. Hibernate开发基础
>> Hibernate概述
>> Hibernate快速入门
>> HibernateAPI的详解及常见配置
>> Hibernate持久化配置及主键生成策略 -
2. Hibernate中级开发
>> Hibernate持久化对象的状态转换
>> Hibernate的一级缓存及原理
>> Hibernate关联关系配置及应用
>> Hibernate检索方式 -
3. Hibernate高级开发
>> Hiberante抓取策略
>> Hibernate事务并发及处理
>> Hibernate二级缓存
>> Hibernate查询缓存
SSH项目实战
-
>> CVS和SVN
>> CRM项目
>> 协调办公OA系统>> 国家电力系统
>> BOS宅急 -
视频下载
>>Struts2框架视频下载 >>Spring框架视频下载 >>Hibernate框架视频下载
第四步:JavaScript部分
-
第1阶段 JavaScript
>> JavaScript基础内容
>> JavaScript的ECMA
Script(语法内容)
>> JavaScript的BOM
(浏览器对象模型)
>> JavaScript的DOM编程
>> JavaScript常用事件
>> JavaScript解析XML
>> JavaScript的函数
>> JavaScript的对象
>> JavaScript的闭包
>> JavaScript的原型
>> JavaScript的继承 -
第2阶段 Ajax
>> 同步交互与异步交互
第一步:JavaSE部分
-
第1阶段 Java基础知识
>> 计算机基础知识
>> Java开发环境的搭建和应用
>> 进制转换
>> 有符号数据表示法(原码,反码,补码)
>> Java语法基础(关键字,标识符,注释,
常量,变量,数据类型,运算符)
>> 程序流程控制语句及其应用
(if,switch,for,while)
>> 函数及其应用
>> 数组及其应用
>> 水仙花,裴波纳契数列,数据加密
等经典问题的详解讲解。 -
第2阶段 面向对象
>> 面向对象思想
>> 类与对象
>> 类的组成
>> 封装及其应用
>> 继承及其应用
>> 多态及其应用
>> 抽象类及其应用
>> 接口及其应用
>> 包,导包及其应用
>> 单例设计模式,简单工厂模式和工厂
方法模式,模板设计模式。 -
第3阶段 Eclipse的使用和常用API
>> Eclipse的安装和使用
>> Java API的介绍和使用
>> 字符串类的常见操作
>> 正则表达式的使用
>> 日期类的使用
>> 集合体系结构及其使用
>> 异常体系结构及其使用
>> File类的概述及其使用
>> IO流体系结构及其使用
>> 递归算法,装饰设计模式,泛型的使
用,增强for循环,可变参数,静态导
入等特性的详细讲解。 -
第4阶段 JavaSE高级
>> 多线程概述及其应用
>> 多线程的线程安全问题及解决方案
>> 死锁问题
>> 多线程的生产者消费者问题
>> 线程组,线程池问题
>> GUI的概述和基本使用
>> GUI中事件监听机制及适配器设计模式
>> 网络编程概述及其应用>> UDP协议发送和接收数据
>> TCP协议发送和接收数据
>> 反射的概述及其应用
>> 反射获取类中的成员并使用
>> 反射越过泛型检查
>> 反射运行配置文件的内容
>> 多线程群聊,聊天室的编写,文件上传
服务器,类加载器,反射及代理。 -
视频下载
>>基础幽默版下载 >>基础精华版下载
第二步:JavaWeb部分
-
第1阶段 JavaWeb前端
>> HTML
>> css
>> JavaScript
>> dom -
第2阶段 JavaWeb基础
>> xml
>> tomcat
>> http协议
>> servlet
>> request与resposne
>> cookie与session -
第3阶段 JavaWeb中级
>> jsp语法
>> el与jstl
>> 自定义标签
>> 国际化
>> mvc与jsp模式
>> web三层架构 -
第4阶段 JavaWeb-jdbc
>> Mysql数据库
>> 多表操作
>> jdbc原理与API
>> 事务管理
>> DataSource
>> DbUtils
>> 分页与其它操作 -
第5阶段 JavaWeb-高级
>> Listener
>> Filter
>> 文件上传下载
>> ajax操作 -
第6阶段 项目实战
>> 基础加强
>> 在线支付
>> 项目实战
视频下载
第三步:SSH框架部分
Struts2框架
-
1. Struts2入门
>> 框架介绍
>> Struts2框架介绍
>> Struts2快速入门
>> Struts2配置
>> 等等 -
2. action
>> action创建方式
>> action配置
>> action调用
>> action访问servlet
>> Result结果类型>> action类型转换
>> action处理请求参数
>> 请求参数校验
>> Struts2国际化 -
3. 拦截器
>> 拦截器原理介绍
>> 拦截器配置与使用
>> 拦截器案例
>> 文件上传与下载 -
4. Struts2核心-拦截器
>> 拦截器原理介绍
>> Struts2拦截器配置与使用
>> 拦截器案例
>> 文件上传与下载
>> 触发器 -
5. ognl与valueStack
>> ognl介绍与基本使用
>> valueStack介绍与使用
>> ognl获取valueStack中
信息 -
6. Struts2标签库
>> 逻辑标签介绍
>> 表单标签介绍 -
7. Struts2综合案例
>> Struts2防止表单重提交
>> Struts2中json插件使用
>> struts案例-员工信息管理
Spring框架
-
1. Spring入门
>> IoC快速入门
>> Bean管理
>> DI依赖注入
>> 注解开发 -
2. 切面编程
>> AOP编程思想
>> 自定义AOP实现
>> AspectJ编程
>> JdbcTemplate使用 -
3. 事务管理
>> 编程式事务管理
>> 声明式事务管理
>> 注解事务管理 -
3. SSH整合
>> Struts2整合spring
>> Spring整合Hibernate
>> HibernateTemplate
>> 注解整合
Hibernate框架
-
1. Hibernate开发基础
>> Hibernate概述
>> Hibernate快速入门
>> HibernateAPI的详解及常见配置
>> Hibernate持久化配置及主键生成策略 -
2. Hibernate中级开发
>> Hibernate持久化对象的状态转换
>> Hibernate的一级缓存及原理
>> Hibernate关联关系配置及应用
>> Hibernate检索方式 -
3. Hibernate高级开发
>> Hiberante抓取策略
>> Hibernate事务并发及处理
>> Hibernate二级缓存
>> Hibernate查询缓存
SSH项目实战
-
>> CVS和SVN
>> CRM项目
>> 协调办公OA系统>> 国家电力系统
>> BOS宅急 -
视频下载
>>Struts2框架视频下载 >>Spring框架视频下载 >>Hibernate框架视频下载
第四步:JavaScript部分
-
第1阶段 JavaScript
>> JavaScript基础内容
>> JavaScript的ECMA
Script(语法内容)
>> JavaScript的BOM
(浏览器对象模型)
>> JavaScript的DOM编程
>> JavaScript常用事件
>> JavaScript解析XML
>> JavaScript的函数
>> JavaScript的对象
>> JavaScript的闭包
>> JavaScript的原型
>> JavaScript的继承 -
第2阶段 Ajax
>> 同步交互与异步交互
>> 异步交互原理
>> 异步交互实现步骤
>> 异步交互的实际案例
>> 请求响应使用的数据格式 -
第3阶段 jQuery
>> JavaScript常用库介绍
>> jQuery基本使用
>> jQuery的选择器
>> jQuery的DOM操作
>> jQuery的事件处理
>> jQuery的Ajax操作
>> jQuery的常用插件 -
第4阶段 EasyUI
>> 如何使用EasyUI
>> EasyUI的常用控件
>> EasyUI的实际案
视频下载
第五步:Maven +软件项目管理
-
Maven
>> MAVEN的安装与配置
>> 坐标与依赖
>> 仓库
>> 生命周期>> 聚合与继承
>> Nexus私服
>> SSH项目+MyEclipse+maven -
软件项目管理
第六步:其他框架和技术
-
第1阶段 WebService
>> 介绍,分布式计WebService
>> WebService与传统的分布式计算技较
>> Web服务通常应用于下列场合
>> SOAP(Simple ObjectAccess
Protocol)5
>> Web服务(Web Services)SOA的
服务契约WSDL
>> WebService底层原理
>> 调用网上的web services服务,天气
预报
>> 如何看wsdl文件?
>> 如何发布自己的web服务
>> 增强,修改wsdl的内容 -
第2阶段 强大的的Apache CXF
Web服务>> Apache CXF介绍
>> CXF的WebService应用
>> 加入消息拦截器
>> 升级让CXF支持最新的SOAP1.2协议
>> Spring框架整合CXF Web服务
>> 接口方式发布CXF Web服务
>> 使用jQuery调用CXF Web服务
>> WebServices的安全 -
第3阶段 Activiti
>> 业务流程建模与标注BPMN 2.0
流程引擎
>> Activiti 基本架构和服务组件
>> 流程代办在线流程设计器流程嵌入
式部署
>> 流程管理自动化
>> ProcessEngine(流程引擎)
>> RepositoryService(管理流程定义)
>> RuntimeService(执行管理,包括
启动、推进、删除流程实例等操作)
>> TaskService(任务管理)
>> HistoryService(历史管理(执行完
的数据的管理))
>> IdentityService(组织机构管理)
>> FormService(一个可选服务,任务
表单管理) -
第4阶段 Orcale
>> SQL
>> PL/SQL
>> JAVA调用存储过程和函数
>> 触发器
>> 数据字典
>> 用户安全
>> 闪回
>> 分布式数据 -
第5阶段 Spring MVC
>> SpringMvc三种映射处理器
>> SpringMvc三种控制器
>> SpringMvc数据返回ajax调用
>> ajax调用和重定向
>> 文件上传与拦截器
>> SpringMvc与hibernate整合
>> SpringMvc注解参数 -
第6阶段 MyBatis
>> 基本增、删、改、查的使用
>> 动态sql
>> 联合查询
>> 延迟加载
>> 一级缓存与二级缓存
>> mybatis缓存框架
>> 基于注解mybatis开发
>>mybatis整SpringMvc -
第7阶段 Mongdb
>> 非关系型数据库的介绍
>> mongodb数据库存储以及交互
>> mongdb 的数据备份
>> mongodb的安全控制
>> mongodb 的集群(主从复制,
副本集)
>> mongdb 分布式存储
>> mongodb 与java 整合 -
第8阶段 Lucene 和Solr
>> 全文检索的基本概念
>> lucene 索引的操作(增删改查分页)
>> lucene 索引的得分机制原理分析
>> 分词器的原理以及使用
>> 索引库优化
>> 高亮器的使用
>> lucene 各种查询条件的介绍
>> 全文检索与数据库检索的区别>> lucene 在项目当中的使用以及需要
注意的问题
>> solr 的介绍以及环境的搭建
>> solr 的提供的rest 的接口介绍
>> 使用solrj 来调用solr 的服务
>> solr 的单核心与多核心的作用
>> solr 索引结构的分析以及配置文件介绍
>> solr 插件的介绍以及安装(与数据库
整合插件)
>> solr 怎么整合到我们的实际应用当中
视频下载
>> 异步交互原理
>> 异步交互实现步骤
>> 异步交互的实际案例
>> 请求响应使用的数据格式 -
-
第3阶段 jQuery
>> JavaScript常用库介绍
>> jQuery基本使用
>> jQuery的选择器
>> jQuery的DOM操作
>> jQuery的事件处理
>> jQuery的Ajax操作
>> jQuery的常用插件 -
第4阶段 EasyUI
>> 如何使用EasyUI
>> EasyUI的常用控件
>> EasyUI的实际案
视频下载
第五步:Maven +软件项目管理
-
Maven
>> MAVEN的安装与配置
>> 坐标与依赖
>> 仓库
>> 生命周期>> 聚合与继承
>> Nexus私服
>> SSH项目+MyEclipse+maven -
软件项目管理
第六步:其他框架和技术
-
第1阶段 WebService
>> 介绍,分布式计WebService
>> WebService与传统的分布式计算技较
>> Web服务通常应用于下列场合
>> SOAP(Simple ObjectAccess
Protocol)5
>> Web服务(Web Services)SOA的
服务契约WSDL
>> WebService底层原理
>> 调用网上的web services服务,天气
预报
>> 如何看wsdl文件?
>> 如何发布自己的web服务
>> 增强,修改wsdl的内容 -
第2阶段 强大的的Apache CXF
Web服务>> Apache CXF介绍
>> CXF的WebService应用
>> 加入消息拦截器
>> 升级让CXF支持最新的SOAP1.2协议
>> Spring框架整合CXF Web服务
>> 接口方式发布CXF Web服务
>> 使用jQuery调用CXF Web服务
>> WebServices的安全 -
第3阶段 Activiti
>> 业务流程建模与标注BPMN 2.0
流程引擎
>> Activiti 基本架构和服务组件
>> 流程代办在线流程设计器流程嵌入
式部署
>> 流程管理自动化
>> ProcessEngine(流程引擎)
>> RepositoryService(管理流程定义)
>> RuntimeService(执行管理,包括
启动、推进、删除流程实例等操作)
>> TaskService(任务管理)
>> HistoryService(历史管理(执行完
的数据的管理))
>> IdentityService(组织机构管理)
>> FormService(一个可选服务,任务
表单管理) -
第4阶段 Orcale
>> SQL
>> PL/SQL
>> JAVA调用存储过程和函数
>> 触发器
>> 数据字典
>> 用户安全
>> 闪回
>> 分布式数据 -
第5阶段 Spring MVC
>> SpringMvc三种映射处理器
>> SpringMvc三种控制器
>> SpringMvc数据返回ajax调用
>> ajax调用和重定向
>> 文件上传与拦截器
>> SpringMvc与hibernate整合
>> SpringMvc注解参数 -
第6阶段 MyBatis
>> 基本增、删、改、查的使用
>> 动态sql
>> 联合查询
>> 延迟加载
>> 一级缓存与二级缓存
>> mybatis缓存框架
>> 基于注解mybatis开发
>>mybatis整SpringMvc -
第7阶段 Mongdb
>> 非关系型数据库的介绍
>> mongodb数据库存储以及交互
>> mongdb 的数据备份
>> mongodb的安全控制
>> mongodb 的集群(主从复制,
副本集)
>> mongdb 分布式存储
>> mongodb 与java 整合 -
第8阶段 Lucene 和Solr
>> 全文检索的基本概念
>> lucene 索引的操作(增删改查分页)
>> lucene 索引的得分机制原理分析
>> 分词器的原理以及使用
>> 索引库优化
>> 高亮器的使用
>> lucene 各种查询条件的介绍
>> 全文检索与数据库检索的区别>> lucene 在项目当中的使用以及需要
注意的问题
>> solr 的介绍以及环境的搭建
>> solr 的提供的rest 的接口介绍
>> 使用solrj 来调用solr 的服务
>> solr 的单核心与多核心的作用
>> solr 索引结构的分析以及配置文件介绍
>> solr 插件的介绍以及安装(与数据库
整合插件)
>> solr 怎么整合到我们的实际应用当中
视频下载
(注:前文对Java技术做了框架性的分析,包括Java SE、Java EE和Java ME,让读者了解了Java由哪些技术组成。为了系统地学习这些技术,本文将制定一套完整的Java技术学习路线)
Java技术体系图
从前文中我们已经了解到,Java SE中包含了Java的基础技术,Java EE中包含了网络应用开发的各种技术,Java ME中包含了移动设备应用开发的各种技术,且Java SE是Java EE和Java ME的基础,所以对于Java技术的学习,有两条学习路线:
Java SE→Java EE:主要进行网络应用开发,是Java技术学习的一条完整路线,是基于Java EE的企业应用开发,是目前Java应用的主要方向。
Java SE→Java ME:主要进行无线应用开发,该技术路线相对简单一些。
Java SEàJava EE的技术由低到高形成了一个完整的体系,是Java/Java EE工程师成长必备的技术体系,下面我们就根据Java SEàJava EE的技术体系制定一套完整的学习路线。
1、Java EE技术分类
根据Java EE技术的分层,我们可以将Java EE技术分为以下3类。
(1)Web应用技术
JDBC:JDBC(Java DataBase Connectivity)是一个基于标准SQL的数据库访问接口,主要用来连接数据库和直接调用SQL命令执行各种SQL语句和存储过程。JDBC相当与Microsoft平台中的ODBC。
Servlet:Servlet是Java平台上的CGI技术。它在服务器端运行,用以动态生成Web页面。与传统的CGI和许多其他类似CGI的技术相比,Java Servlet具有更高的效率,它依靠线程的方式来支持并发访问。
JSP(EL/JSTL):JSP(Java Server Page)是一种实现普通静态HTML和动态页面输出混合编码的技术,类似Microsoft ASP、PHP等技术。它借助内容和外观表现的分离,使得Web页面开发可以方便地划分给页面设计人员和程序员。在运行时态,JSP将会被首先转换成Servlet,它的效率和功能与Servlet相比没有差别。
JavaBean:封装业务逻辑的组件,可以实现业务组件的重用。
JSF:JSF(JavaServer Faces)是一种专用于构建Java Web应用的页面组件技术,它集成了Servlet、JSP、JavaBean、EL、JSTL和自定义标签等各种页面技术,方便绘制丰富的页面组件。
(2)企业级应用技术
EJB:EJB定义了一组可重用的组件Enterprise Beans。开发人员可以利用这些组件,像搭积木一样建立分布式应用。EJB为它的开发人员代管了诸如安全性、远程连接、生命周期管理及事务管理等技术环节,简化了商业逻辑的开发。
JNDI:JNDI(Java Naming and Directory Interface)用于定位分布式系统中的各种对象,这些对象包括EJB、数据库驱动、JDBC数据源及消息连接等,还可以使用JNDI访问各种特定的目录服务,如LDAP、NDS和DNS等。
JMS:JMS消息服务是一组Java应用接口,它提供创建、发送、接收、读取消息的服务,使得Java应用能够和各种消息中间件进行通信,这些消息中间件包括IBM MQ-Series、Microsoft MSMQ及纯Java的SonicMQ。
JavaMail:提供了一整套模拟邮件系统的抽象类。通过JavaMail,可以创建邮件或消息应用程序。
JAF:JavaMail利用JavaBeans Activation Framework(JAF)来处理MIME-编码的邮件附件。MIME的字节流可以被转换成Java对象,或者转换自Java对象。
JTA:JTA提供了Java EE中处理事务的标准接口,它支持事务的开始、回滚和提交。同时在Java EE平台上提供一个JTS(Java Transaction Service)作为标准的事务处理服务,开发人员可以使用JTA来使用JTS。
JACC:JACC(Java Authorization Service Provider Contract for Containers)在Java EE应用服务器和特定的授权认证服务器之间定义了一个连接的协约,以便将各种授权认证服务器插入到Java EE产品中去。
JAAS:JAAS(Java Authentication and Authorization Service)实现了一个Java版本的标准Pluggable Authentication Module(PAM)框架。它可用来进行用户身份的鉴定,还能通过对用户进行授权,实现基于用户的访问控制。
JCA:JCA(Java EE Connector Architecture)是Java EE体系架构的一部分,它提供了一套连接各种企业信息系统(包括ERP、SCM、CRM等)的体系架构,开发商只需要开发一套基于JCA的连接适配器,就能够在任何Java EE服务器中连接并使用它。
JMX:JMX(Java Management Extensions)致力于解决分布式系统管理的问题,它是一种应用编程接口、可扩展对象和方法的集合体,可以跨越各种异构操作系统平台、系统体系结构和网络传输协议,开发无缝集成的面向系统、网络和服务的应用。
(3)Web服务技术
JAX-RPC:通过使用JAX-RPC(Java API for XML-based RPC),已有的Java类或Java应用都能够被重新包装,并以Web Services的形式发布。JAX-RPC提供了将RPC参数(in/out)编码和解码的API,使开发人员可以方便地使用SOAP消息来完成RPC调用,EJB应用也可以使用JAX-RPC来包装成Web服务。
SOA(SAAJ):SAAJ(SOAP with Attachemnts API for Java)是JAX-RPC的一个增强,为进行低层次的SOAP消息操纵提供了支持。
JAXR:JAXR(Java API for XML Registries)提供了与多种类型注册服务进行交互的API。JAXR运行客户端访问与JAXR规范相兼容的Web Servcices,这里的Web Services即为注册服务。一般来说,注册服务总是以Web Services的形式运行的。
2、Java技术学习路线图
Java EE技术,从简单到复杂依次包括:Web应用技术、企业级应用技术、Web服务技术,除了这些技术之外,还有一些开源的框架技术,包括Web框架 Struts/WebWork/Tapstry,业务层框架Spring,持久层框架Hibernate/iBATIS,这些也都是Java EE的应用技术。
这些技术虽然琳琅满目,但是也是层层递进,逐步形成了Java EE工程师的学习技术路线。除了Java EE技术之外,还有Java基础技术、数据库基础、网页开发技术需要在前期进行掌握。在学习了所有的Java基础、Java EE技术之后,再付诸于实践,你就达到了架构师的水平,进而走上技术管理的道路,可以达到技术道路的峰顶——CTO。
根据Java技术学习路线图,每一步所需掌握的课程有:
Java程序员
高级特性
反射、泛型、注释符、自动装箱和拆箱、枚举类、可变
参数、可变返回类型、增强循环、静态导入
核心编程
IO、多线程、实体类、
集合类、正则表达式、
XML和属性文件
图形编程
AWT(Java2D/JavaSound/JMF)、Swing、SWT、JFace
网路编程
Applet、Socket/TCP/UDP、NIO、RMI、CORBA
Java语法基础
类、抽象类、接口、最终类、静态类、匿名类、内部类、异常类、编码规范
Java开发环境
JDK、JVM、Eclipse、Linux
Java核心编程技术
Java,设计而又非常精巧的语言。学习Java,须从Java开发环境开始,到Java语法,再到Java的核心API。
1.Java开发入门:Java开发环境的安装与使用,包括JDK命令、EclipseIDE、Linux下Java程序的开发和部署等。
2.Java语法基础:基于JDK和Eclipse环境,进行Java核心功能开发,掌握Java面向对象的语法构成,包括类、抽象类、接口、最终类、静态类、匿名类、内部类、异常的编写。
3.Java核心API:基于JDK提供的类库,掌握三大核心功能:
A。Java核心编程:包括Java编程的两大核心功能——Java输入/输出流和多线程,以及常用的辅助类库——实体类、集合类、正则表达式、XML和属性文件。
B。Java图形编程:包括Sun的GUI库AWT(Java2D、JavaSound、JMF)和Swing,IBM和GUI库SWT和Jface;
C. Java网路编程:Applet组件编程,Socket编程,NIO非阻塞Socket编程、RMI和CORBA分布式开发。
4.Java高级特性:掌握JDK1.4、JDK5.0、JDK6.0中的Java高级特性,包括反射、泛型、注释,以及java高级特性——自动装箱和拆箱、枚举类、可变参数、可变返回类型、增强循环、静态导入等。
Java初级、中级软件工程师
JSF框架开发技术
配置文件(页面导航、后台Bean)、JSF组件库(JSF EL语言、HTML标签、事件处理、)、JSF核心库(格式转换、输入验证、国际化)
Javaweb核心开发技术
开发环境(Eclipse、Linux)
三大组件(JSP、JavaBean、Servlet)
扩展技术(EL、JSTL、Taglib)
网页开发技术
HTML、XML、CSS、JavaScript、AJAX
数据库设计技术
SQL、MySql、Oracle、SQLServer、JDBC
Web服务器(Tomcat/Jetty/Resin/JBossWeb)
JavaWeb核心技术:
JavaWeb项目开发的全过程可以分解为:
网页开发+数据库设计——>JavaWeb项目开发,其中,javaWeb由6项基本技术组成:JSP+JavaBean+Servlet+EL+JSTL+Taglib,而JSF正是将这6种技术进行有机结合的技术框架。
Java软件高级工程师
四种经典架构SSH1、SSI1、SSH2、SSI2
Struts1表现层框架
入门配置、核心组件、标签库、国际化、数据检验、数据库开发、Sitemesh集成、集成Hibernate/iBATIS
Struts2表现层框架
入门配置、核心组件、标签库、国际化、数据校验、Sitemesh集成转换器、拦截器、集成Hibernate/iBATIS
Spring业务层框架
入门配置、IoC容器、MVC、标签库、国际化、数据校验、数据库开发
Hibernate持久层框架
MySQL、Oracle、SQLServer iBATIS持久层框架
MySQL、Oracle、SQLServer
Web服务器(Tomcat/Jetty/Resin/JBossWeb)。
Java系统架构师
javaWeb开源技术与框架
工作流
规则引擎
搜索引擎
缓存引擎
任务调度
身份认证
报表服务
系统测试
集群
负载平衡
故障转移
JavaWeb分布式开发技术
JTA(Java事物管理)
JAAS(Java验证和授权服务)
JNDI(Java命名和目录服务)
JavaMail(Java邮件服务)
JMS(java信息服务)
WebService(web服务)
JCA(java连接体系)
JMS(java管理体系)
应用服务器(JBossAS/WebLogic/WebSphere)。
JavaEE系统架构师
面向云架构(COA)
COA、SaaS、网格计算、集群计算、分布式计算、云计算
面向资源架构(ROA)
ROA、RESI
面向web服务架构(SOA)
WebService、SOA、SCA、ESB、OSGI、EAI
Java设计模式
创建式模式:抽象工厂/建造者/工厂方法/原型/单例
构造型模式:适配器/桥接/组合/装饰/外观/享元/代理
行为型模式:责任链/命令/解释器/迭代子/中介者/备忘录/观察者/状态/策略/模板方法/访问者
Java与UML建模
对象图、用例图、组件图、部署图、序列图、交互图、活动图、正向工程与逆向工程
CTO首席技术官
发展战略
技术总监
团队提升
团队建设
项目管理
产品管理
Java介绍
Java分为三个体系JavaSE(Java2 Platform Standard Edition,java平台标准版),JavaEE(Java 2 Platform,Enterprise Edition,java平台企业版),JavaME(Java 2 Platform Micro Edition,java平台微型版)。
* Java SE(Java Platform,Standard Edition)。Java SE 以前称为 J2SE。它允许开发和部署在桌面、服务器、嵌入式环境和实时环境中使用的 Java 应用程序。Java SE 包含了支持 Java Web 服务开发的类,并为 Java Platform,Enterprise Edition(Java EE)提供基础。
* Java EE(Java Platform,Enterprise Edition)。这个版本以前称为 J2EE。企业版本帮助开发和部署可移植、健壮、可伸缩且安全的服务器端 Java 应用程序。Java EE 是在 Java SE 的基础上构建的,它提供 Web 服务、组件模型、管理和通信 API,可以用来实现企业级的面向服务体系结构(service-oriented architecture,SOA)和 Web 2.0 应用程序。
* Java ME(Java Platform,Micro Edition)。这个版本以前称为 J2ME。Java ME 为在移动设备和嵌入式设备(比如手机、PDA、电视机顶盒和打印机)上运行的应用程序提供一个健壮且灵活的环境。Java ME 包括灵活的用户界面、健壮的安全模型、许多内置的网络协议以及对可以动态下载的连网和离线应用程序的丰富支持。基于 Java ME 规范的应用程序只需编写一次,就可以用于许多设备,而且可以利用每个设备的本机功能。
J2SE就是做那种桌面安装程序样的,像QQ,WORD那种应用程序。
J2EE 就是做基于Internet的应用程序,像选课系统,企业网站,银行系统之类的。
J2ME就是做嵌入式系统开发的,像手机游戏之类的,像现在流行的Android操作系统。
为了让大家能够更快的加入到做项目的队伍,工作室特制定以下培训计划。我们java组现在主要是沿着J2EE这条路线走,主要是这方面项目目前比较多。
一.培训阶段的划分
1. 学习java基础(包括基本语法,面向对象的思想的一些特性,IO,集合框架,jdbc)
2. 学习网页的基础知识(包括html,css,javascript),这些是做好界面的必备知识。
3. 学习javaweb的基础知识(包括jsp,servlet,javabean,MVC,JSTL,EL表达式)
4. 学会使用ssh框架(struts.,hibernate,spring)
二.培训阶段的要求
1.Java基础
1. 大体了解java的运行原理,安装java虚拟机(java虚拟编绎与运行)
2. 熟练掌握java语言基本语法(这个和c语言里面的差不多)
3. 熟练掌握面向对象编程的思想及面向对象的一些基本概念(类,对象,接口,继承,重载,覆盖)
4. 熟练掌握输入输出流(流的概念,文件的读写,终端输入)
5. 熟练掌握集合框架(List,Set,Map)
6. 熟练掌握JDBC连接数据库(sqlserver2000,mysql数据库的使用及连接)
7. 熟练掌握API的使用,熟悉常用类库的使用。
8. 能够编写简单的图形界面程序
这个阶段是j2se的基础知识,特别是面向对象的知识的掌握,类和对象的概念,接口,继承,重载,覆盖,掌握基本的输入输出,然后就是集合框架,List,Set,Map的使用,因为这些在以后的数据库操作中经常将查询结果放在里面,最后就是用jdbc连接数据库,也许之前学过的一些理论都感觉没兴趣,但学了数据库的连接之后,兴趣就来了,因为这是第一次写程序操作数据库。
这个阶段培养人的最大能力就是要勤查API文档,要多去百度,要多向别人请教。
2. 静态网页的制作
1.了解网页的基本知识
2.会写基本的html语言,能够看懂别人写的html
3.会使用表单
4.使用javascript进行客户端验证
这个阶段要掌握一些静态网页的基本知识,学会动手做静态网页。学会用css控制
页面,学会用javascript来进行表单的验证。
3. javaweb基础
1. 搭建开发环境
安装Tomcat,并配置虚拟目录
安装Eclipse,并安装MyEclipse插件
作用MyEclipse新建项目,整合Tomcat服务器,部署项目
2. Jsp的基础语法
了解JSP基本特点
理解JSP的运行机制
熟练使用JSP声明语句
熟练使用JSP Scriptlets
熟练使用JSP表达式
3. JSP指令元素
了解Page,include,taglib指令的使用
了解<jsp:forward><jsp:include><jsp:param><jsp:params>
4. JSP内置对象(9个)
熟练使用JSP内置对象保存属性
熟练JSP属性保存的四个范围(page,request,session,application)
熟练使用request,session对象取得参数值,了解其他各对象常用的方法
5. JavaBean
熟练掌握定义JavaBean,调用JavaBean,设置并获得JavaBean属性,设置JavaBean的范围,移除JavaBean
6. EL表达式
熟练掌握使用EL运算符
熟练掌握EL内置对象
熟练掌握EL存取
7. JSTL标签库
JSTL核心标签库,数据库标签库,I18N格式化标签库,XML标签库和JSTL函数标签库
熟练掌握通过JSTL核心标签库定义变量,输出变量,移除变量
熟练掌握通过数据库标签库完成数据库操作
熟练掌握XML标签库完成 XML文件操作
熟练掌握I18N标签库完成国际化操作
熟练掌握通过JSTL函数标签库完成常用函数操作
8. Servlet开发
熟练掌握如何定义Servlet
理解Servlet的生命周期
熟练掌握HttpServlet的常用方法
熟练掌握使用Servlet的接口
9. Filter开发
熟练掌握如何定义并配置Filter
理解Filter的生命周期
熟练掌握如何添加非法文字过滤器,字符编码过滤器,登录验证过滤器
10. Listener开发
熟练掌握如何定义并配置Listener
熟练掌握 ServletContextListener,ServletContextAttributeListener,HttpSessionListener,
HttpSessionAtrributeListener接口的实现和作用
11. Dao设计模式
了解什么是Dao设计模式以及其特点
熟练掌握如何定义数据库连接类
熟练掌握如何定义Vo类
熟练掌握如何定义Dao接口,Dao类以及Dao工厂类
熟练掌握如何使用Dao实现数据库操作
12. MVC设计模式
了解什么是MVV设计模式
了解Model1和Model2的区别以及优缺点
熟练掌握如何定义视图,模型,控制器部分,用MVC进行开发
这个阶段才是真正的接触了javaweb的知识,要会用javaweb进行动态网页的开发,
这个阶段完成后,就能做一些应用系统的开发了,javaweb也基本上学完了,后面基本上都是些别人根据基础知识做好的框架或组件,我们只要拿来用就行。
4 . ssh框架
1 Struts2基础
了解如何下载并安装Struts2 框架
了解Struts2运行原理
熟练掌握如何新建控制器
熟练掌握如何配置控制器
了解实现Action接口的优点
熟练掌握通过Struts2标签库简化表单
熟练掌握通过继承ActionSupport完成输入校验
熟练掌握页面国际化以及校验错误信息国际化
2 Struts2高级开发
熟练使用Struts2内建的类型转换器
理解服务器端校验的重要性
熟练使用addFieldError来添加校验错误信息
熟练使用struts2校验框架完成输入校验
3 Hibernate持久化
了解什么是ORM映射以及特点
熟练掌握配置Hibernate配置文件
熟练掌握创建持久化类
熟练掌握创建关系映射文件
熟练掌握通过Hibernate框架进行数据库操作
4 Struts2整合Hibernate开发
熟练掌握持久层设计
熟练掌握业务逻辑层设计
熟练掌握struts2 整合hibernate 开发
5 Spring开发
熟练掌握Spring的依赖注入
熟练掌握Spring的自动装配
熟练掌握Spring面向切面编程
框架的发现,提高了软件开发的速度,增强了软件开发的规范性,使人们都按照某一种模式,一种规范去进行开发。这个阶段我们要做的就是学会使用这些框架来进行开发,了解框架的原理,当然有能力的话,根据它的原理,我们可以试着看下它的源码,自己试着写框架。
三.各阶段所要掌握的工具
1.Java基础
1.会用记事本(或EditPlus)编写java程序,在DOS下进行编绎与运行。(初级阶段)
2.会用JCreator编写,编绎,运行。(中级阶段)
3.会用Eclipse,JBuilder,NetBeans其中之一集成开发环境(高级阶段,推荐使用Eclipse)
4.会安装并使用Navicate(mysql的界面环境),sqlserver2000。(数据库)
2. 静态网页的制作
1. 会用记事本(或EditPlus)编写Html语言
2. 会用Dreamweaver进行编写Html语言
3.Fireworks切图
4.Photoshop图片处理
3. javaweb开发
1.Tomcat使用(javaweb服务器)
2.MyEclipse (javaweb开发)
3.JUit单元测试工具
4.PowerDesigner数据库设计工具
5.CVS版本控制工具
6. Rose ,visio UML建模工具
四.各阶段所要掌握的知识点
1.Java基础
(基本要求)
1. 了解Java语言的特征,掌握JDK(Java开发工具包)的安装、目录层次、
环境变量配置,Java程序的实现过程
2.Java语言基础
a). 数据类型:
8种基本类型:byte,char,short,int,long,float,double,boolean
引用类型: 数组, 类,接口
b).结构化语句: if,if--else ,if--else if ,switch--case,while,do--while,for
c).数组
int num[]={1,2,3,4,5}; <<==>> int []num={1,2,3,4,5};
3.面向对象的基础
a).类:具有相同属性和行为的一组对象的集合
b).对象:客观存在的或可被描述的抽象对象,具有特定属性和行为的实体。
c).类是对象的模板(原型),对象是类的具体实例
d).抽象、封装、继承,多态(重载,重写,接口多实现)
e).构造方法(默认构造器/参数化构造器)
f).限制访问修饰符: private,缺省(默认),protected,public
g).附加修饰符:final,static,abstract
h).接口
4.Java 基础包
a). java.lang :
包装类(Byte,Character,Short,Integer,Long,Float,Double,Boolean)
其它类:String,StringBuffer,Math,Class,Object
b). java.util
随机类:Random
日期类:Date,Calender
集合框架体系:Collection,List,Set,ArrayList,LinkedList,Vector,HashMap
c). java.io
文件类:File
字节流:FileInputStream,FileOutputStream
字符流:FileReader,FileWriter,BufferedReader,BufferedWriter
二进制流:(了解) DataInputStream,DataOutputStream
构造键盘流:BufferedReader input=
new BufferedReader(new InputStreamReader(System.in));
d). java.swt /javax.swing 了解java图形界面及事件响应机制
容器类组件:JFrame,JPanel,JScrollPane
组件: JLabel,JTextField,JPasswordField,JTextArea,JComboBox,
JRadioButton,JCheckBox,JMenuBar,JMenu,JMenuItem
5.JDBC 数据库连接
数据库的连接步骤:
1). 加载数据库驱动类: Class.forName(driver)
2). 通过驱动程序管理器获取连接: DriverManager.getConnection(url,user,password)
3). 基于连接对象建立处理器对象/预处理器对象
Statement stmt=conn.createStatement();
PreparedStatement stmt=conn.prepareStatement("insert into student values(?,?,?,?,?)");
4). 处理器执行SQL命令(Select/Insert/Update/Delete)
executeQuery(Select)
==>返回查询的结果集(ResultSet, ResultSet.getXXX(列编号,从1开始))
executeUpdate(Insert/Update/Delete) ==>返回执行命令影响的记录行(int)
5). 关闭各个对象
(高级要求,可以暂时不用掌握)
1. java内存管理(垃圾收集及对象引用的内存分析)
2. 栈和堆的区别(变量比较复制,引用传递和值传递)
3. 异常处理机制(异常的原量,异常程序流程)
4. 网络通信(TCP和UDP开发)开发
5. Java多线程开发
6. Applet,JavaWebStart.SWT,JavaFX
7. 数据库存取(事务存取,SavePoint)
8. 分布式计算(RMI,CORBA)
9. java本地调用(JNI原理,调用c程序,调用Delphi)
10. 反射机制(Annotation,动态代理)
11. Java动态编程(Compiler API,Instrumentation,Javassist,ClassEditor)
12. JMX资源管理容器
13. XML开发(DOM,DOM4J,SAX,JDOM)
14. LOG4J日志开发
15. 定时任务,日程工具Timer,Quartz
16. ZIP工具包
17. Excel文档存取工具POI
18. UML建模
19. 设计模式
2. 静态网页的制作
(基本要求)
1. 会写简单的HTML,并且能看懂一些正规网页(多级标题的运应。列表标记(序和无序标记)超链接标记,图像标记,表格标记,多媒体标记,表单标记
)
2. 用javascript做些简单的表单验证
3. 用css做排版
4. 会用Dreamweaver做简单的网页
(高级要求)以后从事界面开发的人,可以多下点工夫
1. 能够熟练用Dreamweaver制作网页
2. 能够熟练使用Photoshop进行图片处理
3. 能够熟练用Fireworks对图片进行切割
4. 能够熟练使用javascript做一些特效
5. 能够熟练使用DIV+CSS进行排版
3. javaweb开发
(基本要求)
1. WEB的两个发展阶段:静态,动态
2. 动态WEB的主要实现手段及区别
3. Tomcat的主要作用及配置
4. 开发一个简单的交互式程序
5. MyEclipse开发工具的使用
6. 在MyEclipse中使用Tomcat服务器
7. JSP中的三种注释
8. 三种SCriptlet及其区别
9. Page指令,包含指令
10. Jsp连接数据库
11. 两个include以及forward语句
12. 了解九个内置对象的定义
13. 掌握JAVAWEB中的四种属性范围
14. 掌握pageContext对象的使用
15. 掌握request,response,session,application四种内置对象及属性的设置
16. Javabean的主要作用,定义及使用,四种保存范围
17. 掌握Smartupload组件的作用,上传文件,为上传文件重命名
18. Dao数据库操作
19. MVC模式
20. Servlet
21. EL
22. JSTL
(高级要求,可以暂时不用掌握)
1. Filter
2. Listener
3. 报表的处理(JFreeChat)
4. 邮件收发(JavaMail)
5. 分页技术
6. Ajax
7. JSF
8. Freemarker
4.ssh框架学习
1.Struts(基本要求)
1. 了解struts2 框架的思想,MVC实现
2. 在Eclipse中开发struts2
3. Struts2 的基本流程
4. Struts2的基本配置(web.xml,struts.xml.struts.properties,struts.xml)
5. Struts2的Action(实现Action类,Action访问Servlet API,配置Action,动态方法调用,使用通配符,默认Action)
6. Struts2的处理结果(配置结果,Struts2支持的处理结果类型,redirect,chain)
7. Struts2的属性驱动与模型驱动
8. Struts2的类型转换器
Struts(高级要求)
1. Struts2的文件上传下载
2. Struts2的拦截器
3. Struts2的输入校验
4. Struts2的国际化
5. Struts2的标签库
6. Struts2的Ajax
7. 整合JSF
8. 整合JFreeChart
五.各阶段任务
1.Java基础
1. 安装配置java运行环境JDK,了解java程序的运行机理,用记事本写个HelloWorld程序,并在命令行操作。
2. 用java写个对数组降序排列程序(数组最好可以自己输入);在后面抄一个有图形的界面的程序(像画图的,有菜单的之类的),自己试着运行下(相信大家看到图形后会有惊喜的)。
3. 安装JCreator,用JCreator写个执行单步的计算器(不要求界面)。如输入3+5 输出8
4. 了解类,面向对象,继承,接口的相关概念,会编写一定的基础程序。
(1)定义一个接口,里面有方法ShowS(),ShowC()
(2)编写一个正方形类,实现了上面的接口,其中包含边长A,面积S和周长C,编写方法ShowS()和ShowC()分别输出正方形的面积和周长。(测试数据:A=5)
(3)编写一个长方体类继承自正方形类,长为A宽为B,重写方法ShowS()和ShowC()分别输出长方形的面积和周长。(测试数据:A=3,B=5)
(4)编写测试类来测试以上两个类。
5. 学会查API文档(这是必备的,因为类库非常多,要记是不可能的,记得常用的就行,另外就是要勤查文档),实现下面的接口。
要求:涉及到具体时间的标准格式格式一般为:yyyy-MM-dd HH:mm:ss
测试类可以自己写。
public interface TimeInterface {
// 计算当月最后一天,返回字符串
public String getDefaultDay();
// 获得本周星期日的日期
public String getCurrentWeekday();
// 获取当天时间
public String getNowTime(String dateformat);
// 获得上周星期日的日期
public String getPreviousWeekSunday();
// 获得下个月最后一天的日期
public String getNextMonthEnd();
// 获得明年最后一天的日期
public String getNextYearEnd();
/**
* 是否闰年,参数要求由键盘输入
*
* @param year
* 年
* @return
*/
public boolean isLeapYear(int year);
}
6. 安装Eclipse,会用Eclipse编写程序,编写图形界面程序,能够对事件响应有很好的了解。编写一个记事本,能够对字体大小,字体形状,字体颜色进行控制,能够复制粘贴。(多查API文档)
7. 编写图形界面的计算器,能够实现简单的加减乘除运算,乘立方法算。
8. 安装sqlserver2000数据库,了解数据库基本知识,能够用查询分析器进行简单的增删改查。
9. 能够用JDBC连接数据库,将登录注册程序连接上数据库。
2. 静态网页的制作
1. 学会用html语言做静态网页。做一个介绍自己的网站(要求:代码手写,有以下标签:多级标题,列表,超链接,图像,表格,多媒体,表单)
2. 对介绍自己的网站的布局用css ,div控制完成
3. 用javascript对自己的网站进行表单验证。
4. javaweb开发
1. 安装Tomcat和MyEclipse,配置环境,了解jsp的运行原理。
2. 学习jsp的基本语法,会用四种内置对象,能够实现表单的提交,页面的跳转,做个登录注册程序,不要求连接数据库。
3. 用jsp对介绍自己的网站进行更改,要求能够,实现表单的提交,页面的参数传递和连接数据库对自己信息进行更改。
4. 了解Servlet的运行原理,配置Servlet,利用Servlet做一个登录注册程序。
5. 学习javabean,对登录注册用Servlet+javaBean+jsp实现
6. 用el表达式,对登录注册程序用EL表达式实现
7. 用JSTL表达式,对登录注岫程序用JSTL表达式实现
4.ssh框架学习
JAVA完全学习路线图:
Java介绍
Java分为三个体系JavaSE(Java2 Platform Standard Edition,java平台标准版),JavaEE(Java 2 Platform,Enterprise Edition,java平台企业版),JavaME(Java 2 Platform Micro Edition,java平台微型版)。
* Java SE(Java Platform,Standard Edition)。Java SE 以前称为 J2SE。它允许开发和部署在桌面、服务器、嵌入式环境和实时环境中使用的 Java 应用程序。Java SE 包含了支持 Java Web 服务开发的类,并为 Java Platform,Enterprise Edition(Java EE)提供基础。
* Java EE(Java Platform,Enterprise Edition)。这个版本以前称为 J2EE。企业版本帮助开发和部署可移植、健壮、可伸缩且安全的服务器端 Java 应用程序。Java EE 是在 Java SE 的基础上构建的,它提供 Web 服务、组件模型、管理和通信 API,可以用来实现企业级的面向服务体系结构(service-oriented architecture,SOA)和 Web 2.0 应用程序。
* Java ME(Java Platform,Micro Edition)。这个版本以前称为 J2ME。Java ME 为在移动设备和嵌入式设备(比如手机、PDA、电视机顶盒和打印机)上运行的应用程序提供一个健壮且灵活的环境。Java ME 包括灵活的用户界面、健壮的安全模型、许多内置的网络协议以及对可以动态下载的连网和离线应用程序的丰富支持。基于 Java ME 规范的应用程序只需编写一次,就可以用于许多设备,而且可以利用每个设备的本机功能。
J2SE就是做那种桌面安装程序样的,像QQ,WORD那种应用程序。
J2EE 就是做基于Internet的应用程序,像选课系统,企业网站,银行系统之类的。
J2ME就是做嵌入式系统开发的,像手机游戏之类的,像现在流行的Android操作系统。
为了让大家能够更快的加入到做项目的队伍,工作室特制定以下培训计划。我们java组现在主要是沿着J2EE这条路线走,主要是这方面项目目前比较多。
一.培训阶段的划分
1. 学习java基础(包括基本语法,面向对象的思想的一些特性,IO,集合框架,jdbc)
2. 学习网页的基础知识(包括html,css,javascript),这些是做好界面的必备知识。
3. 学习javaweb的基础知识(包括jsp,servlet,javabean,MVC,JSTL,EL表达式)
4. 学会使用ssh框架(struts.,hibernate,spring)
二.培训阶段的要求
1.Java基础
1. 大体了解java的运行原理,安装java虚拟机(java虚拟编绎与运行)
2. 熟练掌握java语言基本语法(这个和c语言里面的差不多)
3. 熟练掌握面向对象编程的思想及面向对象的一些基本概念(类,对象,接口,继承,重载,覆盖)
4. 熟练掌握输入输出流(流的概念,文件的读写,终端输入)
5. 熟练掌握集合框架(List,Set,Map)
6. 熟练掌握JDBC连接数据库(sqlserver2000,mysql数据库的使用及连接)
7. 熟练掌握API的使用,熟悉常用类库的使用。
8. 能够编写简单的图形界面程序
这个阶段是j2se的基础知识,特别是面向对象的知识的掌握,类和对象的概念,接口,继承,重载,覆盖,掌握基本的输入输出,然后就是集合框架,List,Set,Map的使用,因为这些在以后的数据库操作中经常将查询结果放在里面,最后就是用jdbc连接数据库,也许之前学过的一些理论都感觉没兴趣,但学了数据库的连接之后,兴趣就来了,因为这是第一次写程序操作数据库。
这个阶段培养人的最大能力就是要勤查API文档,要多去百度,要多向别人请教。
2. 静态网页的制作
1.了解网页的基本知识
2.会写基本的html语言,能够看懂别人写的html
3.会使用表单
4.使用javascript进行客户端验证
这个阶段要掌握一些静态网页的基本知识,学会动手做静态网页。学会用css控制
页面,学会用javascript来进行表单的验证。
3. javaweb基础
1. 搭建开发环境
安装Tomcat,并配置虚拟目录
安装Eclipse,并安装MyEclipse插件
作用MyEclipse新建项目,整合Tomcat服务器,部署项目
2. Jsp的基础语法
了解JSP基本特点
理解JSP的运行机制
熟练使用JSP声明语句
熟练使用JSP Scriptlets
熟练使用JSP表达式
3. JSP指令元素
了解Page,include,taglib指令的使用
了解<jsp:forward><jsp:include><jsp:param><jsp:params>
4. JSP内置对象(9个)
熟练使用JSP内置对象保存属性
熟练JSP属性保存的四个范围(page,request,session,application)
熟练使用request,session对象取得参数值,了解其他各对象常用的方法
5. JavaBean
熟练掌握定义JavaBean,调用JavaBean,设置并获得JavaBean属性,设置JavaBean的范围,移除JavaBean
6. EL表达式
熟练掌握使用EL运算符
熟练掌握EL内置对象
熟练掌握EL存取
7. JSTL标签库
JSTL核心标签库,数据库标签库,I18N格式化标签库,XML标签库和JSTL函数标签库
熟练掌握通过JSTL核心标签库定义变量,输出变量,移除变量
熟练掌握通过数据库标签库完成数据库操作
熟练掌握XML标签库完成 XML文件操作
熟练掌握I18N标签库完成国际化操作
熟练掌握通过JSTL函数标签库完成常用函数操作
8. Servlet开发
熟练掌握如何定义Servlet
理解Servlet的生命周期
熟练掌握HttpServlet的常用方法
熟练掌握使用Servlet的接口
9. Filter开发
熟练掌握如何定义并配置Filter
理解Filter的生命周期
熟练掌握如何添加非法文字过滤器,字符编码过滤器,登录验证过滤器
10. Listener开发
熟练掌握如何定义并配置Listener
熟练掌握 ServletContextListener,ServletContextAttributeListener,HttpSessionListener,
HttpSessionAtrributeListener接口的实现和作用
11. Dao设计模式
了解什么是Dao设计模式以及其特点
熟练掌握如何定义数据库连接类
熟练掌握如何定义Vo类
熟练掌握如何定义Dao接口,Dao类以及Dao工厂类
熟练掌握如何使用Dao实现数据库操作
12. MVC设计模式
了解什么是MVV设计模式
了解Model1和Model2的区别以及优缺点
熟练掌握如何定义视图,模型,控制器部分,用MVC进行开发
这个阶段才是真正的接触了javaweb的知识,要会用javaweb进行动态网页的开发,
这个阶段完成后,就能做一些应用系统的开发了,javaweb也基本上学完了,后面基本上都是些别人根据基础知识做好的框架或组件,我们只要拿来用就行。
4 . ssh框架
1 Struts2基础
了解如何下载并安装Struts2 框架
了解Struts2运行原理
熟练掌握如何新建控制器
熟练掌握如何配置控制器
了解实现Action接口的优点
熟练掌握通过Struts2标签库简化表单
熟练掌握通过继承ActionSupport完成输入校验
熟练掌握页面国际化以及校验错误信息国际化
2 Struts2高级开发
熟练使用Struts2内建的类型转换器
理解服务器端校验的重要性
熟练使用addFieldError来添加校验错误信息
熟练使用struts2校验框架完成输入校验
3 Hibernate持久化
了解什么是ORM映射以及特点
熟练掌握配置Hibernate配置文件
熟练掌握创建持久化类
熟练掌握创建关系映射文件
熟练掌握通过Hibernate框架进行数据库操作
4 Struts2整合Hibernate开发
熟练掌握持久层设计
熟练掌握业务逻辑层设计
熟练掌握struts2 整合hibernate 开发
5 Spring开发
熟练掌握Spring的依赖注入
熟练掌握Spring的自动装配
熟练掌握Spring面向切面编程
框架的发现,提高了软件开发的速度,增强了软件开发的规范性,使人们都按照某一种模式,一种规范去进行开发。这个阶段我们要做的就是学会使用这些框架来进行开发,了解框架的原理,当然有能力的话,根据它的原理,我们可以试着看下它的源码,自己试着写框架。
三.各阶段所要掌握的工具
1.Java基础
1.会用记事本(或EditPlus)编写java程序,在DOS下进行编绎与运行。(初级阶段)
2.会用JCreator编写,编绎,运行。(中级阶段)
3.会用Eclipse,JBuilder,NetBeans其中之一集成开发环境(高级阶段,推荐使用Eclipse)
4.会安装并使用Navicate(mysql的界面环境),sqlserver2000。(数据库)
2. 静态网页的制作
1. 会用记事本(或EditPlus)编写Html语言
2. 会用Dreamweaver进行编写Html语言
3.Fireworks切图
4.Photoshop图片处理
3. javaweb开发
1.Tomcat使用(javaweb服务器)
2.MyEclipse (javaweb开发)
3.JUit单元测试工具
4.PowerDesigner数据库设计工具
5.CVS版本控制工具
6. Rose ,visio UML建模工具
四.各阶段所要掌握的知识点
1.Java基础
(基本要求)
1. 了解Java语言的特征,掌握JDK(Java开发工具包)的安装、目录层次、
环境变量配置,Java程序的实现过程
2.Java语言基础
a). 数据类型:
8种基本类型:byte,char,short,int,long,float,double,boolean
引用类型: 数组, 类,接口
b).结构化语句: if,if--else ,if--else if ,switch--case,while,do--while,for
c).数组
int num[]={1,2,3,4,5}; <<==>> int []num={1,2,3,4,5};
3.面向对象的基础
a).类:具有相同属性和行为的一组对象的集合
b).对象:客观存在的或可被描述的抽象对象,具有特定属性和行为的实体。
c).类是对象的模板(原型),对象是类的具体实例
d).抽象、封装、继承,多态(重载,重写,接口多实现)
e).构造方法(默认构造器/参数化构造器)
f).限制访问修饰符: private,缺省(默认),protected,public
g).附加修饰符:final,static,abstract
h).接口
4.Java 基础包
a). java.lang :
包装类(Byte,Character,Short,Integer,Long,Float,Double,Boolean)
其它类:String,StringBuffer,Math,Class,Object
b). java.util
随机类:Random
日期类:Date,Calender
集合框架体系:Collection,List,Set,ArrayList,LinkedList,Vector,HashMap
c). java.io
文件类:File
字节流:FileInputStream,FileOutputStream
字符流:FileReader,FileWriter,BufferedReader,BufferedWriter
二进制流:(了解) DataInputStream,DataOutputStream
构造键盘流:BufferedReader input=
new BufferedReader(new InputStreamReader(System.in));
d). java.swt /javax.swing 了解java图形界面及事件响应机制
容器类组件:JFrame,JPanel,JScrollPane
组件: JLabel,JTextField,JPasswordField,JTextArea,JComboBox,
JRadioButton,JCheckBox,JMenuBar,JMenu,JMenuItem
5.JDBC 数据库连接
数据库的连接步骤:
1). 加载数据库驱动类: Class.forName(driver)
2). 通过驱动程序管理器获取连接: DriverManager.getConnection(url,user,password)
3). 基于连接对象建立处理器对象/预处理器对象
Statement stmt=conn.createStatement();
PreparedStatement stmt=conn.prepareStatement("insert into student values(?,?,?,?,?)");
4). 处理器执行SQL命令(Select/Insert/Update/Delete)
executeQuery(Select)
==>返回查询的结果集(ResultSet, ResultSet.getXXX(列编号,从1开始))
executeUpdate(Insert/Update/Delete) ==>返回执行命令影响的记录行(int)
5). 关闭各个对象
(高级要求,可以暂时不用掌握)
1. java内存管理(垃圾收集及对象引用的内存分析)
2. 栈和堆的区别(变量比较复制,引用传递和值传递)
3. 异常处理机制(异常的原量,异常程序流程)
4. 网络通信(TCP和UDP开发)开发
5. Java多线程开发
6. Applet,JavaWebStart.SWT,JavaFX
7. 数据库存取(事务存取,SavePoint)
8. 分布式计算(RMI,CORBA)
9. java本地调用(JNI原理,调用c程序,调用Delphi)
10. 反射机制(Annotation,动态代理)
11. Java动态编程(Compiler API,Instrumentation,Javassist,ClassEditor)
12. JMX资源管理容器
13. XML开发(DOM,DOM4J,SAX,JDOM)
14. LOG4J日志开发
15. 定时任务,日程工具Timer,Quartz
16. ZIP工具包
17. Excel文档存取工具POI
18. UML建模
19. 设计模式
2. 静态网页的制作
(基本要求)
1. 会写简单的HTML,并且能看懂一些正规网页(多级标题的运应。列表标记(序和无序标记)超链接标记,图像标记,表格标记,多媒体标记,表单标记
)
2. 用javascript做些简单的表单验证
3. 用css做排版
4. 会用Dreamweaver做简单的网页
(高级要求)以后从事界面开发的人,可以多下点工夫
1. 能够熟练用Dreamweaver制作网页
2. 能够熟练使用Photoshop进行图片处理
3. 能够熟练用Fireworks对图片进行切割
4. 能够熟练使用javascript做一些特效
5. 能够熟练使用DIV+CSS进行排版
3. javaweb开发
(基本要求)
1. WEB的两个发展阶段:静态,动态
2. 动态WEB的主要实现手段及区别
3. Tomcat的主要作用及配置
4. 开发一个简单的交互式程序
5. MyEclipse开发工具的使用
6. 在MyEclipse中使用Tomcat服务器
7. JSP中的三种注释
8. 三种SCriptlet及其区别
9. Page指令,包含指令
10. Jsp连接数据库
11. 两个include以及forward语句
12. 了解九个内置对象的定义
13. 掌握JAVAWEB中的四种属性范围
14. 掌握pageContext对象的使用
15. 掌握request,response,session,application四种内置对象及属性的设置
16. Javabean的主要作用,定义及使用,四种保存范围
17. 掌握Smartupload组件的作用,上传文件,为上传文件重命名
18. Dao数据库操作
19. MVC模式
20. Servlet
21. EL
22. JSTL
(高级要求,可以暂时不用掌握)
1. Filter
2. Listener
3. 报表的处理(JFreeChat)
4. 邮件收发(JavaMail)
5. 分页技术
6. Ajax
7. JSF
8. Freemarker
4.ssh框架学习
1.Struts(基本要求)
1. 了解struts2 框架的思想,MVC实现
2. 在Eclipse中开发struts2
3. Struts2 的基本流程
4. Struts2的基本配置(web.xml,struts.xml.struts.properties,struts.xml)
5. Struts2的Action(实现Action类,Action访问Servlet API,配置Action,动态方法调用,使用通配符,默认Action)
6. Struts2的处理结果(配置结果,Struts2支持的处理结果类型,redirect,chain)
7. Struts2的属性驱动与模型驱动
8. Struts2的类型转换器
Struts(高级要求)
1. Struts2的文件上传下载
2. Struts2的拦截器
3. Struts2的输入校验
4. Struts2的国际化
5. Struts2的标签库
6. Struts2的Ajax
7. 整合JSF
8. 整合JFreeChart
五.各阶段任务
1.Java基础
1. 安装配置java运行环境JDK,了解java程序的运行机理,用记事本写个HelloWorld程序,并在命令行操作。
2. 用java写个对数组降序排列程序(数组最好可以自己输入);在后面抄一个有图形的界面的程序(像画图的,有菜单的之类的),自己试着运行下(相信大家看到图形后会有惊喜的)。
3. 安装JCreator,用JCreator写个执行单步的计算器(不要求界面)。如输入3+5 输出8
4. 了解类,面向对象,继承,接口的相关概念,会编写一定的基础程序。
(1)定义一个接口,里面有方法ShowS(),ShowC()
(2)编写一个正方形类,实现了上面的接口,其中包含边长A,面积S和周长C,编写方法ShowS()和ShowC()分别输出正方形的面积和周长。(测试数据:A=5)
(3)编写一个长方体类继承自正方形类,长为A宽为B,重写方法ShowS()和ShowC()分别输出长方形的面积和周长。(测试数据:A=3,B=5)
(4)编写测试类来测试以上两个类。
5. 学会查API文档(这是必备的,因为类库非常多,要记是不可能的,记得常用的就行,另外就是要勤查文档),实现下面的接口。
要求:涉及到具体时间的标准格式格式一般为:yyyy-MM-dd HH:mm:ss
测试类可以自己写。
public interface TimeInterface {
// 计算当月最后一天,返回字符串
public String getDefaultDay();
// 获得本周星期日的日期
public String getCurrentWeekday();
// 获取当天时间
public String getNowTime(String dateformat);
// 获得上周星期日的日期
public String getPreviousWeekSunday();
// 获得下个月最后一天的日期
public String getNextMonthEnd();
// 获得明年最后一天的日期
public String getNextYearEnd();
/**
* 是否闰年,参数要求由键盘输入
*
* @param year
* 年
* @return
*/
public boolean isLeapYear(int year);
}
6. 安装Eclipse,会用Eclipse编写程序,编写图形界面程序,能够对事件响应有很好的了解。编写一个记事本,能够对字体大小,字体形状,字体颜色进行控制,能够复制粘贴。(多查API文档)
7. 编写图形界面的计算器,能够实现简单的加减乘除运算,乘立方法算。
8. 安装sqlserver2000数据库,了解数据库基本知识,能够用查询分析器进行简单的增删改查。
9. 能够用JDBC连接数据库,将登录注册程序连接上数据库。
2. 静态网页的制作
1. 学会用html语言做静态网页。做一个介绍自己的网站(要求:代码手写,有以下标签:多级标题,列表,超链接,图像,表格,多媒体,表单)
2. 对介绍自己的网站的布局用css ,div控制完成
3. 用javascript对自己的网站进行表单验证。
4. javaweb开发
1. 安装Tomcat和MyEclipse,配置环境,了解jsp的运行原理。
2. 学习jsp的基本语法,会用四种内置对象,能够实现表单的提交,页面的跳转,做个登录注册程序,不要求连接数据库。
3. 用jsp对介绍自己的网站进行更改,要求能够,实现表单的提交,页面的参数传递和连接数据库对自己信息进行更改。
4. 了解Servlet的运行原理,配置Servlet,利用Servlet做一个登录注册程序。
5. 学习javabean,对登录注册用Servlet+javaBean+jsp实现
6. 用el表达式,对登录注册程序用EL表达式实现
7. 用JSTL表达式,对登录注岫程序用JSTL表达式实现
4.ssh框架学习
史上最强Java学习路线(详解)
Java是一个通用的编程语言,其实可以干很多事,怎么学Java就看怎么用了,但有一些一般的步骤:
-
熟悉一种文本编辑器,比如Vim, Emacs, Notepad++, TextMate等。知道哪些是开源的,哪些是闭源的,哪些要收费。养成不用盗版软件的习惯。
-
安装JDK(建议用你的Linux发行版自带的软件包管理器安装openjdk,过程中可能需要读发行版特定的文档)
-
写一个Java的Helloworld程序,并用命令行工具javac编译,再用java命令运行这个程序。过程中熟悉源代码、字节码、虚拟机这些东西,以及Java的包(package)对.class文件所在的路径的影响。如果这两个命令行工具使用熟练了,可以开始选一个喜欢的集成开发环境,比如Eclipse。当然,养成不用盗版软件的习惯。熟悉一下如何建立“工程”,以及快捷键的使用。
-
学习Java的面向过程编程,包括基本数据结构、表达式、语句、控制流、函数调用。
-
学习Java的面向对象编程,包括类、引用类型和值类型的区别、成员、方法、访问控制、继承、多态、接口、接口实现。顺便学习一下面向对象的基本思想,即对象、消息、封装、继承、多态等,这些通用的内容不是Java特有的。这时候应该已经涉及了Java的垃圾回收。要留意即使有垃圾回收的情况下也会发生的内存泄露(如自己设计数组容器,元素是引用,逻辑上删除了元素,但并没有清成null)。注意垃圾回收只能回收内存中的对象,除了内存以外,其它资源不能依靠垃圾回收来关闭。比如,文件、管道、Socket、数据库连接等,垃圾回收是不会帮你关闭的。
-
学习Java的异常处理,但更重要的是学习什么时候用特殊返回值而不使用异常,什么时候应该抛出异常而不处理异常,知道什么是pokemon catch及其危害,了解为什么Java的checked exception是一个糟糕的特性。如果愿意,同时学习一下Java1.7的try-with-resource语句和AutoCloseable接口。
-
熟悉Java常用的数据结构,如基本的数组类型,以及泛型容器(java.util.*),尤其是java.util.List接口和java.util.ArrayList实现;以及java.util.Map接口和java.util.HashMap实现。(java1.5以前的没有泛型参数的就不用碰了)同时留意一下基本类型int, double等和装箱类型Integer和Double的区别,以及它们是如何自动转换的。
-
熟悉Java标准库里的各种工具,包括日期时间、字符串格式化、IO等。**知道文件要自己在finally子句中close(),或者用Java1.7的try-with-resource,不要妄想垃圾回收器会帮你关掉文件。
-
学习一下Java的命名习惯,以及JavaBeans的常规,知道为什么getter/setter比直接操作成员变量好。按这种方式给Java的变量、方法命名。同时看看你的IDE能不能自动帮你生成getter和setter。
-
使用一个第三方的库(比如Apache Commons Lang通用工具库),让你的程序依赖于它的二进制jar包(而不是直接拷贝源代码),用命令行编译、运行(注意classpath等);也熟悉一下如何用你的集成开发环境添加第三方依赖。感受一下手动管理依赖关系的麻烦。
-
学习Maven的使用,试着让Maven帮你解决依赖关系,再试着让Maven帮你创建一个Eclipse工程。再试试用Maven打包发布。
-
学习软件测试,以及JUnit的使用,以及怎么在IDE中使用JUnit。有空看一下coverage工具。
-
读读四人帮写的《设计模式》(这本书是用C++和Smalltalk语言为例子的,但仍然适合Java)。
接下来就看具体要做哪方面的应用了,看需求。比如(下面的没有顺序)
关于语言
-
如果学Java学得不舒服了,学Python。
-
如果对面向对象编程的概念有点不习惯,学Smalltalk。(Ruby也行,但不如Smalltalk经典。Ruby的文档是一大硬伤。)
-
如果嫌Java太啰嗦,学Python
-
如果嫌Java太啰嗦,又想用JVM,自己又有精力,学Scala
-
如果对对象之间的关系有点晕,学一学UML,以及它的一些图,可以对程序和运行进行直观的建模。你的IDE也许有插件可以生成UML图。但是不要太沉迷于这些方法论。
调试和辅助工具
学习一下你的集成开发环境提供的调试工具,加一些断点试试。
-
试试用jconsole或者VisualVM监控另一个jvm的状态。
-
用profiling工具寻找程序中慢的地方。Eclipse有profiling工具。VisualVM也有这样的功能。(如果不介意使用闭源软件的话,也试试JProfiler和YourKit)
-
有的JVM允许在运行时更新代码。Eclipse可以和某些JVM集成。这样你可以频繁修改代码而不用频繁重启JVM。对于某些“重型”工程很有用。(如果不介意使用闭源软件的话,也试试jRebel)
多线程
学习Java的多线程编程以及lock、condition的用法(包括传统Java的synchronized语句以及新加的java.util.concurrent.*),学习一下如何让线程停下来,以及为什么要频繁确认isInterrupted()而不要用Thread.stop()。了解一下多核处理器、缓存、内存的关系,以及为什么多线程编程这么难。
-
如果还舒服,学习一下Runnable的用法,以及自带的Executer等基本多线程工具。
-
应该已经留意到java.util里面的很多容器不是线程安全的,但是java.util.Collections可以帮你创建一些安全的版本。另外关注一下java.util.concurrent里面有ConcurrentMap等容器可供使用。
-
如果有空的话,看看memory model(内存一致性模型)和无锁同步(见java memory model和java.util.concurrent.atomic)。
-
如果还有空,再了解一下除了“共享内存多线程编程”以外有没有别的模型(多进程multi-processing、消息传递message passing等)。
反射、元编程
-
学习Java的反射机制,以及Annotation的用法。
-
如果还舒服,试试java.lang.reflect.Proxy的用法。
-
如果仍然还舒服,玩一玩CGLib(一个第三方的库)。
网络编程
学习一下IP,TCP协议(计算机专业的应该学过,复习一下),学习Socket编程(注意垃圾回收器不会帮你关掉Socket)。
-
如果不是很关心HTTP,看看java.nio,学习单线程轮询式IO复用(Selector)。
-
如果有点不明白nio的意图的话,了解一下c10k问题。 http://www.kegel.com/c10k.html
-
如果身体没有异样的话,大概了解一下操作系统(包括C语言)提供的select, poll, epoll, kqueue等接口。
-
如果身体仍然没有异样的话,试着用java.nio写一个文件服务器。
-
如果还有精力的话,上网扒一扒有没有其他的通信库,如netty等。
-
如果关心Web还有HTTP,就学习一下HTTP协议,以及用Java进行HTTP的客户端编程。
-
如果还舒服,学学HTML,写写HTML的静态网页(不需要Java)
-
如果还舒服,用Java写一个基于DOM、XPath或者CSS Selector的网页解析器(爬网页)。
-
如果还舒服,学学Java的Servlet接口(先别学jsp)进行Web服务器端编程。学学标准的Servlet容器怎么用,包括web.xml的用法以及listener、filter等概念。以及某个Servlet容器(如Jetty或者Tomcat)的具体用法。
-
如果仍然还舒服,试着学一种模板语言(如haml, velocity, freemarker,【还有其他更好的框架吗?我不知道】, String.format,如果真的想学JSP的话JSP倒是也行,但不推荐)。
-
如果仍然觉得舒服,学学Spring框架中的Web框架,或者Struts,看你的口味。
-
如果还舒服,看看Spring Bean Container以及里面各种乱七八糟的工具。
-
如果还舒服,或者有需求,了解一下什么是RESTful Web Service,复习一下HTTP,找找适合的Java工具。
-
你可能会觉得Jackson是一个解析JSON用的好用的东西。
数据库
学习一下关系数据库(计算机专业的应该学过,复习一下),包括SQL。选一个数据库管理系统熟悉一下(比如MariaDB,或者(如果你不讨厌Oracle的话)用被Oracle收购了的MySQL。先脱离Java单独学学)。然后看它们的官方文档教你怎么用Java连接这种数据库。这中间会涉及到JDBC接口。同时一定要知道SQL注入安全漏洞,以及掌握如何用PreparedStatement防止注入!!。建议看 http://bobby-tables.com/
-
可能中间会涉及“事务”问题,让你不知不觉地开始去了解java transaction api(JTA)。
-
如果还舒服,学一学对象关系转换(如Hibernate)。
-
也可以学学非关系数据库,以及如何用Java访问它们。
日志记录
学习一下slf4j和logback的用法。
-
如果有精力的话,大概了解一下世界上有多少种Java日志框架,以及slf4j是怎么桥接这些框架的。
构建(build)系统
学习一下Ant的用法。
-
如果还舒服的话,学习一下用Ivy从Maven的仓库里下载软件包,解决依赖关系。
版本控制
学习一种分布式版本控制器(如Git、Mercurial、Bzr、Darcs等,推荐Git)的基本用法,以及如何用它管理Java工程。希望你已经开始使用Maven了,并且知道为什么把IDE生成的工程文件(如eclipse的.project,.classpath和.metadata)放入版本控制器不好。然后了解一下如何在IDE中使用版本控制(Eclipse自带Git插件)。
-
如果感觉很舒服的话,为你们实验室搭建一个Linux+SSH+Git服务器,装个GitLab(一种Web界面)。
-
了解“集中式版本控制器”和“分布式版本控制器”的区别,并说服同事们不要再用SVN、CVS或者SourceSafe等老旧的“集中式版本控制器”了。
-
开设一个GitHub账户。如果你不喜欢Git,就用BitBucket等。
持续集成
自己(或者为你们实验室)搭建一个持续集成(Continuous Integration)服务器,如Jenkins,定期编译你的程序。建议同时使用Git等分布式版本控制器。
-
如果你做开源软件,试试GitHub和Travis。
零碎工具
淘一淘java.nio.files里面有什么好用的东东,然后再淘一淘Apache Commons Lang和Commons IO里有什么好用的工具。Commons Logging就不要再用了,用SLF4j和Logback。
XML
学学XML、DOM、XPath。XML这东西到处都可能用到。也可以用它写自己的配置文件。
-
如果觉得不舒服了,就学学JSON和YAML。
-
如果还是不舒服,就学学文本文件解析。
语法分析和编译器
学学Antlr或者别的Parser Generator的用法
-
如果觉得舒服,自己写一个计算器。
-
如果还觉得舒服,自己写一种Domain-Specific Language (DSL)。
高效容器
学学FastUtil或者Trove,如果你需要进行大量数值运算的话。
分布式计算
学学MapReduce的思想以及它的实现。
-
如果还舒服,学学Scala语言以及号称比MapReduce快得多的Apache Spark。
进程间通信
看看ActiveMQ、MINA和RMI。
其他语言(JVM)
学习另一门跑在JVM上的语言或者实现(如Groovy、Scala、Clojure、JRuby、Jython、JavaScript……)
-
如果还舒服,学一学Java Scripting API(注意不是JavaScript。给个链接:http://docs.oracle.com/javase/6/docs/technotes/guides/scripting/programmer_guide/ ),然后试着在自己的Java程序里嵌入脚本。
其他语言(非JVM)
学习另一门通用脚本语言(如Python、Ruby,其实perl也行,但不推荐),知道什么时候Java不是最好的选择。
Java语言和Java虚拟机
通读一遍(一目十行地读,不用细读)Java Language Specification,以及Java Virtual Machine Specification。
-
了解以下解释器(interpreter)、编译器(compiler)、即时编译器(just-in-time compiler)和优化器(optimiser)的概念。
-
如果对编译器的话题不感到畏惧,了解一下method JIT和tracing JIT的概念和区别。
内存管理
学学垃圾回收的几种基本算法,包括mark-sweep、mark-compact、semi-space、generational、mark-region等,各自的性能,以及为什么朴素的reference counting是不完整的。知道为什么finalizer性能很糟糕,而且标准并不要求finalizer在程序退出前一定会执行。
-
如果还舒服,了解一下如何设置Java虚拟机的堆大小限制(如HotSpot虚拟机的-Xmx选项等)。
-
了解一下Java里的WeakReference以及SoftReference和PhantomReference,以及它们什么时候有用,以及为什么它们实现起来有些困难。
-
如果有精力,了解一下Hotspot虚拟机的内存管理算法是什么样的。
动态装载
学学Java的动态装载(class loading)
-
如果还舒服的话,学学OSGI以及它的一种实现(如Felix或者Equinox)
-
如果仍然很舒服的话,学学写基于Eclipse平台的程序。不是Eclipse集成开发环境,只是利用他们的图形框架,写自己的应用程序。
-
如果还觉得舒服的话,写Eclipse集成开发环境的插件。
本地/外语接口
学习一下Java Native Interface(JNI),试着写一个Java和C语言混合编程的程序。
-
如果觉得不舒服了或者觉得欲仙欲死,就学一学Java Native Access(JNA),试一试不用任何胶水代码而从Java直接装载C库,直接调用C函数。
-
如果连JNA也懒得学,就学一学SWIG,自动生成绑定。
-
如果觉得舒服,就学一学Java Virtual Machine Tooling Interface(JVMTI),用C程序来监视JVM的状态。
密码学
学一学密码学,包括编码、密码分析、攻击、对称密钥、公钥系统、数字签名、哈希算法等,看看Java有没有实现。
如果觉得有点不舒服(你应该不会觉得舒服吧,除非你是学密码学的,要不然总会觉得自己写的程序有安全漏洞),就写一个“人品计算器”来放松一下,要求每次输入同一个姓名,得到的人品值是固定的,但又要让人无法用别人的人品值猜自己的人品值。
移动终端
学一学Android开发。
如果有精力的话,看看Dalvik虚拟机是怎么回事。
建议买一个iPhone或者iPad,或许你再也不想用Android手机或者平板了。
历史
如果觉得有些无聊,就去挖一挖历史上比较火的可能和Java相关技术,比如:
-
Applet,想想它比起html5+css3+javascript的缺点在哪里。
-
AWT、Swing,想想为什么很少有人用Java写图形界面程序。你觉得Swing的程序看上去舒服吗?中国人和残疾人喜欢用Swing程序吗?
-
JNDI,想想它比起Spring Bean Container的缺点在哪里。
-
JSP,想想它比起MVC结构的缺点在哪里。
-
WSDL/SOAP,把它们和XML-RPC、RESTful Web Service比较一下。
-
XSLT,以及为什么它是图灵完备的。可是它真的比Java本身更好用吗?
-
Log4j、java.util.logging、Apache Commons Logging,各自有什么问题,以及Log4j的作者本人为什么又开发了SLF4j和Logback?
-
Java最早是为什么设计的?
-
Type erasure是怎么回事?为什么ArrayList<int>不行但ArrayList<Integer>就可以?挖一挖历史。
其实Java不算完全面向对象的语言。Java更偏实用性,很多控制流(if语句、while循环、for循环等)来自面向过程的语言;基本数据类型(int, char, double等)也不是对象。但另一些语言,比如SmallTalk,更偏向纯粹的面向对象的设计,包括基本的数据类型都是对象,if/while/for等也用对象和方法来实现。比如:
基本数据类型也是对象,可以接受消息(即方法),比如:
(a + b) sqrt
这里面,a+b其实是向a发送“+”消息,参数是b。sqrt也是一个消息,发给一个数。
if分支是这样做的:
(x < y) ifTrue: [
max := y.
i := j
] ifFalse: [
max := x.
i := k
]
ifTrue:ifFalse: 是一个Boolean对象的一个方法,取两个参数,每个是一个“块”,分别在真和假的情况下执行。
还有while循环是这样做的:
[i < 100] whileTrue: [
sum := sum + i.
i := i + 1
]
whileTrue是“块”的一个方法,每次对块求值,如果是真,就反复执行第一个参数(也是“块”)。
所以,相对其他面向对象的语言,Java并不算很“面向对象”。所以需要补充一些对面向对象语言的了解。
■行业动态
1、最新的 Java SE 平台和 JDK 版本发布计划
前不久发布的 Java 9 除了发布了重大更新外,还公布了一个全新版本的发布计划。该计划基于 JEP 223,用于未来 Java 平台版本的发布。基于 JEP 233 的发布计划的主要目标如下所示:
● 版本号直观,易于理解
● 与当前行业的实际情况相一致
● 能兼容现有的包系统和平台部署机制
● 避免在版本的一种元素中编码两种信息
● 提供一个简单 API,用于版本号的解析、验证和比较(详情:https://www.infoq.com/news/2017/11/new-version-scheme-java)
2、构建用户界面的 JavaScript 库 React 16.1.1 发布
React 16.1.1 已发布,React 是 Facebook 推出的一个为数据提供渲染为 HTML 视图,用来构建用户界面的开源 JavaScript 库。16.1.1 更新内容:
● React 改进关于未定义组件类型的警告。
● React DOM 支持捕获属性的字符串值。
● ...(详情:https://github.com/facebook/react/releases/tag/v16.1.1)
3、HBase 的 SQL 驱动 Apache Phoenix 4.13 发布
Apache Phoenix 4.13 已发布,Apache Phoenix 是 HBase 的 SQL 驱动。Phoenix 4.x 与 HBase 0.98 和 1.3 兼容。更新亮点:
● 修复在连接时创建 SYSTEM.CATALOG 快照的 bug
● 关于行删除处理的大量错误修复
● 统计收集改进
● ....详情:http://phoenix.apache.org/download.html)
由 于很强的跨平台性,java技术吸引了大量的追随者,可以说是世界排名第一的编程语言,在世界的每个角落,都活跃着java技术。虽然说IT技术学习起来 并不困难,可是如果没有明确的方向,没有合理的计划,那么学习起来就非常困难,下面就简单梳理一下java的学习路线。
-
Java语言基础
谈到Java语言基础学习的书籍,大家肯定会推荐Bruce Eckel的《Thinking in Java》。它是一本写的相当深刻的技术书籍,Java语言基础部分基本没有其它任何一本书可以超越它。该书的作者Bruce Eckel在网络上被称为天才的投机者,作者的《Thinking in C++》在1995年曾获SoftwareDevelopment Jolt Award最佳书籍大奖。作者从1986年至今,已经发表了超过150篇计算机技术文章,出版了6本书,并且在全世界做了数百次演讲。他是 《Thinking in Java》、《Thinking in C++》、《C++ Inside & Out》《Using C++》和《Thinking in Patterns》的作者,同时还是《Black Belt C++》文集的编辑。他的书被读者称为“最好的Java参考书……绝对让人震 惊”;“购买Java参考书最明智的选择”;“我见过的最棒的编程指 南”。作者的非凡才华,极其跨越语言的能力,使作者被选为Java发展10年间与Java关系最密切的10个人物之一。
-
2
Java数据结构
市面上关于Java数据结构的书本身就很少很少。大致有APress 的《Java Collections》,Jones 和Bartlett 的《Data Structures in Java》、《Object-oriented Data Structures Using Java》以及Prentice Hall 出版的《Data Structures and Algorithms in Java》 (Dec 19, 2005)还有一本就是《Data Structures And Algorithms With Object-oriented Design Patterns In Java》。
-
3
Java IO Eys
市面上关于IO的书籍也仅仅只有Oreilly出版社的两本,都是Elliotte Rusty Harold的著作。两本书的风格基本一致,推荐阅读是第一版的《Jvava I/O》,讲得比较浅显,内容相对比较集中,实例也很多。第二版今年5月国外才出版,很有幸我在网络上下载了第二版,讲得极其详细――726页的大块头 (我化了两个星期),这次将NIO和IO和在一起,还包括J2ME部分的,不过串口、并口通信部分好像类库支持不够,自己不能实际操作。
-
4
Java数据库
数据库的书籍太多太多了,也是太烂太烂了!这方面的书我基本都研究过,推荐的你就看看Apress的《JDBC Recipes A Problem Solution Approach 》很不错,国外2005年底才出版,(国内好像没有中文版,不过出了中文版也不一定值得看――国内经常将国外的书翻译得一塌糊涂、不堪入目)不过我们真的 很幸运,网络上有电子版的。值得一看。推荐我看的第一本比较满意的――Wiley出版的《Java Database Bible》,讲得很不错!Sun公司自己的关于JDBC API介绍的那一本《JDBC API Tutorial andRefernece》也不错。我第二本JDBC的就是研究的这套API。
-
5
Java 网络编程
网络编程――一个神秘的、充满挑战的方向。不过在谈Java网络编程之前首先感谢Sun公司的开发人员,因为它们天才的设想,充满智慧的架构,使广大java程序员学习java网络编程变得异常简单。
基础是王道,不要只会用框架而不懂其实现!!!!
J2EE主要技术:- web service技术:java API for XML processing(JAXP)
java API for XML Register(JAXR)
java API for XML-based RPC(JAX-RPC)
SOAP with Attachment API for Java(SAAJ) - 组件模型技术:java servlet
javaServer Pages( JSP)
javaServer Faces(JSF)
Enterprise JavaBeans(EJB)
java Message Servicce(JMS)- 管理技术(Management Technologies)
J2EE Deployment Specification
J2EE Management Specification
J2EE Client Provisioning
Java Authorization Contract for Containers- 其他相关技术(Other J2EE Technologies)
JDBC
Java Data Objects (JDO)
CORBA (Java IDL and Java RMI-IIOP)
JavaMail
Transactions作为一名普通J2EE应用程序的开发者来说,我们只需要重点学习其中的一部分技术就可以了,对于其他部分只要做到心中有数,哪天需要用到了知道跑哪里去找到资料就行了!
一般J2EE应用开发人员所必须熟练掌握的。Java Server Page,Java Servlet,Enterprise JavaBean,JDBC,Transactions。还有JAXP等XML相关技术,Java Message Service,Java Mail,JDO等等是最好应该掌握的。其他Management Technologies,Connector Architecture等等主要是给容器提供商中间件提供商参考的,应用开发者不需要怎么关心.
学习Java语言基础
参考资料:《Java编程思想》,JDK文档,内含JDK源代码
对于初学java的人来说,我不推荐使用IDE而直接用文本编辑器,然后用命令行编译运行。利于理解CLASSPATH,PATH这些最基本概念。
几个最重要的命令行工具javac: 编译源文件到class文件
java: 运行class
jar: 打包工具
javadoc: 生成java doc的工具
J2EE基础
Servlet参考资料:<<Core Servlet and JSP 2Edition>>和<<More Servlets and Java Server Pages>>
EJB参考资料:<< Enterprise JavaBeans, 3nd Edition>>和<< Mastering Enterprise Java Beans Third Edition>>
web服务器、应用服务器:Tomcat,Jetty,JBoss,Weblogic,WebSphere(后两个收费)
数据库:PostgreSQL,MySQL,Oracle,MS SQL,DB2(前2个开源)
如果单单只是学习Servlet,推荐使用Tomcat,如果学习EJB的话,推荐使用Jboss,不仅仅是因为它是Open Source的,主要是配置比较简单,使用方便。对于初学者用来做做EJB,JDBC的练习,推荐MySQL,理由简单,用户文档齐全。 PostgreSQL国内使用者远不如MySQL多。
提高参考资料:<<Refactoring: Improving the Design of Existing Code >>,<<Effective Java>>提高代码质量和规范性。结合着学习一些优秀的开源项目的源代码。这些开源项目的代码风格,注释都是值得借鉴的。
实际中也只能是需要什么技术再学习什么技术!
再提高:从软件架构,Framework层次上来学习。可参考面向对象的圣经<<Design Patterns>>, <<Core J2EE Patterns>>。学习设计模式的时候,建议是结合实际的源代码来看,比如看看Junit源代码,你可以看到很多设计模式优雅的实现。
http://blog.csdn.net/wuzhxun/article/details/3945863 推荐java优秀视频1- Java基础:
v512工作室_Java高端培训系列视频: http://www.verycd.com/topics/215898/
重点看Java.SE6开发和Eclipse专辑
2- J2EE(SSH框架):
尚学堂科技Java.系列视频教程:http://www.verycd.com/topics/93279/
重点看SSH框架(Struts+Spring+Hibernate),王勇老师讲的,很不错。
3- J2EE项目(以下视频均含源代码):
(1)我的智囊团J2EE项目实训视频 :
http://blog.xunlei.com/web/category.html?uin=ljtcjd&category_id=1413&keyword=我的智囊团
(2)Java项目开发全程实录(10个项目):http://www.verycd.com/topics/2722577/
* 第一阶段:Java基础,包括java语法,面向对象特征,常见API,集合框架; *第二阶段:java界面编程,包括AWT,事件机 制,SWING,这个部分也可以跳过,用的时候再看都能来及; *第三阶段:java API:输入输出,多线程,网络编程,反射注解等,java的精华 部分;*第四阶段:数据库SQL基础,包括增删改查操作以及多表查询;*第五阶段:JDBC编程:包括JDBC原理,JDBC连接库,JDBC API, 虽然现在Hibernate比JDBC要方便许多,但是JDBC技术仍然在使用,JDBC思想尤为重要;*第六阶段:JDBC深入理解高级特性:包括数据 库连接池,存储过程,触发器,CRM思想;*第七阶段:HTML语言学习,包括HTML标签,表单标签以及CSS,这是Web应用开发的基础;*第八阶 段:JavaScript脚本语言,包括javaScript语法和对象,就这两个方面的内容; *第九阶段:DOM编程,包括DOM原理,常用的DOM 元素以及比较重要的DOM编程思想;*第十阶段:Servlet开发,从此开始踏入java开发的重要一步,包括XML,Tomcat服务器的安装使用操 作,HTTP协议简单理解,Servlet API等,这个是java web开发的基础;*第十一阶段:JSP开发:JSP语法和标签,自定义标 签,EL,JSTL库了解以及MVC三层架构的设计模式理念;*第十二阶段:AJAX开发:AJAX原理,请求响应处理,AJAX开发库; *第十三阶 段:轻量级框架,三大框架之一Struts框架的学习,自此踏入java web开发的精华部分,包括Struts体系架构,各种组件,标签库和扩展性的 学习;*第十四阶段:Hibernate框架学习,三大框架之一,包括检索映射技术,多表查询技术,缓存技术以及性能方面的优化;*第十五阶 段:Spring框架的学习,三大框架之一,包括了IOC,AOP,DataSource,事务,SSH集成以及JPA集成;
也可以看看网上的视频:----j2se------java基础加强 -----jdbc -----j2se实例 ------张孝祥javaweb 视频教程------张孝祥javascript------servlet + jsp -----j2ee实例 ---从网上发现这篇文章,发现和我写的一篇关于《知识体系》的文章互相呼应,就转过来了。
转自:http://tieba.baidu.com/f?kz=692446591
怎么学习Java,这是很多新手经常会问我的问题,现在我简单描述下一个Java初学者到就业要学到的一些东西:
首先要明白Java体系设计到得三个方面:J2SE,J2EE,J2ME(KJAVA)。J2SE,Java 2 Platform Standard Edition,我们经常说到的JDK,就主要指的这个,它是三者的基础,属于桌面级应用开发,这部分如果学得好很容易拓展J2EE和J2ME。 J2ME,The Micro Edition of the Java 2 Platform。主要用于嵌入式Java,如手机,PDA等等。J2EE,Java 2 Platform,Enterprise Edition,就是所谓的企业级Java,适合企业的大型应用开发。
J2SE:
新手最初学习的时候先要从J2SE开始学起,所包含的内容主要分为:面向对象概念的理解、Java基本语法的学习,Java桌面图形界面应用程序的开发,掌握常用的Java API等(关键是要学会怎样查阅)。
重点:Java基本语法(循环结构,数据类型,数组,运算符等)、Swing,awt,事件机制、文件输入输出流处理等
难点:面向对象思想的理解(接口、类等)、线程、socket网络编程等
视频教程推荐:孙鑫的Java基础视频教程、张孝祥的Java基础视频教程,讲的都很细,而且这两位老师在教学方面都有很好的经验。
J2EE:
在学习了J2SE之后,你可以尝试着慢慢过渡到J2EE,当然,学习J2EE海需要很多非JAVA技术的支撑,比如数据库技术,网页编程技术等等,待会我 会详细介绍这两方面的内容。J2EE有三个必学的框架,如果你说你学了J2EE,但又不会这三个框架的话,那会让人笑掉大牙,这三个框架分别是 Struts、Spring和Hibernate,虽然这三个框架应用很广,但不代表这三个框架就代表了J2EE,J2EE还有很多其他的东西,比如 EJB,作为一款重量级(此重量级不是指重量级选手那个意思,此重量级非彼重量级)框架,虽然这个应用慢慢的再被其他框架所取代,但EJB3.0的出现也 给它带回一些生机,作为一个分布式应用的框架,也是大家要去学习和了解的知识。
当然,刚才说到J2EE包含的范围很广,即使我把我所了解的所有技术说出来,也并不能代表J2EE,这是一个很深很广的学问,需要大家以后再工作的时候慢慢去发现了。我所了解的还包括:
JDBC:Java数据库连接对象,基础中的基础,Hibernate也只是对它的封装而已
JNDI: Java 命名与目录接口,J2EE重要规范之一
EJBS: 上面已经提到过了
RMI: 提供远程调用方法的支持,主要用于程序分布式开发
JMS: Java消息服务,中间件技术
JAVA IDL: 提供J2EE平台与CORBA交互能力和互联能力的技术
JTS: 组件事务监视器
JTA: 事务划分的一个技术
JAVAMAIL: Java中的邮件技术
JAF: Java启动框架,没研究过
Log4j,一款日志处理的框架应用
Junit:单元测试的好帮手
freemarker、velocity:两款不错的模板引擎
与Flash的交互Flex:目前很多的SNS应用就是使用到了这个技术
Web services:想知道我们论坛天气预报的效果是怎么做的吗?请关注这个技术
SOA:面向服务架构,未来技术发展的趋势之一
……
不过前面介绍到得这些都不是J2EE的基础,是属于框架应用级别的.要真正把上面说到的知识掌握好,还是的学习J2EE最核心的东西:JDBC、JSP、 servlet和JavaBean,后面三个也是学习SSH的基础(Struts/Spring/Hibernate的简称).鉴于J2EE的内容太过复 杂,建议大家最初只学习: JSP, servlet和JavaBean,等这个基础掌握好再把SSH学习了,再对其他J2EE技术有个大致的了解就可以出去找工作了。当然,找工作的前提除了 把Java学习好,还会有一些其他的技术也是必须要掌握的。-_- 我很简单,Java却要求我学这么多复杂的东西。除了这些技术的东西,在这阶段,大家更多的是会接触到比如设计模式的东西,比如工厂模式、桥梁模式、单例 模式等等,还要学习建模思想(比如UML建模等等)和软件生命周期等等。这些是升华大家编程思想的手段和途径。
数据库技术:
数据库几乎是程序中不可或缺的一部分,在整个软件开发中更是占据了重要作用.数据库在整个软件中扮演的是地基的角色,你要修房子,就要先打好地基,你要做软件,就要先设计好的数据库.目前数据库几乎都是关系型数据库,代表的有:
SQL Server,目前最新的好像是2008,我不是很喜欢追赶时髦,用的还是2005,不过也很不错了,在此之前还有2000.
MySQL,最知名的开源数据库之一,我很喜欢它的小巧耐用,学过SQL SERVER数据库再学它,无师自通,易如反掌.
ORACLE.甲骨文公司的产品,大型数据库,正版的一般公司买不起.只有看看了,不过现在Java开发60%都是会使用到这个数据库,再加上现在甲骨文已经把sun公司收购了,JAVA和ORACLE得关系更加暧昧,各位得多花些时间在这上面了.
除了这些,你还应该了解一些桌面应用软件开发用到的数据库,比如说sqlite。你在制作安装程序的时候可以把这个数据库打包进你的安装程序。
网页编程基础:
网页编程基础要学的内容也比较多,但主要集中在以下这三个技术之上,大家每天看的各种样式的网页都是它们呈现的:
HTML:超文本标记语言
CSS:层叠样式表
Javascript:浏览器客户端脚本语言
现在更是流行各种JavaScript库,比如:Jquery、ExtJs等,你要是会其中的某一个库的使用,找工作so easy。
J2ME:
如果你在学习了以上技术还不过瘾,可以再学习手机程序的开发,就我个人看来,开发手机程序技术其实蛮简单的,难点在于优化,比如怎么让你写的程序尽量的节 约手机资源,“代码诚可贵,手机价更高“,所以不得不比PC机多考虑很多成本和实用性问题。J2ME的学习的话,切忌不要单纯的再模拟器上测试,一定要找 真机测试,真机和模拟器的效果之间差别是很大的。更多手机开发技术,有兴趣的朋友可以和我一起探讨。
开发工具:
开发工具的选择主要还是看大家的习惯,我个人比较喜欢使用eclispe,功能很强大,也很好拓展其他的功能。当让初学你也可以选择JCreator,或 者最好就直接用记事本。等你熟悉了Java代码之后,就可以使用JBuilder、eclispe或者netbeans这一类的工具了。
先说到这里先,以后大家一起完善这个帖子。尽量再给大家整理一些学习的资源在这里。也欢迎大家一起整理我文章中提到的一些技术资源和开发工具。最后,再和大家分享一句话:生命欣欣向荣,唯奋斗不息。也和大家分享一幅Java学习路线图:在开始之前有必要再讨论一下J2ME,J2SE,J2EE这些概念。J2ME,The Micro Edition of the Java 2 Platform。主要用于嵌入式Java,如手机,PDA等等。J2SE,Java 2 Platform,Standard Edition,我们通常所说的JDK(Java Development Kit)包含在此,是J2EE的基础。J2EE,Java 2 Platform,Enterprise Edition,就是所谓的企业级Java。这些只是从API级别上的划分,实际上Sun给J2EE的定义是:开发基于组件的多层的企业级应用的规范。也 就是为各种不同的技术定义一个Java的规范,使这些不同的技术结合起来,在Java平台上构建强壮的企业级应用。从这一点来看,J2EE这个概念应该是 涵盖J2ME,J2SE的。比如一个典型的J2EE应用,网上商店,它支持web方式下订单,也支持手机下订单。显然必须用到J2SE,J2ME。所以也 就不存在所谓的从J2SE转向J2EE的问题了,只是后者包含的范围更广而已。
来看看Sun给出的J2EE 相关技术主要分为几大块。
1. Web Service技术
- Java API for XML Processing (JAXP)
- Java API for XML Registries (JAXR)
- Java API for XML-based RPC (JAX-RPC)
- SOAP with Attachments API for Java (SAAJ)
2. 组件模型技术(Component Model Technologies)
- Java Servlet
- JavaServer Pages
- JavaServer Faces
- Enterprise JavaBeans
- Java Message Service
- J2EE Connector Architecture
3. 管理技术(Management Technologies)
- J2EE Deployment Specification
- J2EE Management Specification
- J2EE Client Provisioning
- Java Authorization Contract for Containers
4. 其他相关技术(Other J2EE Technologies)
- JDBC
- Java Data Objects (JDO)
- CORBA (Java IDL and Java RMI-IIOP)
- JavaMail
- Transactions
如此之多的技术难免使初学者无所适从,望而却步。即使是一位经验丰富的J2EE开发者,又有几个人敢说J2EE相关的技术我都熟练掌握了。不过作为 一名普通J2EE应用程序的开发者来说,我们只需要重点学习其中的一部分技术就可以了,对于其他部分只要做到心中有数,哪天需要用到了知道跑哪里去找到资 料就行了。以我个人的观点,下面这些技术是一般J2EE应用开发人员所必须熟练掌握的。Java Server Page,Java Servlet,Enterprise JavaBean,JDBC,Transactions。还有JAXP等XML相关技术,Java Message Service,Java Mail,JDO等等是最好应该掌握的。其他Management Technologies,Connector Architecture等等主要是给容器提供商中间件提供商参考的,应用开发者不需要怎么关心,等用到了再去学习也不迟。
语言学习篇
首先是J2SE基础。学习一门新技术,无外乎阅读和实践了。而一本好的参考书对于初学者来说显得格外重要。现在市面上的 Java书籍可以说是铺天盖地,质量也是良莠不齐,令初学者无所适从。所以还是先推荐几本书籍吧。目前对于Java基础知识,大家一般都比较推荐两本 书,<>和<< Core Java? 2, Volume I: Fundamentals >>。第一本书不必多说了,Bruce Eckel的大作,Jolt获奖书籍。内容比较全面,基本涵盖了java语言的方方面面。这本书提供了相当丰富的例子,非常有利于对学习内容的了解。另外 书中第一部分对于OO基本书籍的介绍,我觉得对于刚接触OO的人来说帮助会很大。而且此书是Open Source的,可以从作者网上下载http://www.mindview.net/Books/TIJ/而 对于习惯于读中文版的学习者来说,侯捷翻译的中文版是不错的选择。要说这本说的缺点可能就是对于初学者来说厚了一点,这也是一些人并不推荐此书作为初学者 学习用书的原因吧。后面一本<>,目前已经是第七版了,单从它出版的次数来看也可以看出此书受欢迎的程度,这本书特点也是讲述比较全面系统, 基本上一路啃下来的话Java语言基础应该算过关了。缺点也是太厚了,有点像参考手册,前面部分花了不少篇幅讲Swing和Applet,可能对初学者不 是很有用。还有一些像<< Java in a nutshell>>也是比较不错的基础书籍。
学习了基本的语言基础,别忘了最重要也是最有用的资料还是JDK文档。从你学习java的第一天开始JDK文档应该是常备手头了。如果你碰到问题首 先想到的是到论坛上去提问而不是查阅Jdk文档,那先别继续往下学习了,学会查JDK文档先。不夸张的说在我们的初学者论坛中60%的问题是光查一下 JDK文档就能解决问题的。最新JDK Documentation下载地址http://java.sun.com/j2se/1.4.2/download.html(目前最新版是J2SE5 http://java.sun.com/j2se/1.5.0/download.jsp) 不能光说不练,同一下载页面把JDK给下载回来。安装完后有一点我想提一下,安装路径下有一个src.zip(有些jdk版本是src.jar),好东西 啊---JDK源代码,老是有人在论坛上问哪里有JDK源代码下载,你说东西就放在你家里还到处找。有了这个有些问题就需要在论坛上跟人家争来争去了,翻 开源代码瞧一下什么疑问都没有了。几个最重要的命令行工具是
javac: 编译源文件到class文件
java: 运行class
jar: 打包工具。
javadoc: 生成java doc的工具。
对于初学java的人来说,我不推荐使用IDE而直接用文本编辑器,然后用命令行编译运行。这样有利于理解CLASSPATH,PATH这些最基本 概念。CLASSPATH是初学者比较容易感觉迷惑的地方。现在的IDE太聪明了,给个名字就给你自动生成java source code,自动编译。可能你运行完了你的第一个Hello World程序,还不知道java和javac是用来做什么的。至于实际的项目开发,一款合适的IDE还是十分重要的,我们稍后再对java开发工具做一 些介绍。
J2EE基础和Java语言进阶
学习完语言基础,就可以比较自然地转入J2EE实际技术的学习了。J2EE实在是比较庞杂,而EJB,Servlet,这些核心技术是作为每一个 J2EE开发人员所需要掌握的。关于servlet,我比较推荐<>和<>,第一本是Sun推荐的Servlet教材。第二本是 当年Amazon最畅销Java书籍,五星级书籍。这本书机械工业出版社有中文版叫<>,感觉翻译得还可以,第二版好像还没有看到有中文版。 两本书都全面系统地介绍了JSP和Sevlet知识,从web服务器配置,JSP,Servlet基本编程,标记库(Tag Lib),过滤器,事件框架都有很好地描述。提供地例子也比较实用。对于EJB学习,比较著名有两本书,<< Enterprise JavaBeans, 3nd Edition>>和<< Mastering Enterprise Java Beans Third Edition>>,两位作者Richard Monson,Ed Roman都是属于业界重量级人物。而Richard Monson本身就是EJB规范专家组成员。对我来说,两本书难分优劣,第二本书有个好处就是可以免费下载http://www.theserverside.com/books/wiley/masteringEJB/index.tss。
还是那句话,不能光说不练,不过J2EE的练习做起来有一点麻烦,应用服务器是不可少的,最好还得准备个轻量级的数据库。下面简单介绍一下这些工具。
web服务器(Servlet Container)方面有。
Tomcat: http://jakarta.apache.org/tomcat/
Jetty: http://jetty.mortbay.org/jetty/
应用服务器常用的有,
Jboss: http://www.jboss.org/products/index
Weblogic: http://www.bea.com/framework.jsp?CNT=index.htm&FP=/content/products/server
WebSphere: http://www-128.ibm.com/developerworks/downloads/ws/was/?S_TACT=105AGX28&S_CMP=DLMAIN。
Tomcat,Jetty,Jboss都是Open Source。Weblogic和WebSphere是J2EE服务器中的老大级人物,价格也不菲。不过对于开发者有免费的试用版下载。
如果单单只是学习Servlet,推荐使用Tomcat,它是Sun官方指定的Servlet,JSP规范的参考实现。对初学者最重要的是它使用比 较简单,自带文档比较齐全,使用者众多,有什么问题容易在论坛上面得到帮助。如果学习EJB的话,推荐使用Jboss,不仅仅是因为它是Open Source的,主要是配置比较简单,使用方便。比如说对于连接数据库,对于常用的MySQL,Oracle,MS SQL等等都提供了Sample Config文件,直接拿过来做些小改动扔到Deploy目录下就可以用DataSource了,部署J2EE应用也简单,把整个.ear或者.war扔 到deploy下就可以了。唯一不方便的地方是从Jboss3.0开始,它的文档开始收费了。但是对于一些基本的配置,在网上还是非常容易找到的,毕竟它 太流行了。至于Weblogic,也比较容易使用,不过比起Jboss来个头大了很多,通过强大的管理界面使得一些常用的配置工作变得十分简单。和 Jboss比起来它的文档就太多了,简直是有点罗里八嗦,比如要部署一个.ear文件,一般我们也就是直接扔到domain下的applications 目录下就会自动deploy了,但是要看它的文档可是长篇大论,容易吓着初学者,以为这又是什么高深的学问。至于WebSphere,个人不推荐初学者使 用,相比前俩个Server比较难使,而且狂吃内存。不过在企业级市场这个家伙表现不俗,毕竟是出生于IBM这样的豪门。
数据库方面,目前常见的主要有PostgreSQL,MySQL,Oracle,MS SQL,DB2等等。前面两个是开源数据库,后面几个基本上垄断着大部分的数据库市场。对于初学者用来做做EJB,JDBC的练习,我推荐MySQL,理 由还是很简单,开源软件不要钱,个头小使用方面,用户众多文档齐全。下载地址http://www.mysql.com/products/mysql/。PostgreSQL也可以考虑,不过国内使用者远不如MySQL多,所以要在论坛上问起问题来就少方便一些了,下载地址http://www.pervasive-postgres.com/downloads/。至于后面那些比较重量级的数据库,为了做做练习而言就不用考虑了, 咱也花不起这个钱啊。
学习完J2EE的这些具体技术,这个时候进行基本的J2EE开发应该是不成问题了。此时应该考虑提高自己的代码质量了。这里我强烈推荐Martin Fowler的<>,这本书不是一本非常实际的书,作者完全是手把手地教你如何提高代码质量,从具体地代码中告诉你什么是代码的Bad Smell,如何去掉这些Bad Smell。不少书评是这么说的,这本书对于初级,中级的读者帮助是立杆见影的。至少就我接触到的几个学习编程不久的程序员,编码质量在短期内都有很大提 高。当然重构(Refactoring)这一概念并不只针对Java语言的,它对所有OO语言都是适用的。重构的概念是如此深入人心,以至于今天几乎所有 流行的IDE工具都有对重构的支持。这里我还想再推荐一本<>。从C++过来的程序员都知道<>在C++领域的地位,至今还流传 着这样的趣话,C++程序员分为两种,一种是读过<>的,另一种是没有读过C++的。虽然这本<>在Java领域的影响也许没有 那么大,但对于Java程序员绝对有相当的指导价值。作者是Sun公司的Joshua Bloch,java Collection framework的设计者。作者站在JDK设计者的角度向你介绍他的Best Practice,应该这样做而不应该那样做,对于JDK中某些API设计的缺陷他也毫不袒护的指出。Java语言之父James Gosling为此书写的前言是这么说的“I sure wish I had had this book ten years ago。 Some might think that I don't need any Java books, but I need this one”。这本书会让你觉得原来你对Java还是有很多东西不了解的。举个例子来说,对象的equals方法,我们认为它很简单,也许你每天都在为你新写 的Class重载这个方法,但是你在重载的时候注意过“自反”,“对称”,“传递”这些必须要考虑的因素,你是否同时还小心谨慎的重载了hashcode 这个方法?如果没有,建议你要读一下这本书。读完这本书,你会觉得离Java的距离更近了。上面两本书都出过中文版,后面一本<>还有两个版 本的中文版,第一次翻译的比较差一点,后来机械工业出版社又委托潘爱民先生重新翻译了一遍。同一本书在同一个出版社连续被翻译了两次也说明国内出版界对这 本书还是比较重视的。
这个阶段,在看书的同时,可以结合着学习一些优秀的开源项目的源代码。这些开源项目的代码风格,注释都是值得借鉴的。实在太懒也别忘了手头上还有个 Jdk的源代码。其实也不用刻意去找源代码,在实际的J2EE项目开发中,基本上都会用到一些优秀的开源项目。Framework可能会用到 Spring,Struts,Log机制基本上都会JarkartaCommons Log或者Log4j,单元测试会大多会用Junit,结合项目阅读一下其中的一些源代码,既可以提高自己又对项目会有所帮助,说不定因此而得到PM的赏 识呢。一举两得,何乐而不为呢。呵呵,有点扯远了。过了初学者阶段,该学会如何找到适合自己的Java书籍了。历经数十载,今天的Java技术已经变的如 此之庞杂,我相信即使穷净一个人毕生之精力也不可能把Java所有的相关技术都学通,何况新技术还在层出不穷地推出,3年之前谁会知道Struts会成为 Web框架事实上的工业标准。2年之前谁会知道Hibernate会在今天独领风骚。既然已经不能指望一次性把java技术的方方面面都学个通,在实际中 也只能是需要什么技术再学习什么技术了。而能否选择一本好的参考书籍带来的就是事半功倍和事倍工半的效果。所以我觉得花点时间放在选择书籍上面还是很值得 的,否则你在后面只会花更多的时间。下面我谈谈自己选择书籍的一些经验,不一定正确。首先看作者,像上面提到的那些书的作者,都是业界鼎鼎大名的,选择他 们的书一般错不了。大家看的书多了,自己胸中自然也会有一个list,哪些作者是信得过的。二看出版社,计算机书籍方 面,Oreilly,Addison-Wesley都是公认比较好的出版社。对于目前比较流行的Java技术,Oreilly的<>系列是不 错的选择。另外我还会去看看Amazon网站(http://www.amazon.com/)的书评,一般小于3星级的书我都不会考虑。还有一个好去处theserverside,http://www.theserverside.com/的 书评,这里的书评比较有趣,往往都有很激烈的争论,里面经常会看到一些名人在发言。我要向所有Java学习者推荐,如果我的收藏夹里面只能存放两个网站, 我会选择java.sun和theserverside。在这里你可以了解最新的Java动态,可以学习第一手的Java资料,可以看到Java高手们 (里面不乏业界大腕)激烈辩论。
到此阶段,Java Developer的基本功底应该算是打好了吧,往后就是不断学习喽。结束这一段之前,最后再介绍一本书Oreilly的<>,因为我觉得多线程编程属于Java基本功,每一个想学好Java的人都应该好好掌握。
提高篇
在这个阶段应该从软件架构,Framework层次上来学习了。作为面向对象的圣经<>, 这本书是不得不推荐的。不用再多说了,这本在面向对象领域地位完全是属于教父级别的。不管你学习的是什么OO语言,不管你现在是用.Net还是J2EE开 发,这本书都是你进阶之路上的必读之书。而<>则专门针对于J2EE来讨论设计模式,书中Sun Java Center的资深设计师描述了J2EE关键技术的模式。最佳实践,设计策略和经过验证的解决方案。对于每一个希望成为J2EE 架构师或者设计师,这本书值得一读。学习设计模式的时候,建议是结合实际的源代码来看,比如看看Junit源代码,你可以看到很多设计模式优雅的实现,作 者之一Erich Gamma本身就是<>的作者。至于J2EE的设计模式,Sun还开辟了专门的空间http://java.sun.com/blueprints/patterns/,里面有对常用模式的讨论又提供了详细的源代码样例。正如Grady Booch所说,模式对于普遍问题提供了通用的解决方案,利用模式就等于拥有一个强大的专家队伍。如果你还没有学习,现在就开始吧。此外对于面向对象方法论,极限编程的思想也应该有所了解http://www.extremeprogramming.org/。 对于J2EE项目的具体实施,Rod Johnson的<>也很有价值,该书以作者丰富的实战经验向我们展示如何用尽可能简单的解决方案构建J2EE 应用,书中作者第一次提出这样的观点,很多时候,J2EE应用完全没有必要用到EJB,对于言必称EJB的广大J2EE开发者来说,怎么说也有点惊世咳俗 的味道。当然,作为Servlet和JDO两个专家组的成员,这可不是作者信口胡驺的。今天风靡Java世界的Spring框架最初便是源于此书,而 IOC,AOP等概念更是被时下的java开发者挂在嘴边。最后,作为对Java的深入学习,Java技术的各个Specification也有必要一 读。
在开始之前有必要再讨论一下J2ME,J2SE,J2EE这些概念。J2ME,The Micro Edition of the Java 2 Platform。主要用于嵌入式Java,如手机,PDA等等。J2SE,Java 2 Platform,Standard Edition,我们通常所说的JDK(Java Development Kit)包含在此,是J2EE的基础。J2EE,Java 2 Platform,Enterprise Edition,就是所谓的企业级Java。这些只是从API级别上的划分,实际上Sun给J2EE的定义是:开发基于组件的多层的企业级应用的规范。也 就是为各种不同的技术定义一个Java的规范,使这些不同的技术结合起来,在Java平台上构建强壮的企业级应用。从这一点来看,J2EE这个概念应该是 涵盖J2ME,J2SE的。比如一个典型的J2EE应用,网上商店,它支持web方式下订单,也支持手机下订单。显然必须用到J2SE,J2ME。所以也 就不存在所谓的从J2SE转向J2EE的问题了,只是后者包含的范围更广而已。
来看看Sun给出的J2EE 相关技术主要分为几大块。
1. Web Service技术
- Java API for XML Processing (JAXP)
- Java API for XML Registries (JAXR)
- Java API for XML-based RPC (JAX-RPC)
- SOAP with Attachments API for Java (SAAJ)
2. 组件模型技术(Component Model Technologies)
- Java Servlet
- JavaServer Pages
- JavaServer Faces
- Enterprise JavaBeans
- Java Message Service
- J2EE Connector Architecture
3. 管理技术(Management Technologies)
- J2EE Deployment Specification
- J2EE Management Specification
- J2EE Client Provisioning
- Java Authorization Contract for Containers
4. 其他相关技术(Other J2EE Technologies)
- JDBC
- Java Data Objects (JDO)
- CORBA (Java IDL and Java RMI-IIOP)
- JavaMail
- Transactions
如此之多的技术难免使初学者无所适从,望而却步。即使是一位经验丰富的J2EE开发者,又有几个人敢说J2EE相关的技术我都熟练掌握了。不过作为 一名普通J2EE应用程序的开发者来说,我们只需要重点学习其中的一部分技术就可以了,对于其他部分只要做到心中有数,哪天需要用到了知道跑哪里去找到资 料就行了。以我个人的观点,下面这些技术是一般J2EE应用开发人员所必须熟练掌握的。Java Server Page,Java Servlet,Enterprise JavaBean,JDBC,Transactions。还有JAXP等XML相关技术,Java Message Service,Java Mail,JDO等等是最好应该掌握的。其他Management Technologies,Connector Architecture等等主要是给容器提供商中间件提供商参考的,应用开发者不需要怎么关心,等用到了再去学习也不迟。
语言学习篇
首先是J2SE基础。学习一门新技术,无外乎阅读和实践了。而一本好的参考书对于初学者来说显得格外重要。现在市面上的 Java书籍可以说是铺天盖地,质量也是良莠不齐,令初学者无所适从。所以还是先推荐几本书籍吧。目前对于Java基础知识,大家一般都比较推荐两本 书,<>和<< Core Java? 2, Volume I: Fundamentals >>。第一本书不必多说了,Bruce Eckel的大作,Jolt获奖书籍。内容比较全面,基本涵盖了java语言的方方面面。这本书提供了相当丰富的例子,非常有利于对学习内容的了解。另外 书中第一部分对于OO基本书籍的介绍,我觉得对于刚接触OO的人来说帮助会很大。而且此书是Open Source的,可以从作者网上下载http://www.mindview.net/Books/TIJ/而 对于习惯于读中文版的学习者来说,侯捷翻译的中文版是不错的选择。要说这本说的缺点可能就是对于初学者来说厚了一点,这也是一些人并不推荐此书作为初学者 学习用书的原因吧。后面一本<>,目前已经是第七版了,单从它出版的次数来看也可以看出此书受欢迎的程度,这本书特点也是讲述比较全面系统, 基本上一路啃下来的话Java语言基础应该算过关了。缺点也是太厚了,有点像参考手册,前面部分花了不少篇幅讲Swing和Applet,可能对初学者不 是很有用。还有一些像<< Java in a nutshell>>也是比较不错的基础书籍。
学习了基本的语言基础,别忘了最重要也是最有用的资料还是JDK文档。从你学习java的第一天开始JDK文档应该是常备手头了。如果你碰到问题首 先想到的是到论坛上去提问而不是查阅Jdk文档,那先别继续往下学习了,学会查JDK文档先。不夸张的说在我们的初学者论坛中60%的问题是光查一下 JDK文档就能解决问题的。最新JDK Documentation下载地址http://java.sun.com/j2se/1.4.2/download.html(目前最新版是J2SE5 http://java.sun.com/j2se/1.5.0/download.jsp) 不能光说不练,同一下载页面把JDK给下载回来。安装完后有一点我想提一下,安装路径下有一个src.zip(有些jdk版本是src.jar),好东西 啊---JDK源代码,老是有人在论坛上问哪里有JDK源代码下载,你说东西就放在你家里还到处找。有了这个有些问题就需要在论坛上跟人家争来争去了,翻 开源代码瞧一下什么疑问都没有了。几个最重要的命令行工具是
javac: 编译源文件到class文件
java: 运行class
jar: 打包工具。
javadoc: 生成java doc的工具。
对于初学java的人来说,我不推荐使用IDE而直接用文本编辑器,然后用命令行编译运行。这样有利于理解CLASSPATH,PATH这些最基本 概念。CLASSPATH是初学者比较容易感觉迷惑的地方。现在的IDE太聪明了,给个名字就给你自动生成java source code,自动编译。可能你运行完了你的第一个Hello World程序,还不知道java和javac是用来做什么的。至于实际的项目开发,一款合适的IDE还是十分重要的,我们稍后再对java开发工具做一 些介绍。
J2EE基础和Java语言进阶
学习完语言基础,就可以比较自然地转入J2EE实际技术的学习了。J2EE实在是比较庞杂,而EJB,Servlet,这些核心技术是作为每一个 J2EE开发人员所需要掌握的。关于servlet,我比较推荐<>和<>,第一本是Sun推荐的Servlet教材。第二本是 当年Amazon最畅销Java书籍,五星级书籍。这本书机械工业出版社有中文版叫<>,感觉翻译得还可以,第二版好像还没有看到有中文版。 两本书都全面系统地介绍了JSP和Sevlet知识,从web服务器配置,JSP,Servlet基本编程,标记库(Tag Lib),过滤器,事件框架都有很好地描述。提供地例子也比较实用。对于EJB学习,比较著名有两本书,<< Enterprise JavaBeans, 3nd Edition>>和<< Mastering Enterprise Java Beans Third Edition>>,两位作者Richard Monson,Ed Roman都是属于业界重量级人物。而Richard Monson本身就是EJB规范专家组成员。对我来说,两本书难分优劣,第二本书有个好处就是可以免费下载http://www.theserverside.com/books/wiley/masteringEJB/index.tss。
还是那句话,不能光说不练,不过J2EE的练习做起来有一点麻烦,应用服务器是不可少的,最好还得准备个轻量级的数据库。下面简单介绍一下这些工具。
web服务器(Servlet Container)方面有。
Tomcat: http://jakarta.apache.org/tomcat/
Jetty: http://jetty.mortbay.org/jetty/
应用服务器常用的有,
Jboss: http://www.jboss.org/products/index
Weblogic: http://www.bea.com/framework.jsp?CNT=index.htm&FP=/content/products/server
WebSphere: http://www-128.ibm.com/developerworks/downloads/ws/was/?S_TACT=105AGX28&S_CMP=DLMAIN。
Tomcat,Jetty,Jboss都是Open Source。Weblogic和WebSphere是J2EE服务器中的老大级人物,价格也不菲。不过对于开发者有免费的试用版下载。
如果单单只是学习Servlet,推荐使用Tomcat,它是Sun官方指定的Servlet,JSP规范的参考实现。对初学者最重要的是它使用比 较简单,自带文档比较齐全,使用者众多,有什么问题容易在论坛上面得到帮助。如果学习EJB的话,推荐使用Jboss,不仅仅是因为它是Open Source的,主要是配置比较简单,使用方便。比如说对于连接数据库,对于常用的MySQL,Oracle,MS SQL等等都提供了Sample Config文件,直接拿过来做些小改动扔到Deploy目录下就可以用DataSource了,部署J2EE应用也简单,把整个.ear或者.war扔 到deploy下就可以了。唯一不方便的地方是从Jboss3.0开始,它的文档开始收费了。但是对于一些基本的配置,在网上还是非常容易找到的,毕竟它 太流行了。至于Weblogic,也比较容易使用,不过比起Jboss来个头大了很多,通过强大的管理界面使得一些常用的配置工作变得十分简单。和 Jboss比起来它的文档就太多了,简直是有点罗里八嗦,比如要部署一个.ear文件,一般我们也就是直接扔到domain下的applications 目录下就会自动deploy了,但是要看它的文档可是长篇大论,容易吓着初学者,以为这又是什么高深的学问。至于WebSphere,个人不推荐初学者使 用,相比前俩个Server比较难使,而且狂吃内存。不过在企业级市场这个家伙表现不俗,毕竟是出生于IBM这样的豪门。
数据库方面,目前常见的主要有PostgreSQL,MySQL,Oracle,MS SQL,DB2等等。前面两个是开源数据库,后面几个基本上垄断着大部分的数据库市场。对于初学者用来做做EJB,JDBC的练习,我推荐MySQL,理 由还是很简单,开源软件不要钱,个头小使用方面,用户众多文档齐全。下载地址http://www.mysql.com/products/mysql/。PostgreSQL也可以考虑,不过国内使用者远不如MySQL多,所以要在论坛上问起问题来就少方便一些了,下载地址http://www.pervasive-postgres.com/downloads/。至于后面那些比较重量级的数据库,为了做做练习而言就不用考虑了, 咱也花不起这个钱啊。
学习完J2EE的这些具体技术,这个时候进行基本的J2EE开发应该是不成问题了。此时应该考虑提高自己的代码质量了。这里我强烈推荐Martin Fowler的<>,这本书不是一本非常实际的书,作者完全是手把手地教你如何提高代码质量,从具体地代码中告诉你什么是代码的Bad Smell,如何去掉这些Bad Smell。不少书评是这么说的,这本书对于初级,中级的读者帮助是立杆见影的。至少就我接触到的几个学习编程不久的程序员,编码质量在短期内都有很大提 高。当然重构(Refactoring)这一概念并不只针对Java语言的,它对所有OO语言都是适用的。重构的概念是如此深入人心,以至于今天几乎所有 流行的IDE工具都有对重构的支持。这里我还想再推荐一本<>。从C++过来的程序员都知道<>在C++领域的地位,至今还流传 着这样的趣话,C++程序员分为两种,一种是读过<>的,另一种是没有读过C++的。虽然这本<>在Java领域的影响也许没有 那么大,但对于Java程序员绝对有相当的指导价值。作者是Sun公司的Joshua Bloch,java Collection framework的设计者。作者站在JDK设计者的角度向你介绍他的Best Practice,应该这样做而不应该那样做,对于JDK中某些API设计的缺陷他也毫不袒护的指出。Java语言之父James Gosling为此书写的前言是这么说的“I sure wish I had had this book ten years ago。 Some might think that I don't need any Java books, but I need this one”。这本书会让你觉得原来你对Java还是有很多东西不了解的。举个例子来说,对象的equals方法,我们认为它很简单,也许你每天都在为你新写 的Class重载这个方法,但是你在重载的时候注意过“自反”,“对称”,“传递”这些必须要考虑的因素,你是否同时还小心谨慎的重载了hashcode 这个方法?如果没有,建议你要读一下这本书。读完这本书,你会觉得离Java的距离更近了。上面两本书都出过中文版,后面一本<>还有两个版 本的中文版,第一次翻译的比较差一点,后来机械工业出版社又委托潘爱民先生重新翻译了一遍。同一本书在同一个出版社连续被翻译了两次也说明国内出版界对这 本书还是比较重视的。
这个阶段,在看书的同时,可以结合着学习一些优秀的开源项目的源代码。这些开源项目的代码风格,注释都是值得借鉴的。实在太懒也别忘了手头上还有个 Jdk的源代码。其实也不用刻意去找源代码,在实际的J2EE项目开发中,基本上都会用到一些优秀的开源项目。Framework可能会用到 Spring,Struts,Log机制基本上都会JarkartaCommons Log或者Log4j,单元测试会大多会用Junit,结合项目阅读一下其中的一些源代码,既可以提高自己又对项目会有所帮助,说不定因此而得到PM的赏 识呢。一举两得,何乐而不为呢。呵呵,有点扯远了。过了初学者阶段,该学会如何找到适合自己的Java书籍了。历经数十载,今天的Java技术已经变的如 此之庞杂,我相信即使穷净一个人毕生之精力也不可能把Java所有的相关技术都学通,何况新技术还在层出不穷地推出,3年之前谁会知道Struts会成为 Web框架事实上的工业标准。2年之前谁会知道Hibernate会在今天独领风骚。既然已经不能指望一次性把java技术的方方面面都学个通,在实际中 也只能是需要什么技术再学习什么技术了。而能否选择一本好的参考书籍带来的就是事半功倍和事倍工半的效果。所以我觉得花点时间放在选择书籍上面还是很值得 的,否则你在后面只会花更多的时间。下面我谈谈自己选择书籍的一些经验,不一定正确。首先看作者,像上面提到的那些书的作者,都是业界鼎鼎大名的,选择他 们的书一般错不了。大家看的书多了,自己胸中自然也会有一个list,哪些作者是信得过的。二看出版社,计算机书籍方 面,Oreilly,Addison-Wesley都是公认比较好的出版社。对于目前比较流行的Java技术,Oreilly的<>系列是不 错的选择。另外我还会去看看Amazon网站(http://www.amazon.com/)的书评,一般小于3星级的书我都不会考虑。还有一个好去处theserverside,http://www.theserverside.com/的 书评,这里的书评比较有趣,往往都有很激烈的争论,里面经常会看到一些名人在发言。我要向所有Java学习者推荐,如果我的收藏夹里面只能存放两个网站, 我会选择java.sun和theserverside。在这里你可以了解最新的Java动态,可以学习第一手的Java资料,可以看到Java高手们 (里面不乏业界大腕)激烈辩论。
到此阶段,Java Developer的基本功底应该算是打好了吧,往后就是不断学习喽。结束这一段之前,最后再介绍一本书Oreilly的<>,因为我觉得多线程编程属于Java基本功,每一个想学好Java的人都应该好好掌握。
提高篇
在这个阶段应该从软件架构,Framework层次上来学习了。作为面向对象的圣经<>, 这本书是不得不推荐的。不用再多说了,这本在面向对象领域地位完全是属于教父级别的。不管你学习的是什么OO语言,不管你现在是用.Net还是J2EE开 发,这本书都是你进阶之路上的必读之书。而<>则专门针对于J2EE来讨论设计模式,书中Sun Java Center的资深设计师描述了J2EE关键技术的模式。最佳实践,设计策略和经过验证的解决方案。对于每一个希望成为J2EE 架构师或者设计师,这本书值得一读。学习设计模式的时候,建议是结合实际的源代码来看,比如看看Junit源代码,你可以看到很多设计模式优雅的实现,作 者之一Erich Gamma本身就是<>的作者。至于J2EE的设计模式,Sun还开辟了专门的空间http://java.sun.com/blueprints/patterns/,里面有对常用模式的讨论又提供了详细的源代码样例。正如Grady Booch所说,模式对于普遍问题提供了通用的解决方案,利用模式就等于拥有一个强大的专家队伍。如果你还没有学习,现在就开始吧。此外对于面向对象方法论,极限编程的思想也应该有所了解http://www.extremeprogramming.org/。 对于J2EE项目的具体实施,Rod Johnson的<>也很有价值,该书以作者丰富的实战经验向我们展示如何用尽可能简单的解决方案构建J2EE 应用,书中作者第一次提出这样的观点,很多时候,J2EE应用完全没有必要用到EJB,对于言必称EJB的广大J2EE开发者来说,怎么说也有点惊世咳俗 的味道。当然,作为Servlet和JDO两个专家组的成员,这可不是作者信口胡驺的。今天风靡Java世界的Spring框架最初便是源于此书,而 IOC,AOP等概念更是被时下的java开发者挂在嘴边。最后,作为对Java的深入学习,Java技术的各个Specification也有必要一 读。
- web service技术:java API for XML processing(JAXP)