以前给别人做过Java方面的培训,而最近又在带着新人搞技术,虽不能说自己的技术如何,但是这Java的学习经历和遇到过的一些问题,却是可以娓娓道来的。
新手往往最初也曾在.net和Java之间徘徊过,一旦走上Java这条坎坷的路,问题便一个接着一个来了。Java领域没有绝对领导的公司,Sun不是,IBM也不能算,BEA在服务器市场虽然也有着影响力,当时它同样不能控制Java,Borland虽然依靠JBuilder一度在Java领域很有话语权,但随着Eclipse的强劲走势,Borland也不得不退让了。相比较.Net领域微软的一手遮天而言,Java无疑是开放的。
在这样开放的环境下,每个人成长的历程各不相同。我在这里说的,仅供消遣,如有不对,欢迎评论,如有雷同,纯属巧合。
闻鸡起舞
初学Java,可能会有不少前辈捻着长长的胡子告诉你:小子呃,好好看看Thinking in Java吧。同时,也可能另一个声音冒出来,劝你从Core Java入手。你走到书店,左手一本Java初学者入门,右手一本Java学习指南,也许你已经晕掉了。Any Way,其实看任何一本书都好,你一开始了解Java的基本语法,选择或循环结构的实现方式,保留字和关键词包括哪一些,嘿嘿,你就可以开始动手写程序了。
前人的教导不能忘,“实践出真知”。人的成长是需要摔爬滚打的,不断的遇到问题并且解决,从而获得满足感,由此不断进步。虽然这个过程有些难熬,但好歹只要你坚持,你总会提高。
也许,开头你只能用Java写写helloworld,而过了一段时间,你已经能够用Java做一个基于Console的猜数字游戏了。Java的GUI并不是必学的,因为现在普通人多数时候用不上。
终于,你通过实践已经对Java建立了一点基本概念了。这个时候,应该是你需要好好看看书的时候了。武侠小说里,没有哪个邪派高手能够长久的,为什么?因为光知道一些实用的东西,而不了解原理,只能做做表面工作,一遇到高手就露馅了。这就好像汽车坏了,如果你只会开,你不可能知道怎么修,但如果你了解它工作的原理就不一样了。这个阶段,Thinking in Java和Core Java肯定少不了,设计模式的书也可以摆上桌面了,即使看过也可以温故知新。
当然,看书的过程仍旧离不开实践的。如果你能够每天无论多忙都坚持看一个小时左右的书,何愁自己不会进步呢。
健步如飞
学习Java,过了打基础的这个阶段,需要找个前进的方向了。J2SE、J2EE、J2ME这三个老的不能再老的概念是你不得不去面对的了,这个时候随大流选择J2EE,并不是什么坏事。
开始接触J2EE了,应该就有人开始犯嘀咕,jsp里面写java代码,这种形式怎么跟asp就这么像呢!呵呵,这种说法的确没错。asp最初赢得市场的原因是,它简单易用。jsp也是期望简单易用的,所以两者有相似之处是在正常不过了。asp能够解决的问题,用jsp都能解决。有人说jsp+jdbc能够解决开发领域80%的问题,我同意,而且觉得实际情况应该比这个比例高。
但这是否意味着学习Java的web开发就意味着懂得jsp+jdbc就够了呢?答案显然不是,否则微软就不会在asp之后还推出C#了。
struts、hibernate、webwork、spring等这些名词的出现都是有其应用场景的。虽然它们的引入使得技术使用的等级提高了,但问题的复杂度被降低了或者解决方案的扩展性增强了。
对于这个阶段的技术学习者而言,动手写代码仍旧是最好的学习方式。自己动手应用这些框架,同时去研究现有的应用了这些框架的开源项目,这种方式获得的提高,速度才是最快的。
书在这个阶段起到的作用仍旧与基础阶段相同,实践是学习的切入点,而书是帮助你将知识系统化的最好工具。
工欲善其事,必先利其器
Java的web开发领域犹如浩瀚的大海,除去常用的一些框架,例如struts、hibernate、spring等,还有着缓存机制(ehcache、oscache等)、模板引擎(Velocity、FreeMarker)、规则引擎(Drool)、SOAP框架(Axis、XFire)、检索API(Lucene)等。
Java领域的公司是相当的多,而每个公司提供的产品也是非常多的。
对于哪怕一个Java高手,保持对这么多热点的关注是不恰当的,人的精力毕竟有限。选择一个特定的问题域,并且持续的关注和研究,使得自己能够成为这个领域较为权威的专家,那么一代高手也便真正产生了。
现有的成功的例子:
车东,blog竹笋炒肉,研究lucene的权威专家,weblucene项目的发起者。
dlee,与醒来、庄表伟一同建立了ajax.cn,长期在ajax方面的积累使得他可能在ajax时代锋芒毕露。
关于精通某个公司的产品而成就的一代高手的例子,我就不举了。虽然这样的高手不如web领域的这些问题研究者有名,但他们的实力却也是绝对的强。
高处不胜寒
当然,有人可能会问,到了这种程度,还有可能成长么?
答案是肯定的,无论何时,高处不胜寒的绝顶高手都是存在的。他们的特点是,不仅仅掌握了已有的知识,同时他们还构建了一系列知识体系,将自己的理论总结了出来。他们不仅仅是高手,更加是大师。
看看《J2EE Development without EJB》吧!不仅仅是为了理解一种思想,更重要的是你将由此而认识一位大师。