0. 学习一章掌握一张,然后再不断的用。
1. 找一些比较经典的例子,源码 ( 源码爱好者 ) , 每个例子比较集中一种编程思想而设计的,比如在我的实践当中,我曾经学习过一个很经 典的例子就是用 Java 实现的 HotDraw (源自 SmallTalk ),你可以用 rolemodel 或 hotdraw 在 搜索引擎上找一下,我记不大清楚了。好象 rolemodel.com 是个网站,上面有原代码和一些基本设计的文档。另 一个来源可以到 www.umlchina.com 是个不错的文档基地。从 HotDraw 上我学到了什么是 Framework ,以及如何用 rolemodel 的方式来构造,这样我就可以应用到其他的地方。顺便 说一句,这个例子你绝对不会觉得小,只会觉得大,并且他还是真正的商用的 Framework 。
2. 结合前面学到的设计模式你就可以很好的理解这些经典的例子。并且自己可以用他来 实现一些简单的系统。如果可以对他进行进一步的修改,找出你觉得可以提高性能的地方 ,加上自己的设计,那就更上一个层次了,也就会真正地感到有所收获。
3.
动手,动脑,动嘴,静心。 其中动手是最为重要的了。很多人学计算机技术就是看书、听课,当时是明白了,过后马上就忘记。如果不愿意敲键盘,就不如不学。即使有时候所敲的代码你不明白,可以先运行,看看结果,增加感性认识,然后上升到理性的认识。特别是在大家做考题的时候,很多东西,概念,你只要随便敲一个程序做做实验就能很深刻的理解,但很多人都是不愿意动手,这样的学习效率能高吗。 动脑,动嘴, 就是要多想问题,多思考,有不懂的问题就大声说出来。很多人一是不动脑筋想问题,也就提不出问题。还有一些人怕自己提出的问题傻,怕人笑话。其实 IT 行业技术面很广,工作了 5 、 6 年的人说出一些傻话来也是正常的。
get 和 post 都是提交数据的方式。 get 方式传递数据时,参数在浏览器的地址可以看得到。适合少量数据的传输,方便 post 方式传递数据数量不限,并且浏览器地址栏看不到。
4. 不断总结 , 不断抗遗忘的过程 .
5. 其次,要清楚,学习编程和学习别的东西不一样,只是去看书或记忆是远远不够的 , 要去实际练习才行 , 最重要的就是写代码 . 有一句话说的好 , 只要你写上两万行代码,你就是一个合格的程序员了
6. 记得哪个高人说过学习编程就是个破坏的过程,把书上的例子,自己学习 Documentation 编写的例子在运行通过以后,不断的尝试着用不同的方法实现,不断的尝试破坏代码的结构,看看它会有什么结果。通过这样的方式,你会很彻底的很精通的掌握 Java
7. 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 安装目录下面jrelibrt.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 里面其他会有用处的包是这些:
作者:ITlangzi
2007-11-26 11:23 回复此发言
2
java 学习方法
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 编发送电子邮件的程序,你就得看看 Javamail 了。 ? 好了,对 Java 和 J2EE 有了一些基本概念之后,你就应该编一些程序了,千万不要纸上谈 ? 兵哦。最好找一些有实例且带光盘的书来看,这样看到好的程序就可以直接 Ctrl+C 再 Ct? rl+V ,也不用劳您老大架再亲自把它 ? 再输一遍吧,再说直接复制还不用怕出错,何乐而 ? 不为呢!还有就是要经常上一些好的 Java 编程文章,有好的文章要 Cut 下来,有问题尽管 ? 问,只要问题不是太傻,一般高手都会回答你的。下面介绍几个好的 Java 方面的编程网站 CSDN 论坛 ? http://www.csdn.net/? 中国最有名的技术论坛,《程序员》杂志就是他们出 ? 版的,你可以在上面提出问题,马上就有人回答你,如果你觉得好,你可以给那人加分 ? Java 研究组织 http://www.javaresearch.org/? 上面有很多原创文章,高手还是挺多的; ? Java 开发者 ? http://www.chinajavaworld.com/? 那里 Java 资料比较全; java.com.cn? http://www.java.com.cn/? 看这域名就知道有多牛,注册用户快接近一万 ? 了,同时在线人数也在一千左右,人气很旺的; ? IBM 的开发者网络 http://www-900.ibm.com/developerWorks/cn/java/index.shtml?IBM? 永远的蓝色巨人; ? 那么我书也看了,程序也做了,别人问我的问题我都能解决了,是不是就成为高手了呢当然没那么简单,这只是万里长征走完了第一步。不信?那你出去接一个项目,你知 ? 道怎么下手吗,你知道怎么设计吗,你知道怎么组织人员进行开发吗?你现在脑子里除 ? 了一些散乱的代码之外,可能再没有别的东西了吧!你现在最缺的是实际的工作经验, ? 而不是书本上那些凭空想出来的程序。所以你快去找一份 Java 的编程工作来做吧(如果 ? 是在校学生可以去做兼职啊),在实践中提高自己,那才是最快的。不过你得祈祷在公司里碰到一个高手,而且他还愿意不厌其烦地教你,这样好象有点难哦! ? 还有一个办法就是读开放源码的程序了。我们知道开放源码大都出自高手,他们设计合理,考虑周到,再加上有广大的程序员参与,代码的价值自然是字字珠叽,铿锵有力( ?