复制黏贴自知乎刘欣大神,作为个人的书单与指导路线
原文链接:https://www.zhihu.com/question/19848946/answer/92536822
刘欣 追寻内心的真正兴趣, 让人生不留遗憾。
1206 人赞同

之前写过一篇文章叫《假如时光倒流, 我会这么学习Java》, 希望对你有帮助:

-----------------------------------------------------------------------

回头看看, 我进入Java 领域已经快15个年头了, 虽然学的也一般, 但是分享下我的心得,估计也能帮大家少走点弯路。

[入门]

我在2001年之前是C/C++阵营, 有C和面向对象的基础, 后来转到Java ,发现没有指针的Java真是好简单, 另外Java 的类库好用的让人哭啊。

后来我就看《Thinking in Java》 ,《 Java 核心技术 》, 感觉也不吃力。

如果我之前没学过别的语言,或者半路出家转到计算机行业, 我不会先看上面那两本, 相反我会选《Head First Java》, 这本书非常适合零基础的小白, 读起来轻松搞笑, 不信你看看第一页

但是光看书也挺无趣的,不妨和视频结合着看, 我觉得传智播客的Java基础视频很不错 (唉, 给传智打了个广告), 网上一搜就有, 真搜不到找我吧(QQ 14703250)

注意:视频的好处就是能看到敲代码的过程, 代码是活的, 这点很爽。 如果视频只是按PPT讲编程, 果断扔掉

书也有书的好处,能写成书的, 肯定是作者经过系统化思考,梳理才能形成的东西, 所以系统性比较强。

书还有其他优点, 例如可以随便的翻, 找到重点反复的看。

所以混合着看经典书+优秀的视频 应该是最好的入门

Java 入门, 我不会去上培训班,白白浪费钱 ,自学就够了。

自学过程中如果有实战经验丰富的高人指导一下, 给我绘出路线图, 指出攀登的方向,哪些地方有陷阱, 哪些地方不应该浪费时间, 我的自学就可以减少摸索,少走弯路,

很不幸, 我当年没有遇到, 如果时光倒流, 我会想办法找一个来指导我。

[实践]

软件行业的一大特点就是光看不做永远都学不会,编码不到10万行都不好意思出去打招呼。

所以实践,实践,实践!

在校期间,我还是会尽可能的去找项目做(参见我的另一篇文章《从现在开始丰富你的简历》, 回复“简历”查看) , 实在没找到,也可以先把基础打好

我上大学的时候用的是严蔚敏的《数据结构》, 当时我也把习题都做了一遍,考高级程序员的时候, 成绩非常好。

后来我知道了一本更好的算法入门书《算法》, 如果时光能够重来, 我还是会这本书上提到的所有数据结构和算法用Java 都实现一遍, 课后作业也争取都做一遍。

这是个非常重要的训练,因为我知道, 真的做了, 就会发现工作以后只要不是设计算法, 基本的数据结构没有能难住我的。

【Java SE】

对于Java集合框架, 不但要学会用, 我还会尝试着实现一遍,List, ArrayList, Set ,HashSet, Map ,HashSet 等等, 要是不知道怎么写, 看看JDK的源码就可以了, 那里有最好的老师。

实现一遍能更好的明白面向对象的设计, 接口,抽象类, 具体类的关系, 怎么分离职责,会学习到设计模式中的模板方法, Iterator 等 。

值得一提的是Iterator, 很有趣, 我还清楚的记得那一年自己实现集合框架中 Iterator 的时候的激动心情啊 :-)

在实现Java 集合框架的时候, 可以顺便把泛型也学了, 不学不行,要不然实现不了啊。

Java 世界里,万事万物都是对象, 大家都知道封装,继承,多态, 但是仅仅了解这些只是入了门, 不可能做出真正的面向对象的程序。

有一本经典的书《敏捷软件开发, 原则,模式,实践》,里边详细的讲解了一个薪水支付案例,是迄今为止最好的面向对象设计的例子

我会用Java 把它实现一遍, 真正的体会一下OOD, 了解怎么才能把合适的责任分给合适的类, 什么叫面向接口而不是面向实现编程, 什么是优先使用组合而不是继承。

对于Java线程, 重点还是理解概念, 因为我知道在以后的工作中(除非从事系统级编程) ,自己写线程/线程池的机会是非常罕见的,都被类库,框架给封装好了。所以重点是理解,

看书的话就当然是《Java并发编程实战》 ,一大群大牛写的啊。

对于Java IO, 我觉得架构设计的很优雅,典型的学院派, 可就是不太实用, 打开读取一个文件都得用装饰者模式包装来包装去, 太累了。

项目实战中呢,也就是读取个property 文件, xml 文件。 我还是重点去理解概念和设计吧。

不过自己写个简单的xml 解析器倒是不错。

至于 AWT, Swing , 简单看看就行了, 我不会去深入研究, Java 是典型的服务器端的语言, 开发客户端程序的极少, 你想想, 你用Swing/AWT搞个桌面程序出来, 还得让客户装个JRE才能运行, 是不是有点过分 ? 据我所知,也即是银行的一些应用在用Swing ,AWT了。  有人可能说 Applet, 它曾经流行过, 现在早都没人用了。

