Java学习路线 
先学习j2se 
要学习j2ee就要先学习j2se,刚开始学习j2se先建议不要使用IDE,然后渐渐的过渡到使用IDE开发,毕竟用它方便嘛。学习j2se推荐两本书,《java2核心技术一二卷》,《java编程思想》,《java模式》。其中《java编程思想》要研读,精读。这一段时间是基本功学习,时间会很长,也可能很短,这要看学习者自身水平而定。 

不要被IDE纠缠  
在学习java和j2ee过程中,你会遇到五花八门的IDE,不要被他们迷惑,学JAVA的时候,要学语言本身的东西,不要太在意IDE的附加功能,JAVA编程在不同IDE之间的转换是很容易的,过于的在意IDE的功能反而容易耽误对语言本身的理解。目前流行的IDE有jbuilder,eclipse和eclipse的加强版WSAD。用好其中一个就可以了,推荐从eclipse入手j2ee。因为Jbuilder更适合于写j2se程序。 

选择和学习服务器使用配置 
当你有了j2se和IDE的经验时,可以开始j2ee的学习了,web服务器:tomcat,勿庸置疑,tomcat为学习web服务首选。而应用服务器目前主要有三个:jboss、weblogic、websphere。有很多项目开始采用jboss,并且有大量的公司开始做websphere或weblogic向jboss应用服务器的移植(节省成本),这里要说的是,学习tomcat和jboss我认为是首选,也是最容易上手的。学习服务器使用配置最好去询问有经验的人(有条件的话),因为他们或许一句话就能解决问题,你自己上网摸索可能要一两天(我就干过这种傻事),我们应该把主要时间放在学习原理和理论上,一项特定技术的使用永远代替不了一个人的知识和学问。 

学习web知识
如果你是在做电子商务网站等时,你可能要充当几个角色,这是你还要学习: 
html,可能要用到dreamwave等IDE。
Javascript,学会简单的数据校验,数据联动显示等等

J2eeAPI学习
学习j2eeAPI和学习服务器应该是一个迭代的过程。
先学习jsp和servlet编程,这方面的书很多,我建立看oreilly公司的两本《jsp设计》和《java servlet编程》,oreilly出的书总是那本优秀,不得不佩服。
学习jdbc数据库编程,j2ee项目大多都是MIS系统,访问数据库是核心。这本应属于j2se学习中,这里拿出来强调一下。 W ,9cn M?2 
学习jndi api,它和学习ejb可以结合起来。
学习ejb api,推荐书《精通ejb》
经过上面的这些的学习,大概可以对付一般的应用了。  
有人说跟着sun公司的《j2ee tutorial》一路学下来,当然也可以。

学习ejb设计模式和看代码(最重要)
设计模式是练内功,其重要性可以这么说吧,如果你不会用设计模式的话,你将写出一堆使用了ejb的垃圾,有慢又是一堆bug,其结果不如不用ejb实现(ejb不等于j2ee) k 8 N}1Bv 
无论学习什么语言,都应该看大量代码,你看的代码量不到一定数量,是学不好j2ee的 
目前有很多开源的工程可以作为教材:
jive论坛
petstore sun公司
dune sun公司
等等,研读一个,并把它用到自己的工程中来。

J2ee其他学习
当你渐渐对j2ee了解到一定深度时,你要开始关注当前领域中的一些技术变化,J2ee是一块百家争鸣的领域,大家都在这里提出自己的解决方案,例如structs,hiberate,ofbiz等等,学习这些东西要你的项目和目标而定,预先补充一下未尝不可,但不用涉及太深,毕竟学习原理和理论是最最重要的事。

