Java 书籍推荐

2019-01-14 19:25:19 +08:00
 tail2

题主今年大四, 计算机专业,找了一份 java 后端开发的工作, 明年毕业入职, 想在入职前给自己充充电。

题主小白一只, 跟着慕课网的 java 职业路径看了前三部分, 最后的框架部分还没看完。 但是觉得视频讲的不一定深入, 而且里面有的知识好像有点过时比如 jsp。

在知乎上搜索有个大神推荐了下面的书单:

java 核心技术

java 编程思想

算法 4

敏捷软件开发原则模式与实践

java 并发编程实战

深入理解 java 虚拟机

Head First 设计模式

effective java

J2EE development without EJB

买之前想问问大家觉得这些书怎么样, 有哪些值得一看, 哪些不太好?

大家如果有推荐的书 或是视频 或是其它渠道的学习方法与心得 还请与我分享一二, 感激不尽~~~

5161 次点击
所在节点    程序员
26 条回复
Mistwave
2019-01-14 19:31:13 +08:00
建议楼主优先看 Java 核心和算法第四版 这个算基础
然后可以辅以 Spring Boot 实战 敲一点代码
接下来才是进阶,这部分完全可以工作后再看:jvm/effective java/设计模式
bajie
2019-01-14 19:35:31 +08:00
当年我自学 js 的时候,被知乎大神推荐过 js 权威指南,看得我是头大如斗,一度怀疑自己的智商,后来还是看高程三才入门,所以一开始你千万别选那种可以当字典的书来看
tail2
2019-01-14 19:55:58 +08:00
@Mistwave 非常感谢
tail2
2019-01-14 19:58:22 +08:00
@bajie 是, 看着还有这么多没涉及的知识有些恐慌
xiaoidea
2019-01-14 20:21:48 +08:00
个人愚见,从初级 java 进阶第一本应该看的书应该是《 java 并发编程实战》
jeffersonpig
2019-01-14 20:34:34 +08:00
@bajie js 跟 java 不是同一个东西吧?
tail2
2019-01-14 20:40:42 +08:00
@xiaoidea 好哒, 谢谢😜
tail2
2019-01-15 08:41:55 +08:00
咋收藏的比回复的还多···
Narcissu5
2019-01-15 08:57:22 +08:00
不同意一楼,我认为对于新手来说核心技术并不重要,能出东西才是第一位的

首先就是《 Effective Java 》,新人能写出规整的代码绝对会让人眼前一亮的,先把代码写好了写工整了,其它的才有的谈。
aaronysj
2019-01-15 09:29:21 +08:00
先看一遍,工作一年再看一遍,工作两年再看一遍。
bajie
2019-01-15 10:21:29 +08:00
@jeffersonpig 我只是举例而已,编程思想这本书不就和 js 的权威指南差不多,通篇各种概念,和字典差不多吗
xiaowangge
2019-01-15 11:31:57 +08:00
shijingshijing
2019-01-15 11:49:03 +08:00
@Narcissu5 可拉倒吧,我这个写了 N 年 c 和 c++的看 effective java 有些都整不明白,你一上来就推荐这个。这本书适合写了一段时间 java 想提高自己的编码和设计水平的 java 程序员看,里面的东西其实是最佳实践,绝不能一上来就看,看也看不懂。里面提到的工厂模式,订阅模式要有设计模式的基础才能知道为什么这种情况在 java 里面用这个模式最合适。

我建议新手还是 head first java 看起来,然后 Think in Java (有点老了),然后开始实战积累经验,做了几个项目后,边做边看设计模式、jvm、并发,然后进一步深入 jvm 是怎么实现的,effctive java,concurrent practice 那本。

算法其实不需要了解很深入,链表,哈希表,二叉树,字符处理等基础的就够了,最短路径,红黑树,动态规划根本不需要看。
shijingshijing
2019-01-15 11:55:25 +08:00
我个人认为 c 转 c++再转 java 每次都需要突破。

从 c 到 c++主要是面向过程到面向对象的思想转换;
从 c++到 java 主要是从面向特定机器编程模型到面向通用机器的编程模型,所以才需要了解 GC 和 jvm,其实学习 jvm 某种程度上相当于重新撸一遍 x86 和 ARM。
micean
2019-01-15 14:00:55 +08:00
个人觉得的顺序是
1. 语法
2. maven+spring+常用第三方 lib
3. 常用的 map 和 collection+并发
4. 字节码+jvm

设计模式在自己写了几年代码之后自然就领悟了
Narcissu5
2019-01-15 14:01:37 +08:00
@shijingshijing 《 Effective Java 》在 google 是当作编码规范来用的,编码规范这种东西能有多难?

我觉得可能你受 C++的影响太深了,C++的 OO 是残废的,实际上如果你真的用 OO 的方式来写代码你就会发现 EJ 里面写的都是些不言自明的东西。有或者我们看的不是一本 EJ。。。。
shijingshijing
2019-01-15 16:03:23 +08:00
@Narcissu5 拜托你先弄清楚 coding standard 和 best practice 的区别再说好么?二者有重叠但绝不是一回事好么?实现一个项目有多种方法,根据自身实际情况,针对某种场景,找出最适合的实现方法这个叫 best practice 好么?不是强制性的,但这样做是兼顾可扩展性,可维护性,系统性能等多方面的出的最佳方案。coding standard 很多都是强制性的,比如命名规则,注释方式。

c++不是残废而是给你选择太多了,新手上来就像小孩子逛糖果店这个很好那个也不错,最后弄出来的东西就可能出现有的地方发育的非常完美,但有的地方烂的流脓(最典型的就是内存泄漏)。Java 把某些方面限制死了,然后针对一些场景进行了某种折衷处理,带来的好处是能在总体上保持某种程度健康( GC 和 jvm )。

我始终认为真正会的人用 c++和 c 写出来的东西是优雅的,让他们去用 java 写反而难受。比如 linux 下的那些小工具,还有 Adobe 全家桶,Firefox 系列这种生产力工具。
tail2
2019-01-15 16:39:33 +08:00
@aaronysj 希望自己能做到💪
tumi9527
2019-01-15 16:40:00 +08:00
没有编程经验,head first java,有经验,核心一,先入门再说,然后看个框架,做个小网站啥的,之后在看设计模式之类
tail2
2019-01-15 16:41:49 +08:00
@micean 感谢🙇‍

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/527009

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX