如何在一年时间内全职学习JAVA?
从一个自学狂人的角度,我能给你比较有限但很实用的建议:
1. 如果 .Net 你是刚入门, 建议转学 JavaWeb, 我对学习何种平台并无偏见,而是自学需要大量的参考资料, Java
的学习资料,无论是视频还是电子书都要远多于
.Net,这是个很实际的问题,你可以去电驴上艘一下资料,对比一下便见分晓,我看过网上所有可以找到的视频教程,如果需要推荐,请私信。
2.
自学所需的视频教程一定要成体系,而且每部分最好是完整的,否则,你可能学到某个阶段发现剩下的视频还没有发布(万恶的培训机构都爱玩儿这个伎俩),也可能某个阶段只学了一般发现没有后续视频了,在选择视频教程前,你需要
.Net 或 JavaWeb 完整的学习流程图,根据每阶段寻找对应的视频教程循序渐进。
3. 如果你的英文足够好,在看视频教程的时候一定要搭配英文电子书(文字版的,方便搜索),为什么这么做? 在我看过的多达 50G
的视频教程里,讲课的老师就算技术再牛,也有讲的模糊的地方,甚至讲错的地方,甚至是忽悠你的地方!!这时候,你需要的可能不只是
Google 和 StackOverflow, 你需要与此配套的英文电子书, 首推 Manning 和 O'Reilly
出版的书。
4. 报班的人一般有两个考虑:(1)基本上四个月速成(2)有老师带着做项目,最后还能推荐工作。
既然你决定花一年时间安心学习了, 那就没必要报班了,
因为自学最大的挑战不是技术的难度,而是解决问题过程中的烦躁和寂寞,甚至还有绝望和质疑。
就先说这些吧,需要的话,再补充。
PS: 鉴于很多人都在问怎么个学习路线,我贴个自己的 Java Web 学习路线,仅供参考, 但绝对够找工作的了:
1. Java SE 看传智播客毕向东的(反射那部分搭配着尚学堂马士兵的看),这部分搭配着《Thinking in Java》
做参考
2. Jdbc 看传智播客李勇的(其他老师的忽略), 这部分讲的很全,不用看书。
3. Web 开发基础(Html+CSS+JS)
看传智播客韩顺平的《轻松搞定网页设计(html+css+js)》,讲的一般,做入门可以, 以后工作了还要自学很多, DOM
部分可以参考《dom 编程艺术》,工作了可以深入 JS, 建议参考《Javascript 权威指南》
3.1 学习 Jquery, 可以看北风网李炎恢的,EasyUI 部分可以先不看, Jquery 多参考官方 API
就可以了。
4. Java Web 看传智播客方立勋的(可以参考《Head First: Servlet and JSP》), Ajax
部分看王兴魁的就够了。
5. 轻量级 JavaEE 开发(三大框架:Struts2 + Hibernate + Spring), Struts2 和
Spring 都看黎活明的, Hibernate 看汤阳光的,这部分可以参考《Struts in action》《Spring in
Practice》《Hibernate in action》, 中文版的好像有《Struts 权威指南》之类的书。。
此时,可以试着出去找工作。
6. 学习工作中增值的部分: WebService 、JPA 、Mybatis 等技术, 这个大概8个月后再说。
7. 现在大多数项目都采用构建工具,如 Maven / Gradle / Ivy
等等,这些你很少能够找到教程,能讲清楚的也不多,所以我建议大家看 Manning 出版的 《Gradle in Action
Benjamin Muschko
2014》之类的书,不要以为英文的书会浪费你的时间,事实上,当你习惯看英文资料后,你会节省很多时间,至少不会找乱七八糟的中文资料还搞不清楚怎么回事。
8. 不要以为你学习过三大框架就真的会用了,工作中你需要更多地参考官方文档(当然是英文的),例如 Spring Reference,
这样你就知道很多原理性的东西,能让你用框架更有自信,可以参考我的另一回答:spring有什么缺点吗? 多熟悉 J2EE
的规范,如 IOC,适当了解 Spring 之外的 IOC 框架,如 Guice 等。
9. 工作中不要什么都去自己从头做,有些 Util 代码完全可以使用 Guava
等类库来替代,人家的支持泛型和函数式编程,总比你写的好吧,当然,你可以学习它的源码。
10. 对新技术要敏感一些,但不要一味追新,因为你永远追不上,语言层面的 new feature
你必须要了解,总不能对新特性视而不见吧,你总得知道 JVM 上还有 Scala 和 Groovy
之类的语言吧,强在哪里呢,用起来为啥就按么爽。
11.
重要的永远都是底层和基础,大牛永远都是这么说,站着说话不腰疼,不过确实如此,你需要在工作之余,了解一下常用的算法和理论,你不能指望着不懂
Socket 就直接使用 Netty 那种高度抽象的框架来实现很好的并发。