目前常见j2eeAPI
JavaServer Pages(JSP)技术1.2  
Java Servlet技术2.3
JDBC API 2.0 q
Java XML处理API(JAXP)1.1
Enterprise JavaBeans技术2.0
Java消息服务(JMS)1.0
Java命名目录接口(JNDI)1.2
Java事务API(JTA) 1.0
JavaMail API 1.2
JavaBeans激活架构(JAF)1.0
J2EE连接器体系结构(JCA)1.0
Java认证和授权服务(JAAS)1.0 } >
学习上面的某些API要以你的项目而定,了解所有他们总之是有好处的 /M9 3(aE 
上面印证了大家说的一句话,java语言本身不难学,但是技术太多,所以学java很费劲。回想一下,基本上每个初学者,在刚学习java的时候可能都会问别人这么一句话,你怎么知道的哪个方法(api)在哪个包里的?呵呵,无他,唯手熟尔。 

====================================== 
J2EE总体的学习计划  

第一部分: 
  JAVA语言基础知识。包括异常、IO流、多线程、集合类、数据库。(切记基础知识一定要时时刻刻巩固) 
  要求:对java的封装,生命周期等有一定的了解; 
  异常------掌握try-catch-finally的使用 
  IO流------掌握字节流、字符流和对象序列化的处理.。熟练使用各种输入、输出流类(InputStream、 OutputStream、FileInputStream、FileOutputStream、DataInputStream、 DataOutputStream、BufferedInputStream、BufferedOutputStream、Reader、Writer、 InputStreamReader、OutputStreamWriter、BufferReader、BufferedWriter、 ObjectInputStream、ObjectOutputStream)。 
  多线程-------掌握多线程实现的两种实现方法,分别是继承Thread类与实现Runnable接口。理解线程间的同步与互斥。 
  集合类-------掌握Set、Collection、Map、List、Iterator、Enumeration接口的使用,掌握HashSet、ArrayList、Vector、HashMap、HashTable类的使用。 
  数据库-------掌握JDBC API的使用,包括DriverManager类、Connection接口、Statement类和接口、PreparedStatement接口、ResultSet接口。 
  还有了解java反射机制,对Java1.5的新功能必须有了解与使用,泛型等。. 
  另外-------理解Unicode、GB2132、GBK、UTF-8、ISO8859编码方式。 
参考:《Java编程思想》、张孝祥视频教学。 

第二部分: 
  JAVA网络编程。包括Socket、RMI、HTML、XML、JSP、JavaBean、Servlet。 
  要求:Socket--------了解java.io包中的套接口类和服务器套接口类的使用。 
  RMI--------掌握RMI基本工作原理、掌握定义远程服务接口类、远程接口类、客户端调用类和部署、编译RMI应用程序。 
  HTML--------了解HTML语言的语法、各种标签。 
  JSP-------掌握JSP2.0语法、隐含对象、EL、JSTL1.1、JSP自定标签。 
  JavaBean-------理解JavaBean的特点和事件模型。 
  XML--------了解XML语言的语法、DTD、Schema。 
  Servlet---------掌握HTTP协议、Servlet工作过程、Servlet会话跟踪、Servlet过滤器、Serlvet事件侦听器、配置web.xml。 
  UML-------掌握用例图、类图、活动图、顺序图、状态图。 
  Aglet-------学会安装使用tahiti服务器,掌握Aglet API。[以后再学,在彭老师的项目才会用到] 
  开发工具------掌握Rational Rose 、ant 、cvs版本控制、myeclipse、dreamweave等开发工具使用。 
  另外-------学习过程中学会使用Tomcat、JBoss/Weblogic服务器 
  参考书:《JSP2.0技术手册》林上杰编著; 
  《深入体会Java Web开发内幕---核心基础》 
  在JSP上不要花太多时间,在时间放在servlet多一些. 

第三部分: 
  流行MVC架构和Java对象持久化技术。包括webwork、Spring、Hibernate 
  要求:MVC-------理解MVC设计模式、处理过程。 
  webwork-------理解webwork实现MVC的机制、工作流程。掌握配置webwork应用、webwork控制器组 件、webwork应用的国际化、异常处理、webwork标签库。(其实很多遗留系统用的是Struts,但现在越来越少人用了,所以我鼓励你们学 webwork,但要必须要了解一下Struts) 
  Spring-------掌握控制反转(IoC)、面向方面编程(AOP)、事务服务(JTA)、邮件服务(JavaMail)、持久化服务(DAO、JDBC、ORM)、远程服务(RMI)。 
  Hibernate--------理解ORM,掌握映射对象标识符、映射关系(一对多、多对多、一对一)、映射类型、检索策略、检索方式、数据库事务与并发、管理Hibernate的缓存。  
  学习过程:先学习webwork2,再学习Hibernate,最后学Spring。 

  下面的东西有时间了解一下: 
  测试/敏捷开发-----关注测试,掌握Junit单元测试框架,以及现在两个流行的mock工具EasyMock/JMock,熟 悉其中一种。(提示:测试非常重要,有效的测试可以减少很多开发的时间,当然刚开始觉得不耐烦,好像没有必要写测试代码,一定要说服自己尝试写测试代码, 或多或少的)  
  UNIX系统------了解最主要的shell编程,及主要的相关的命令行操作.  
  AJAX-----了解基本的javascript,csss,以及ajax常用的用法,还有JSON框架. 
  (ajax的框架太多,但不要花太多时间去学,因为你不知道公司用不用ajax,而且用的那一框架你没有办法知道,所以懂最基础就可以了)  

  参考书:《webwork in action中文版》 
  《精通Struts》、《精通Hibernate》孙卫琴著, 
  《Spring技术手册》林信良著 
  《JUnit in action中文版》Vincent Massol著的 
  书籍只是用来入门的,其他的工具必须多上英文网址,尽量多看一些英文文档,提高自己的水平,同时有空的时候也可以下载的一些开源项目的文档。 
  最后一句话:无论什么技术,学了不要以为自己多牛,学技术只是为了更好提高自己做项目的能力以及提升自身的水平。你做的项目效果怎样才能最终看出你自身的水平。  
--------------------------------------------

---------------------------------------------
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学习好,还会有一些其他的技术也是必须要掌握的。

-------------------------------------------------------------------------

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

      初学计划先掌握以下技术:Java Server Page,Java Servlet,Enterprise JavaBean,JDBC,Transactions。还有JAXP等XML相关技术,Java Message Service,Java Mail,JDO等等有条件的话再看看。其他Management Technologies,Connector Architecture等等主要是给容器提供商中间件提供商参考的,作为应用开发者,还是等用到了再去学吧。

语言学习篇

J2SE基础。

<<Thinking In Java>>

<< Core Java™ 2, Volume I: Fundamentals >>

<< Java in a nutshell>>

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源代码

J2EE基础和Java语言进阶

<<Core Servlet and JSP 2Edition>>

<<More Servlets and Java Server Pages>>,

Enterprise JavaBeans, 3nd Edition>>

<< Mastering Enterprise Java Beans Third Edition>>,免费下载http://www.theserverside.com/books/wiley/masteringEJB/index.tss

<<Refactoring: Improving the Design of Existing Code <<Effective Java>>。

Oreilly的<<XXXX   in   Action>>

<<Java Threads, Second Edition >>,
提高篇

<<Design Patterns>>,

<<Core J2EE Patterns>>

<<Expert One-on-One J2EE Design and Development (Programmer to Programmer)>>