Java学习路径(三)过程篇
第二步,学习Java的语法。Java的语法类似于C++。基本上,主流的编程语言不是类C就是类C++。没什么新东西,半天时间学语法就够了。需要注意的是,有几个关键词是不容易弄清楚的,比如public,protected,private,static,什么时候用,为什么用,怎么用。这可能需要一些指导。我一开始完全是自己想通的,花了我很长时间。但是后来看到《用Java思考》这本书,里面讲了这些概念。
第三步,学习Java的面向对象编程语言的特性。比如Java的继承、构造函数、抽象类、接口、方法多态性、重载、覆盖、异常处理机制等。对于一个没有面向对象语言背景的人来说,我觉得这个过程会比较漫长,因为在学习Java之前没有C++的经验,只有C的经验,我花了大概一个月的时间把这些概念都吃透,反复揣摩、修改、尝试书中的例子,反复阅读那些章节的内容。读了五遍以上,我完全明白了。但我觉得如果我有C++的经验,一两天应该够了。然后,在这个过程中,你可以看一下《用Java思考》这本书,这本书对面向对象的解释很透彻。可惜我读书的时候,没有看到这本书,所以花了很多时间去尝试,去学。
第四步,熟悉Java类库。Java的基础类库其实就是JDK安装目录下的包jre\lib\rt.jar。学习基础类库就是学习rt.jar基础类库里有很多类。据说有3000多。我没数过。但对我们来说,只有四个核心,即
Java . lang . *;
Java . io . *;
Java . util . *;
Java . SQL . *;
对这四个包的研究,每一个都可以写成一本厚厚的教科书,而奥莱利做到了。我觉得时间紧的话,读四本书是不可能学习的。我认为更好的学习方法是这样的:
首先要通读整个包框架,了解整个包的类、接口、异常的构成,这样你才能找到一篇介绍整个包框架的文章。这些专门介绍包的书的前几章应该是这些通用框架内容的介绍。
要掌握一个包的整体框架,并不是要熟悉每个类的用法,要记住它有什么属性和方法。我都不记得了。相反,您需要知道包的哪些方面是由类组成的,这些类的目的是什么,以及核心类执行什么功能。我培训人的时候一般都是一个包一个包的讲,不可能详细介绍每个类的用法。但是我反复强调,我告诉你的这些包,并不是告诉你如何调用一个类的方法,也不是要求你记住一个类的方法调用,而是要知道Java给我们提供了哪些类,每个类用在什么地方。当我遇到问题的时候,我知道哪个班或者几个班的组合可以解决我的问题。当我们具体写一个程序的时候,你知道用哪个类来完成你的工作就足够了。编码时,在检查文档的同时编写具体的方法调用。所有的东西都在文档中,所以你不需要记住它。其实3000多个类的近10万个方法调用你都记不住。因此,把握每个包的整体框架是极其重要的。
第五步。通过上面的学习,如果学习比较扎实,Java的基础就打好了。剩下要做的工作是清除文档中除上述四个包之外的一些其他有用的类。相信在这一点上,Java的自学能力已经培养好了,可以达到直接学习文档的水平。除了GUI编程,JDK中其他有用的包有:
Java . text . *;
Java . net . *;
javax . naming . *;
这些包中真正用到的类只有几个,所以花不了多少时间。
步骤6: Java Web编程
Web编程的核心是HTTP协议,与Java无关。如果不熟悉HTTP协议,可以学好Servlet/JSP编程,但达不到举一反三、面面俱到的目的。因此,对HTTP协议的研究是必要的。如果你熟悉HTTP协议,有很好的Java编程基础,学习Servlet/JSP是很容易的。我花了不到一周的时间学习Servlet/JSP,然后开始用JSP做项目。
在Servlet/JSP的学习中,重点仍然是Servlet文档。Servlet API是最常用的类,所以掌握它需要的时间比较少。浏览所有这些类,试着再写几个例子。Servlet/JSP编程的本质就是通过HTTP协议反复调用这些类在Web服务器和浏览器之间对话。另外,对于JSP,需要熟悉几种常用的JSP标签。如果记不清具体的写法,就临时查一下。
另外,Java Web编程学习的重点应该是Web应用的设计模式,如何分析业务逻辑,做出合理的设计。根据MVC设计模式的要求,应该使用Servlet和JSP来完成不同的逻辑层,以及Servlet和JSP之间如何控制流程和共享数据,以及如何配置和部署Web应用程序。
第七,J2EE编程
如果上面的学习过程比较顺利,到了这一步,难度会突然加大。由于上述知识只涵盖一个方面,而EJB、JMS、JTA等核心J2EE规范往往是几种Java技术综合应用的结晶,掌握起来比较困难。
首先,你必须学好JNDI。JNDI是查找应用服务器位置服务器(EJB组件、Datasouce、JMS)资源的方法。如果你不熟悉JNDI,你很难学习EJB和JMS。JNDI其实就是Javax.naming.*这个包,用起来非常简单。难点在于服务器资源文件的配置。对于服务器资源文件的配置,需要看专门的文档规范,比如web.xml、ejb-jar的编写。XML等等。对于每一个不同的App服务器,它也有自己的服务资源配置文件,这也需要熟悉。
然后可以学习JTA,主要是了解JTA如何控制交易,何时使用JTA。这里有一个简单的例子。我们知道,一般来说,事务控制(conn.set autocommit (false)、...,conn.commit())可以作为原子操作对数据库连接执行。但是假设我的业务需求是把两个不同数据库的操作当做一个原子操作,你能做到吗?在这个时候,JTA只能被使用。假设操作过程是在数据库A中插入一条记录,然后在数据库B中删除另一条记录,我们无法通过编写自己的代码将整个操作控制为原子操作。有了JTA,应用服务器将完成控制。
在学习EJB之前,我们应该学习对象序列化和RMI,这是EJB的基础。然后学习JMS和EJB。对于EJB来说,最重要的是理解EJB如何通过RMI调用远程对象,以及在什么情况下应该使用EJB。
在学习了EJB和JMS之后,你可能会意识到你迫不及待地想学习两个领域的知识,一个是UML,一个是设计模式。Java企业软件的设计非常重视框架的设计,好的软件框架是软件开发成功的必要条件。此时,我们应该开始专注于设计模式和框架的学习,通过学习和实际编程经验,掌握EJB的设计模式和J2EE的核心模式。
在J2EE规范中,除了EJB、JMS、JTA、Servlet/JSP和JDBC,还有很多企业技术,这里不做介绍。
还有一个新的领域,Web服务。Web服务也没有什么新东西。它就像一种粘合剂,可以统一不同的服务,提供统一的调用接口。作为用户,我只需要获得服务提供商给我的WSDL(服务描述)。我不知道服务器提供商提供的服务是否是EJB组件。Net组件,CORBA组件,或者其他实现,我也不需要知道。Web Services最伟大的地方在于它通过统一的服务提供和调用模式实现了整个互联网服务的共享,是一个非常令人激动的技术领域。网上好像还没有什么好书,但是你可以通过在网上查资料来学习。
0条评论