一直以来,都想写一篇介绍JAVA学习路线的博客。为什么有这个想法?原因有两个,其一:笔者从大三开始学习JAVA,至今也3年了。由于身边缺乏老司机带路,只能自己一步步探索,深知没人指路的痛苦。所以看过很多垃圾的书籍(没办法,国内书籍市场门槛太低),但功夫不负有心人,一些经典的书籍也都撸过了(关于书籍,下文中会介绍)。其二:由于JAVA进入门槛低,所以存在一些学个SSH框架就觉得JAVA不过如此之流,对此笔者只能呵呵。由于笔者是个JAVA死忠粉,所以写这篇文章也是希望大家能对JAVA有更深入的认识。话不多说,进入正题!
笔者见过一些人,学习JAVA直接从工程上手,然后看别人的代码,照葫芦画瓢(不得不承认,JAVA很容易照葫芦画瓢)。但笔者不推荐这种方式,为什么不推荐?因为这样你可能写出类似这样的四不像代码List<Map.Entry<String,String>>。哈哈,言归正传。
- 对于初学JAVA的童鞋,笔者推荐的书籍是李兴华的《JAVA开发实战经典》,笔者知道可能会有做广告的嫌疑,但对于真心想学JAVA的同学,笔者相信你们看完此书会感谢我的。这本书是推荐给从零开始学JAVA的同学,如果你有C语言的基础,看起来会非常快。但请不要太快,毕竟有些知识是需要时间来沉淀的。一定要从头到尾通读这本书,为何?因为基础很重要。俗话说“根基不牢,地动山摇”。书中关于JAVA图形界面的部分可以略过,需要的时候在学习。因为根据经验来看,图形编程的部分好像很少用到。
- 有了第一步对JAVA基础知识的积累,相信你一定知道了JAVA语言的三个领域:J2ME,J2SE,J2EE。J2ME是JAVA嵌入式设备编程,JAVA语言早期兴起的时候,是在J2ME领域发威的(你可以把现在很火的Android开发认为是这一领域)。J2SE是JAVA桌面级应用。J2EE是JAVA企业级应用,即JAVA Web应用。也是目前JAVA开发者主要活动的领域。这里,笔者想声明,如果你是因为Android学的JAVA,那么把第一本书看完就可以去学Android的知识了。如果你是因为J2EE学的JAVA,那么笔者推荐你继续学习第二本书:李兴华《JAVA Web开发实战经典》。这本书主要自己讲解MVC框架,以及他的前世今生。MVC是J2EE中大多数框架的设计灵魂,所以一定要好好理解MVC的工作流程以及为何要这样设计。深刻的理解MVC的原理,能让你的Java代码通俗易懂,结构清晰,高内聚低耦合。这也是很多C语言开发者搞JAVA时候的痛点,一定不要面向过程好么!
- 前两步学完,理论上来讲你可以去开发Java Web应用了。但是还不够,为何?因为一些大牛们发现,web开发总是关于servlet,filter,listener,其中有大量的可重用代码和大量的配置项。因此有了框架,比如Struts,Spring,SpringMVC,Hibernate,Mybatis。诸如此类。是不是头大了,不过别担心。记得笔者在第二步中说过的话,一定要深刻理解MVC。上面的框架中,你当然不需要全部学习,但Spring是一个例外。笔者建议你弄懂Spring的方方面面,这不是一个容易的任务,笔者自己也在持续学习中。这里,笔者推荐《Spring in Action》。这是一本实战类的书籍,可以让你对项目快速上手。等你对Spring用熟了之后,记得去逐渐理解Spring的源码。再具体的项目中,通常是SSH组合或者SSM组合。
- 上面三步搞完,你就可以参与JAVA WEB的开发了。笔者希望你确保自己完成了前三步的学习,再参与到web开发中。否则我只能祝你遇到个好的队友了。
- 基本招式已经搞定,现在,你可以抽一些时间来提高自己的内功了,对于设计模式入门,笔者推荐《Effective JAVA》机械工业出版社;对于JAVA虚拟机,笔者推荐《深入JAVA虚拟机》机械工业出版社,学完此书,你可以理解诸如下面的代码:
Integer a=1;
再比如为什么使用内部静态类可以实现单例模式等等。然后对于JAVA多线程编程,笔者推荐《JAVA并发编程实战》机械工业出版社。学完虚拟机和多线程,笔者相信你的内功一定大增。
Integer b=1;
Integer c=200;
Integer d=200;
System.out.println(a==b);//true
System.out.println(c==d);//false - 最后回归基础和源码吧。比如那本神书《Java编程思想》。你完全可以不在最后的阶段看,但千万不要把此书作为入门书籍,大牛除外吧。
- 哦对了,关于tomcat,笔者推荐《How Tomcat works》,这是一本绝版书,可以帮助你理解“你的web程序是如何与web容器进行交互的”。
- 至于以后,老兄,让我们携起手来一起探索吧,很期待我们可以因此拥有一段纯洁的革命友谊。
至此,笔者想说的就说完了,如有建议,欢迎讨论。
觉得本文好的话,别忘了关注我哦。