分类: Java
2007-10-25 15:05:21
这个路线图是给那些为了就业的人准备的,如果只是兴趣,不一定照这个走。
这里只是讲了路线图,关于路线中的各个阶段,学到什么程度,如何学习等,可以参考后面的JAVA自学之路 七:《》。
无论如何,请坚持不懈的动手实验!
学习Java要动手,仅仅是看和听是不能够学好编程的。
总有同学来信问我们这样的问题,说:"老师我看了视频了(下载:),可是怎么一动手就没有任何思路呢?"
对此,我一般都会说不要着急,如果你只是看了视频就想行云流水的话,那老师这些年的锻炼真是白费了,这么多年的苦练才能略有些行云流水的感觉,你一朝一夕就想自己能够达到,不是太奢侈了吗:)
作为编程的过来人想一下,当年自己学编程的时候是什么时候有思路的呢?至少也是照猫画虎画了一段时间之后吧,我本人是在某一个领域画虎画了上万行代码的时
候才慢慢有自己思路的。就像写作文,要有自己思路总是一般来说要经过几个阶段,首先学习词汇,然后学习造句,然后大量阅读别人的文章,自己模仿着写一些,
逐渐的经验积累,才能形成自己的思路。学编程,恐怕也得慢慢的来吧,只是看一看、听一听视频,是不足以学好编程的。
所以,动手吧,跟着做,一行一行的跟着敲,一个项目敲完了,比如坦克,再试着加一些自己的功能,按照自己的思路敲一些代码,收获远比干听大的多。
如果遇到,暂时对于一些思路不能理解的同学,我一般都会劝告说,动手写,先写代码,量变会引起质变的。而这种质变的确发生过不少次。
提醒一句,要理解代码思路之后再跟着敲 ,背着敲,千万不要左边摆着别人的程序,右边自己一个一个子母的写,这就不再是程序员了,成了打字员了。对待人生的任何事情都要:抓大放小,要事为先
对于一个以前从来没有接触过java的人,java无疑是庞大的,似乎每个领域都可以拓展开来都是一片开阔地,每一个领域要想深入接触到每一个细节所耗费
的精力都是巨大的。这个时候大家都胸怀壮志,两眼发光的盯着每一个崭新的知识点,遇见了任何一个知识点都恨不得抠的清清楚楚,明明白白。
难道这有什么不对吗?
我的意见是,没什么大毛病,但是学习效率太低了!
我们推荐的学习方式是,抓大放小,要事为先。
比如说学习J2SE的时候,学到GUI这一章,有的同学认为,既然学到这儿了,我们去把SWING细细的了解一遍吧;还有的同学,遇到了在Linux下的
Shell编程,就恨不得把Shell先学成专家才肯,或者是才敢,继续往下学习;有没有过这样的感觉,一本书的上册没有学好,觉着下册心里也没底儿,甚
至非要把上册复习一遍才敢继续学习。
如果你也是这样,要去看看心理医生啦,没准儿会有洁癖的毛病:)。
任何事情都要追求完美才敢继续往后进行,是一种性格缺陷
大胆的放弃一些东西吧,有失才有得,把自己有限的、宝贵的精力用在对于就业直接相关的地方,这才是最有效率的学习方式!等你参加工作,有了可持续发展的事业动力和经济基础,有时间有精力闲的没事儿干的时候,再去研究那些其它吧。
曾经有一个故事,说得是产能和产量的关系。
一个人喜欢读书,读了一辈子,无所不通,这时候要做任何工作都可以,他的产能到了极致,但是,他老了,即便每天产出大量的东西也不能维持多久了,一辈子的产量并没有多少。
另一个人直接工作,忙,天天在机器旁日复一日,做了一辈子,没时间学习和进修,可以想象,产量能有多大呢。
人的一生,要锻炼产能,也要及时产出,引擎要转,也要停下来加油,这两者平衡的越好,你的贡献和产量就会越大。如果钻研的东西和产能目标(或者说近期的产能目标)无关的话,要舍得放手。
所以,对于SWING,暂时先扔在一边吧。
对于shell,对于各种协议过于详细的细节,对于喜欢的游戏编程,对于javascript各种华而不实的效果,都暂时和它们分别吧。
一切和我们的直接工作目标关联不大的东西,扔在一边或者弄清楚到足够支持下一步的学习就可以了。
那这样岂不是妨碍我成为通晓各种细节的高手了吗?
我一向不认为一个人掌握了很多很多知识点的细节就是高手了,一个人如果告诉你,回字有四种写法,你会认为他是高手吗?
毫不客气的说,现在我们所教授的所有知识细节在网上或书中都可以找到,只要你肯花时间花精力去动手试,去钻研,没有什么不能掌握的。struts、
spring你能掌握吗?当然能!但是如果把时间花在spring的各种细节的研究上,花在研究中国企业应用不广泛地的spring
mvc上,这个精力就太浪费了,而且学习的积极性会受到打击,谁愿意整天泡在细节的蜘蛛网中挣扎不出来呢?谁愿意天天经历风雨却总是不能见到彩虹呢?
盖房子,要先建骨架,再谈修饰。
画山水,要先画结构,再谈润色。
认识一台结构复杂的机器,应该首先认清楚脉络,然后再逐步认识每一个关节。
为了应付从小学到大学的考试,我们背了各种各样的不应该提前掌握的细节,同时也养成了见到细节就抠的学习习惯。而现在,是到改改的时候了。
请在合适的时间,做合适的事情吧。
把时间和精力花在作项目上面,花在写作品以及锻炼解决问题的能力上面吧,这是迈向高手的正确的而且快速的方向。
我一直不认为一个课程提供了很多很多的细节就是优秀的价值高的课程了,掌握必要的细节,这个不含糊,至于其他,或者通过视频给出(这样可以给出更多的细
节,但是不占上课时间,课上只讲重要的、必要的细节知识),或者在掌握了自学的能力后自己能够查出,这才是正途。
当你看书到某个地方暂时不理解的时候的,暂时放手吧,追求一些行云流水、自然而然的境界吧,只是不要停下前进的脚步,不要被大路旁边的支根末节干扰了你前进的行程,项目,真实的项目,这才是目的,就在不远的前方。
陶渊明读书,叫做“不求甚解”,但他是大诗人。
诸葛亮读书,总是“观其大略”,但他是大政治家。
作研究的,是在确定了方向之后才详细的研究深入的东西。
到了庐山,脉络形状扔在一边,盯着一棵棵小草、一粒粒石子的看,怎么样才能识得“真面目”?
作为应用型的人才,是研究回字的n种写法还是抓紧时间向着主要应用的方向努力,请自己作出抉择。
以项目驱动自己的学习吧,当把握了技术的脉络之后再去补充细节的研究,是正途。
这辈子就不研究其他的方向了吗?
当然要研究!但是在将来合适的时间再说吧。
2:数据库(Oracle或者MySQL)
SQL语句
多表连接,内外连接,
子查询等
管理表、视图、索引、序列、约束等
树状结构存储
存储过程、触发器
数据库设计三范式、
3:JDBC
JDBC基础
连接池
树状结构存储与展现
DataSource & RowSet
JDBC连接Oracle及MySQL
4:HTML_CSS_JAVASCRIPT
html、css、javascript基础语法
JavaScript Form判断
Dom编程基础(事件处理等)
JS常用效果如TreeView、下拉联动等
JS学习方法
JS调试方法
DreamWeaver初步(建立HTML、Table、Form、CSS)等
5:Servlet & JSP
tomcat基础6:Struts
多层架构理论
Model 1 and Model 2
Struts基本概念
MVC
Action与业务逻辑类的关系
在Struts与JSP之间传递数据
Struts处理流程(控制流)
Struts TagLib(了解常用的)
JSTL
ActionForm
字段收集
上传文件
类型转换
DTO
动态Action Form
验证框架
ActionForward
转发与重定向
动态生成ActionForward
全局与局部的ActionForward
Action
Forward
Scope
UnknownActionMapping
Action的线程安全
I18N
如何切换语言环境
Struts异常处理机制
程序处理
自动处理
自定义异常处理器
Struts的多模块配置
7:XML
(XML/XSL、XSLT/DTD、SCHEMA等基础的概念、关于Java的编程可以暂时扔在一边)
8:Hibernate
OR Mapping原理
Hibernate基础开发步骤
Hibernate基本接口(重点Session)
普通属性映射
关联关系映射
Native SQL
inverse lazy cascade
继承关系映射
HQL
性能优化
一级缓存
二级缓存
查询缓存
事务与并发
悲观锁、乐观锁
OpenSessionInView
CurrentSession
(至于JTA、联合主键、自然主键、动态主键、Any类型
Creteria Queries
Intercepter and Event
自定义类型等,可以暂时扔在一边)
9:Spring
IOC/DI
Spring配置
Spring架构
AOP及Spring AOP
声明式事务(AOP)
Spring + Hibernate
Spring支持Web
Scope
(其他的Spring模块对于自学来说可以暂时扔在一边)
10:EJB3.0
J2EE架构基础(JTA JMS等)
EJB基础(地位及基本理论、分类等)
Annotation
Ant编译与部署EJB
Session Bean
EJB的依赖注入
Persistence API
(可以用JBoss学习EJB3.0)