所以我不会在Swing和AWT上浪费时间

Java Reflection 看起来没有集合框架,线程,OO等那么耀眼, 但它可是很多框架(SSH) 的基础啊, 先把基础学会,后面的Java EE得用到它。

想真正的学好Java ,不了解Java 虚拟机怎么可能? 《深入理解Java 虚拟机》一定得看,看完的目标就是写个简单的Java 反编译器。

【做个有素养的Java码农】

我记得08的时候, 我的IBM经理说设计模式是必备技能, 不懂设计模式的我们不能要了。

所以设计模式是必学, 其实Java里边用的非常多,简直就是设计模式的活教材, 工厂方法,单例,模板方法, 装饰者,责任链都有体现。

当然我会去先看一下轻松的《Head First Design》, 《设计模式》的作者之一 Eric Gamma 都大力推荐, 绝对不容错过。

又过了几年, 我的IBM经理又说,现在我们默认设计模式大家都会了, 敏捷实践是必备技能 !

所以, JUnit 我得会, 重构我得会, TDD,持续集成这些最最基本的敏捷实践也得知道, 要不然会被人鄙视啊。

作为一个有追求的Java码农, 我写代码的时候要遵循Java 的编码规范,例如类名首字母大写, 报名要小写, 方法名要首字母小写...等等。

作为代码洁癖, 我受不了脏代码, 我会不断的打磨自己的代码,直到它像一个工艺品。

Java 的最佳实践 《effective java》 怎么能错过? 里边满满的全是JDK的作者们总结出来的java 编程最佳用法。

不过翻译的实在是不咋滴, 很多句子都得仔细的琢磨一下才知道什么意思, 所以我打算录一系列视频讲解一下,敬请期待。

【Java EE】

走了这么远, 终于来到Java EE了, Java 不就是写服务器端的Web应用的吗?

我会自己写个Web程序, 可以考虑把上面提到的经典的薪水支付案例改造成Web 版, 用最基础的技术Servlet/jsp/jdbc 。

然后 研究struts, 自己写个简单mvc框架, 在自己的Web 程序中用起来, 这叫吃自己的狗粮

然后研究Hibenete , 自己写个简单的OR mapping框架, 再吃一次自己的狗粮。

然后读一下经典的书《J2EE development without EJB》 , 对,就是Spring 的作者Rod Johnson写的, 它颠覆了大家对于重量级EJB的认识, 开启了新的时代。

有了这本书的铺垫, 自己写个简化的依赖注入也不是难事, 写好后还是在自己的Web程序中用起来, 最后一次吃自己的狗粮。

【阅读代码】

熟读唐诗三百首,不会作诗也会吟

模仿是最好的学习! 多看看大牛们的代码是怎么写的, 潜移默化,自己的武功也能提高。

我身边要是有个好师傅, 跟着他,看着他编程, 提高的该有多快啊。

在学习Java SE和Java EE的同时, 我会读一下这些源代码:

JDK中的 Java Collection 源码 : 老祖宗的东西绝对经典

JUnit 源码 : 看看Eric Gamma 和 Kent beck 是怎么通过模式来创建系统的 (回复"JUnit"查看)

SpringSide : 以Spring Framework为核心的,Pragmatic风格的JavaEE应用参考示例,是JavaEE世界中的主流技术选型,最佳实践的总结与演示。

国人开发的,大力推荐一下。

此外我还是会研究下本世纪初著名的Jive论坛, 虽然非常古老, 虽然源码学院派十足, 但简直是设计模式的大本营, 都是活生生的应用的例子

里边有个用代理模式实现权限控制, 让我记忆犹新。

另外如果有余力的,有兴趣的话, 当然可以阅读Struts, Spring, Hibernate的源码, 甚至参与进去开发了。

如何学习Java ,这是我这么多年来的感受, 也只是我的一家之谈。 欢迎和我交流 

学习编程从来就不是一件容易的事情, 不可能看看视频,看看书就学会, 需要大量的编程和实践。 编程虽然是极为辛苦的脑力和体力劳动, 但其中蕴含的创造的乐趣也是无与伦比的。 希望每个人都能够享受这个过程,乐在其中。

欢迎和我联系:

QQ: 3340792577

微信: liuxinlehan

微信公共号: 码农翻身

“码农翻身” 微信公众号, 由工作15年的前IBM架构师创建,分享好玩有趣的编程知识职场的经验教训, 不容错过。

转载于:https://www.cnblogs.com/blackdeng/p/6121646.html

