1年Java历程的回顾、反思与展望

大约就是在去年的这个时候吧,Java 这个字眼就开始占据了我学习计划中的重要席位,从那时候那杯冒热气的咖啡一直陪伴我到今天。也不知道当时为什么要学习Java , 又是为什么选择了Java。因为我记得当时的我,心中所想和现在可谓是大相径庭!那时我曾天真的想着,我将来学管理,你们这些学计算机的人出来也难逃给管 理界人士做下属的命运,现在想来,那时是多么的无知和幼稚,我怕现在的很多大学生,更确切的说很多像我们专业――信息管理与信息系统的同学都还抱着这样的 想法(当然也不排除很多立志学习金融以及管理的同学^_^)!
  
  其实在蔡学镛先生的Sleepless in Java中也就说过,他在上大学的时候,有两类同学错误的认识,第一种就是瞧不起基础课,觉得学的什么Data Structure,Operating System,Database Concepts没用,以为会VC,VB,SQL Server的就真的能成为众人羡慕的IT白领了;第二种也就是我刚才所说自己犯的错误,真以为那些写程序的人将来入了社会会被那些学管理的人踩在脚下! 第一种是短视进利,第二种呢就是好高骛远!在犯了第二种错误后,值得庆幸的是,我对第一种错误总是避而远之!^_^
  
  记得我在网上 搜索了很多资料,最后终于锁定两本书作为我入门教材的入选书籍,一本是《Core Java》,另一本就是《Thinking in Java》了。但是因为当时网上说《TIJ》中文版翻译的不尽如人意,于是我就选择了《Core Java》,现在真觉得当时选择是对的,就我那会的基础根本看不懂TIJ,而《Core Java》是属于教科书风格的书,于当时的我比较适合。随着我翻开《Core Java》的第一页,我就正式踏上了Java之路!
  
   当初我在刚学习Java的时候,我无论对Java还是程序设计都是不折不扣的门外汉,我看《Core Java》第一章的时候完全是如履薄冰,一大堆技术名词搞得我晕头转向的,什么分布式,多线程,GC…,虽然现在看来是非常自然而顺畅的,但在当时可以说 是我前面的一座高山,其实,那些技术名词根本不用看,慢慢的学,学的那儿自然就不言而喻了!现在看CSDN上初学者恨不得一开始就把所有的名词全部搞懂, 从J2EE,J2ME,EJB,JMS,CORBA,JXTA…..就我觉得,这些都是图增烦恼,而且根本对真正的初学者即使你知道你也无法理解。
  
   紧接着,喜马拉雅到了,设置环境变量,classpath的设置是我当时最感郁闷的东西,相信现在的初学者对于此道还是一样的,确实还是 Microsoft的东西比较好用^_^,门槛很低,不至于吓退初学者!你要知道,一个没有path概念也没有UNIX背景的初学者要设置以及弄明白为什 么这么设置真不是一件容易的事,而且主要是书上说的很模糊,而且当初我学习的时候环境并不好,因为我周围的同学并没有学习Java的,我无处可问,惨 啊……!我虽注册了一个CSDN的帐号,可是很少上论坛,现在想来,如果当时能够好好利用CSDN的资源,也不用走这么多弯路了!也不知道当时在什么地方 找到这个配置方法,终于解了我的燃眉之急。随后又听说JCreator是比较好用的IDE,下载 了 一个2.5版的,用了之后发现果然不错,至少不用每次都用console来编译运行,翻过classpath这个拦路虎过后,此后的平原就比较开阔了,但 当时只是感觉好像自己学习的比较轻松,其实有很多东西没有学扎实,以为自己懂了!打个比方吧,我直到快学完《Core Java》第一本书的时候我才在《Java in a nutshell》上面知道什么是class method,什么是instance method!
  
  因为我没有什么C++ 基础也更谈不上什么Lisp,Smalltalk背景,所以《CoreJava》的tips或者要求C++ 程序员注意的一些pitfalls,我都跳过没读,不过就我现在的C++水平来看那本书,如果利用这些annotate对于一个从CPP转到Java阵营的Programmer来说是非常有帮助的。
  
   2003年的寒假,《Core Java》的第一本就伴随我度过了一个懵懂的春节,当然这段时间《程序员合订本》对我的帮助是很大的,不仅在技术上教会了我许多东西而且也使我的知识面拓 宽了不少!在寒假的时候,我在网上固定的生活方式就形成了,每天一打开Browser,首先打开CSDN然后打开Sina,CSDN的论坛也成了我经常光 顾的地方,当时看着CSDN Java板块的那些牛人红星闪烁的,觉得特别羡慕!于是我也开始回答问题以挣取专家分,不过就那会我的知识实在太过匮乏,混了整整一个寒假,也就到了三个 裤衩^_^,不过也在CSDN学到了很多东西!那段时间虽然进步不大,不过却是很值得怀念的!在假期中我还学过一点JSP/Servlet,不过,没有深 入的学习,而且对web application的理解也很浮浅,所以学了等于没学!给我印象最深的就是Tomcat运行Servlet的配置了,那个其实就很简单的 web.xml文件,真不明白当时怎么搞了差不多一天才出来,急的在CSDN上面连连发帖子问…..
  
  看完《程序员合订本》,我基 本上对Java领域的好书有了一些了解,随后我知道了china-pub,知道以后买书之前要上那儿去转转,看看书评。再回学校之前,我列出了要买的一些 书的清单,费用差不多到500RMB了。从家里一回学校,那500元也就众望所归的换成了N斤的质量良莠不齐的纸张了,这些纸张还真不能对等成知识!我记 得那次书籍大采购中有用的书就只有这几本《Java in a nutshell》,《Effective Java》,《Thinking in Java》(E),《Java与模式》(在我看《Design Pattern》以前:)),《A breif introdution to Data Structure and Algorithm Java Edition》,《Core Java:VolumnII:Advanced Feature》!其他的么,唉,可惜啊…………
  
  随着大三上学期的开始,也就开始了DS的学习,我使用的教材就是上面提到的那本 书,对基础数据结构和算法的学习让我也慢慢重新开始认识程序设计认识Java,我记得梦魇先生在合订本中给《The STL Annotated Source》写推荐的时候说过:作为一个程序员,如果你是做数据库编程的,大可以不懂汇编语言,如果你是写驱动程序的,大可以不必通晓人工智能,写编译 器的可以不用懂什么计算机图形学,操作系统内核高手的不用精通网站架设,然而,如果你不懂数据结构与算法的基础知识,不具备数据结构与算法的基本技能,那 就完全丧失称为一个程序员的资格!这就足以说明DS的重要性!
  
  看着CSDN上面蔡学镛老师的专栏,也在一期一期的程序员中看着他 的文章,特别是有一篇叫做《我所知道的O’Reilly》,慢慢我对O’Reilly的书籍的感情与日俱增,O’Reilly的网站也成了我经常出没的地 方,那段时间我买了不少O’Reilly的书,因为O’Reilly俱乐部有会员的活动,好像是积分多少可以免费送一本50或者60以下的书,主要是这几 个价格是O’Reilly的中文本比较喜欢订的价格,49,59,69,75,85….当时我好像一共买了6本,关于Java方面我觉得比较好的就是一本 同样是David Flanagan写的《Java Example in a NutShell》,另一本就是《Java Cookbook》!随后有资格获得一本60元以下的书籍,后来我千调万选选了一本《DNS与BIND》(3E)(其实我拿这些书根本就没用:)) 59元,O’Reilly的工作人员非常热心,首先告诉我这本书已经出到第四版了,但我告诉他我赠书的上限只能到60而则本书要69的时候,他告诉我一样 可以赠给我,当时可把我感动死了!^_^随着我看的O’Reilly的书籍不断增多,我看O’Reilly的书也形成了一个独特的看法,每拿到一本 O’Reilly的书籍,我一般是看封底的介绍,介绍这本书的内容以及一些权威人士对这本书的评价,大家都知道,O’Reilly的书籍封面都是一只动 物, Java系列的代言人是Tiger,而且Java系列的书都是紫色的!随后我会翻到最后几页看封面的动物是什么,然后看作者的介绍,最后才开始进入正文! 那段时间也就形成了一种特殊的O’Reilly情节!
  
  大家都知道,O’Reilly的In a nutshell series一向是品质的代名词,刚开始看的时候我实在困惑为什么O’Reilly要用XXX in a Nutshell命名,后来有一天躺在床上午休的时候,突然想起以前高中的时候看过Steven Hawkings的一本书叫做《Universe in a nutshell》(果壳中的宇宙),就连Universe都in a Nutshell更何况其他东西呢,所以技术手册包涵范围之广,知识之全,可以说是可见一斑!
  
  上半年刚开学的时候,我就以为自己 对于《Core Java:VolumnI》已经理解透彻了,然后就开始看VolumnII了,而且同时还在看《Thinking in Java》(E)为了进一步巩固基础,不过在此之前我大致看了一下《Java in a NutShell》,也从前面的介绍中学到了很多我漏网的知识,就像上面所说的class method和instance method,还有对Java这个paltform也有了一些理解。不过开始读VolumnII的时候,第一章就把我绊倒了,线程?什么东西,因为当时没 有学习OS,所以要理解线程的概念以及理解线程同步太过困难了,而且其中夹杂了一些AWT和Swing的一些应用,因为我在学习VolumnI的时候对于 GUI就不太重视,觉得GUI既浪费时间而且也学不到太多东西,而且还比较麻烦,对于GUI的观点我一直持续到现在,唯一不同的只是现在认为Java的 Swing是学习Design Pattern的很好的例子!
  
  慢慢在学习VolumnII过程中,我愈发的感觉到基础的薄弱,于 是我又拿起VolumnI,复习了一遍,发现又有新的收获,我学习就这样,我只要学习偶有所得便喜不自禁的^_^,如今我同样不定期的复习以前看过的书 籍,以寻求新的收获。同时我也开始了《Thinking in Java》的学习,我以为,我已经看过《Core Java》的VolumnI了,按道理读《TIJ》应该是轻车熟路,应该没什么问题,但当我开始翻开第一章开始看的时候,又给了我当头一棒,看不懂,特别 是后面那些关于Software Engineering的东西,不过到现在我还不怎么了解后面的东西:)
  
  所以我觉得初学者读这本书的时候第一章根本就应该跳过,不然就是给自己找罪受,我依然记得看不懂书那郁闷的心情,不仅这个心情影响你其他的学习,还打击你学习Java的积极性!而且由于我看的是E文的,有些意思还是把握的不太准确,所以我就借了一 在暑假的学习中情况也是像我以前计划的那样发展,首先看的一本书就是《Java Network Programming》,Bruce确实推荐了一本好书,这本书循序渐进并且讲的非常透彻,学完这本书然后再学习新的net的API以及NIO是非常轻松的,这本书我花了10天看完了,自我感觉好极了^_^。
  
  与此同时也每天练习《Java Cookbook》中的代码,这个假期 我把那本书的代码全部亲自实践了一遍,正因为如此就积累了很多解决实际问题的办法,所以把这本书叫做 Encyclopedia一点都不过分!顺利的学习完《JNP》以后我开始了《Java Servlet》的学习,因为一直以来Java的基础比较扎实而且在上半学期对web application也逐步了解了很多东西,所以学起来是非常轻松的,当时我用的工具是Jbuilder9,省得用Editplus + Tomcat每次写完一个Servlet还要再改xml文件。提到JBuilder,我又想起当初死活不知道怎么破解的时候了,好不容易能使用JB了又不 知道怎么弄,Java的那些IDE对于那些初学者来说确实亲和力不如VS系列,但是只要你入了门槛,那么那些工具就让你如虎添翼了!不过JB的庞大以及启 动之缓慢确实让很多人敬而远之,虽然它的功能强大,特别是配合Together以及Optimizeit,外加配合一张英俊的Blake Stone的照片^_^,不过我倒是更喜欢用Eclipse或者Idea!
  
  暑假中收到一封来自O’Reilly的E-mail, 影响了我后一个月的学习,那是O’Reilly给会员优惠的购书活动,其中很多书都是2折起的,就在那个假期我又一口气购了十多本书,内容覆盖 XML,UML,Java,网络,不过只花费了200多RMB,相当于每本书就20多RMB,这在IT图书界,而且还是O’Reilly这样有图书质量保 证的世界一流出版社是非常罕见的!不过因为买的书实在太多了,我在暑假也看不完,所以在假期的后半段我只读了这几本书,《JDBC与Java数据库编 程》,《Java Threads》以及《Enterprise JavaBean》的前2章(因为不太懂,刚踏入EJB的时候又如同步入森林了一样),再加上学习的《Core Java》(VolumnII),《TIJ》,那个假期我不敢说我有很大的进步,只是我觉得熟练度增加了,基础知识也算比较牢固了!
  
   (附:其实当初买的那些书,除了上述三本其他都没看,害我后来没办法只有再低价出手。经过这一堑,我明白了,对于计算机图书,它不是《四书五经》可以拿 来收藏,可以传给后世(当然也不排除有乐于此道的同学),要买书只能买最近要看的书,买来一本就就要订一个这本书的学习计划,至于于你没用的书,正如我当 初买的DNS的,网络的,即使很经典,很便宜就算是白送于你,也没有两卷卫生纸来得实在^_^)
  
  说到上个暑假,还有不得不提的事 就是沉迷于CSDN的论坛中。早在暑假回家之前,除了那些学习计划,我还有一个目标,就是一定要在CSDN的Java板块变成一个红星,因为那个时候我觉 得红星就是技术水平高的代名词(一般初学者才有这个想法^_^),所以那个假期在CSDN回答问题可以用一个疯狂来形容,当时基本上事每一个帖子都有我的 足迹,每天泡CSDN就5,6小时,分数确实是扶摇直上,但是我很清楚,能力并没有向专家分一样涨的那样的飙升!很快,不到一个月的时间,5000分就够 了,看着自己名字后面的红星,可以说是喜不自胜^_^,心想Java我也算入门了!当时有感于Java基础板块的入门和基础问题,在不同的时期要被不同的 人重复提出N次,而且想起我入门的艰难,我就写了一篇初学者入门的帖子,列出了初学者提问频率最高的4个问题(至少当初我在前3个问题上面都栽过跟头)。 1:环境变量 2:Servlet的配置 3:Java连接数据库 4:书籍推荐!后来时常看见自己的文章想,我当时要有这样一篇文章,也不至于……
  
   回到学校,慢慢的,对CSDN论坛的热情也就淡了,不过每天打开浏览器第一个上的还是CSDN,可能这已经在我得生活里面成为定式了。就像我说,其实我 每天上网也上不了多久,也就收收邮件,看看新闻,上上论坛。但是要一天不上网就觉得特别别扭,这已经固化为一种生活方式了!
  
  如果 说在升第二颗星之前我还有些许动力泡论坛,这点动力随着Converse旁边多了一颗星后就基本消失了,而且因为平时学习实在太忙了,所以每次即使上论坛 也只是上会非技术版!更多上CSDN还是去看文档中心,因为每隔不久,就会有些非常好的文章可以学习。除此之外,另一个宝库就是IBM开发者网站了!
  
  在下半学期我给自己树立了两个目标:第一就是进军J2EE阵营,其中首先准备攻克EJB,当然首选教材便是O’Reilly的那本《Enterprise JavaBean》,不过这本书委实太老了,书中讲的都是EJB1.0和EJB1.1。
  
   EJB的实践环境要比一般的J2SE的程序配置高多了,我当时用的Weblogic8.1 + Jbuilder9 + SQLServer, 用JB开发EJB是非常方便,自己只需要添加很少部分的代码就行了!不过因为这样的配置造成机器的速度比较慢,所以我在学习EJB的时候并没有写多少例程 序,主要集中在原理的学习!
  
  另外一个目标就是设计模式的学习以及应用,希望能够脱离语言的层面,说这话只能是贻笑大方,因为脱离 语言层面谈何容易,我的实践经验太少,光靠理论以及玩具级代码的练习要达到这个目标,简直就是痴人说梦!不过9月份我确实开始了对模式的学习,选的书正是 网上评价很好的《Java与模式》,不过这本书我只看了很少的部分,原因有二,第一,这本枕头一样的书籍不便携带,也不便翻阅;第二,书中简单的代码占了 大部分的篇幅,而且感觉有点累赘,或许因为我对东方文化孤陋,所以阎博士举的一些例子,反倒使我迷惑了!
  
  但是9月份我却看到了另 一本好书,《Effective Java》,Bloch不愧为Java社区中声誉极高的一个人物,这本书第一遍看的时候,我就已经觉得Joshua在这一条一条的建议中,就已经把 Java编程的精髓透于纸上,这本书于我的震撼超过当初看TIJ的感觉,也可能是因为当时看TIJ的时候没理解其精华,也可能那些东西接触多了就没什么新 鲜感,认为是理所当然的。正如我后来学习CPP的时候,见书上描述神奇的Polymorphism的时候没什么感觉一样!这本书在已过的这个学期完整的读 过3遍,而且平时一有闲暇时间又在读这本书,感觉每一遍都有新的收获!
  
  其实刚过去的这个学期在Java上我花的时间很少,写程序 代码的时间就更少了,写的程序主要还是Java选修课和操作系统的作业^_^,因为我总感觉敲代码太费时间,实践所学到的东西根本不比我看书所学到的东 西,当然我知道这是错误的,可是心里就有这种倾向!其实,蔡学镛的夜未眠中有这种境界,就是实践所能学到的确实不比看书所获取的知识多,我虽没达到却有这 种错觉,可笑……
  
  可能因为《Effective Java》给我的感觉太好了,我又买了两本主题差不多的书,一本是《Practical Java》,另一本是《Java Pitfalls》,前者深度上不及《EJ》,后者又涉及太多GUI的东西了,不过,总的来说,这两本书也让我学到了不少的东西!我坚信,多看点书始终对 自己是有好处的^_^
  
  《Mastering EJB》是我上个学期读的最后一本关于Java的书籍,我是把这本书的中文版和英文文档concurrently读的,不过也辄止到高级主题那章,因为慢 慢的,我就暂时不准备向J2EE发展了,因为这些我都把他们叫做应用型的,如果你不出来实践那就没什么作用,所以我只是了解一些EJB原理性的东西,开发 部署也就不用了解的那么仔细。所以后半期的Java学习还是把重心放在了J2SE上面。进入11月份,除了不时上技术网站看一些关于Java的帖子,从 《程序员》,《开发高手》上面看一些文章,还有没事复习《EJ》,就没怎么拿着正式的书籍读过了!主要是因为我把精力全部放在了C++ /STL上面了^_^
  
  第一次,在10月份我参加了Java年会,而且这一次真幸运,遇到James Gosling首次访华,更为幸运的是,在James的见面交流会上面,能够和这位Java之父合影,而且那天还幸运的得到了一套Sun赠送的StarSuite!
  
  参加Java年会后,我在11月份又参加了Bea的Dev2Dev开发者大会,反正我觉得大会就是了解一些概念,要真正学到东西不太可能,那只是拓宽视野的地方,一句话,就是长见识!
  
  反思这一年走过的路,也就是品味学习的酸甜苦辣,我觉得唯一值得称道的就是自己是一步一步坚持走过来,没有放弃!
  
  至于短期内的目标就是学习深入了解JVM,而对于未来的展望,我个人不太喜欢憧憬未来,因为我觉得立足脚下会让我感到充实!
  
  下面几条就是我的反思或者说自己在学习中形成的一些想法,与诸君共勉,希望大家能够提一些学习上面的建议以及纠正我得错误观点:
  
  1.书读百遍,其义自现
  
   我看书就是这样,看书看不懂很正常,技术书籍不是武侠书籍,看不懂没什么好奇怪的!我遇到看不懂的地方,就不会在那儿阻塞太久,实在看不懂我就咕噜吞下 去,等到看完这一章或者这一节再回过头来学习,反复的读!我的学习就是一个往返的曲线,不时的会把前面所学过的复习一遍!我觉得就是读过好几遍的书,就像 我现在再读《Thinking in Java》,每次都有新的收获,虽然收获一次比一次小吧,但是却不是可以抹杀的!这可能就是所谓的温故而知新吧!
  
  2.勿在浮沙筑高台
  
  这里引用了候老师在《深入浅出MFC》中的一句话,其实贯穿这篇文章我无时无刻不在强调基础的重要性,而且平时这个观念也是deeply rooted in my mind!
  
  3.天下大事,必作于细
  
  又引用了候老师的话,学习技术就是要从细处下功夫!看一本书要理解透彻,其实也要分什么书籍了,原理性的书籍那是来不得半点马虎,至于很多应用类书籍,实例类书籍,看过知道在哪儿找就行了!
  
  4.业精于勤荒于嬉,行成于思毁于随
  
  这和本文的题目所要表达的思想是一样的,学习没有捷径,只有刻苦努力不要放弃才能成功!不管前面的路如何,自己只要坚持走,等登上顶

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值