java提升路线书单(原文自知乎刘欣)相关推荐

  1. 大学生的福音,学习 Java 最强书单推荐,附学习方法

    请肆无忌惮地点赞吧,微信搜索[沉默王二]关注这个在九朝古都洛阳苟且偷生的程序员. 本文 GitHub github.com/itwanger 已收录,里面还有我精心为你准备的一线大厂面试题. 回想起 ...

  2. Java工程师核心书单,阿里大佬看了都说好!

    随便打开一个招聘网站,看看对高级Java工程师的技能要求. 抛开其它的经验能力等等,单纯从技术,或者说知识上来讲,可以发现一些共通的地方. Java基础 计算机基础 数据库,SQL/NoSQL 常用开 ...

  3. 学习java的一些书单推荐

    1. 国内一线的书 说到大型互联网站的建设,我们在世界上也是一流的,比国外那些咨询师写的更深味其中艰辛. <高可用架构(第一卷)> 厚厚的一本,新浪微博TimYang牵头的高可用架构社区, ...

  4. Java后端2017书单推荐

    前言 对于程序员来说,个人感觉最佳学习方式是看书,视频花费时间太长,而博客则不够系统.初学相关领域最好的方式就是找到一本经典的好书,然后啃完它. 经常有网友要我推荐一些Java方面的书籍,这次博主就整 ...

  5. java程序员_哪些书是不可错过的?Java程序员书单分享

    作为后浪程序员,我们要精通一门编程语言,最好的途径就是看书,而这个时候读什么书就变成了最关键的了,靠谱的书籍无疑可以让我们少走弯路事半功倍,今天就来给大家推荐一些Java工程师必备书籍. ​入门篇&l ...

  6. java书籍_还搞不定Java多线程和并发编程面试题?你可能需要这一份书单!

    点击蓝色"程序员书单"关注我哟 加个"星标",每天带你读好书! ​ 在介绍本书单之前,我想先问一下各位读者,你们之前对于Java并发编程的了解有多少呢.经过了1 ...

  7. 阿里P8工程师整理的22本Java架构师核心书单,先收藏起来!

    随便打开一个招聘网站,看看对高级Java工程师的技能要求. 抛开其它的经验能力等等,单纯从技术,或者说知识上来讲,可以发现一些共通的地方. Java基础 计算机基础 数据库,SQL/NoSQL 常用开 ...

  8. 在外包公司从 Java 后端干到安卓开发,你醒醒吧,阿里大师推荐的这份 Java 开发必读书单

    先是工作内容的问题. 当初他应聘的岗位是后端开发,可现实却是他既要写后端,也要写客户端.本着做的多做的广可以学到更多的原则,他并不是非常在意这个问题,边做边学,渐渐地也上了手. 其次是工作量的问题. ...

  9. 一条珍藏多年的计算机书单(文末送书)

    点击获取 15张学习路线导图 3G学习资料 10G计算机书籍 哈喽,大家好,我是一条~ Java学习如逆水行舟,不进则退.一条一路自学过来,踩过很多坑,吃过很多苦. 现在回想起来,当初要是能有一个完整 ...

  10. 老万的java技术书单:你还在吃快餐吗?

    简介 技术无涯,编码有道 大家好,我是多年java开发老兵,非大牛程序猿一枚,人称:老万. 开通公众号很久了,一直担心自己没有时间和精力坚持下去,同时也深恐自己的水平还不够,今年痛定思痛,觉得还是要拼 ...

最新文章

  1. hdu A + B Problem II(大数相加,数组实现)
  2. nagios新添加服务有时显示,有时不显示问题解决
  3. JAVA面试要点010---重入锁_ReentrantLock 详解
  4. java 类变量 赋值_Java 中类变量,实例变量,局部变量的赋值
  5. mysql显示nan_Python将dataframe连接到MySQL时出现NaN[mysqlconnector]
  6. 微信小程序获得微信头像和昵称
  7. WEB标准 基础(一) 到底是什么?
  8. java企业级开发规范_“华为云企业级Java编程规范”学习笔记
  9. 计算机组成原理袁春风百度云,计算机组成原理[袁春风]chap32.pdf
  10. 用html页面制作开关,自己做了几个可以直接套用的 HTML5 小开关
  11. #留言板(五)#留言板界面
  12. POJ1753 Flip Game
  13. 50种编程语言打印hello world
  14. PHP 生成随机号段的电话号码,PHP手机号正则(多号段)
  15. 物联网 长连接 服务器_为什么物联网还有很长的路要走
  16. 行业动荡, 犹如浮萍
  17. Neurosynth package安装及使用
  18. 算法笔记——15个瓶子,4只老鼠,测试哪瓶有毒
  19. 基于Android的掌上校园应用设计与实现(论文+程序源码+ppt答辩)
  20. php显示时间秒针走,Android_TextView显示系统时间(时钟功能带秒针变化,我们开启一个线程,线程每隔 - phpStudy...

热门文章

  1. gantt图 classDiagram图应用举例 南北朝更迭图 南北朝帝王关系类图
  2. Java 架构师是怎样练成的
  3. UI设计常用软件有哪些?
  4. 计算机再带word打不开,电脑word文档打不开怎么办(附:4种解决办法)
  5. 标准盒子模型和怪异盒子模型
  6. 后台运行shell命令eog,并用pkill关闭
  7. 职称最新消息:2022年开始湖北全面实行职称电子证书
  8. 微信公众号排版指南(全)
  9. 让传感器数据在三维地图上显示,更直观,更震撼!
  10. QT实现打地鼠小游戏