JAVA学习路径

作者:谢龙

链接:https://www.zhihu.com/question/29581524/answer/44872235
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

现在互联网上资源丰富,Java 学习并不难。贴个 Java 服务端入门和进阶指南,是给我们组新人入门用的,包括了学习目标、需要掌握的技能和参考资料,并规划了学习阶段和时间,希望帮助到题主。
前言

欢迎加入我们。这是一份针对实习生/毕业生的服务端开发入门与进阶指南。遇到问题及时问你的 mentor 或者直接问我。 建议:

  • 尽量用 google 查找技术资料。
  • 有问题在 stackoverflow 找找,大部分都已经有人回答。
  • 多看官方的技术文档。
  • ibm developerworkers 的文章质量整体上有保障。
  • 平时花一些时间在 github 上阅读优秀项目源码。
入门(1-2 个月)
  1. 目标:参与简单的项目开发。
  2. 技能:
    • 掌握 Java。经典的《Java 核心技术:卷1 基础知识》(或者《Java 编程思想》)必看,跳过其中的图形和 applet 章节。习惯查阅 Java API Doc。为了保证代码的质量,《Effective Java》、《Clean Code》和《重构》也需要至少通读一遍。
    • 熟悉 Linux 开发环境和 bash shell。Linux 是我们的开发和部署环境,你最好尽快熟练它。Linux 的基本使用可以通过《鸟哥的Linux私房菜:基础学习篇(第三版)》学习,开发 bash shell 脚本可以参考《Linux Shell脚本攻略》。
    • 掌握开发工具
      • 熟练使用一种 IDE。Intellij IDEA或者 Eclipse 都可以,推荐使用前者。至少熟悉常用的快捷键,会 debug(包括远程 debug)项目。
      • 熟悉一种编辑器。比如 Vim/Emacs/Sublime Text,至少学会搜索/替换/代码补全。
    • 掌握 JDK 以外的常用类库和工具包。JDK 原生 API 在很多场景下使用并不方便。你需要掌握社区贡献的优秀类库和工具包,比如 apache commons、google guava 等,具体可以翻阅 服务端技术选型 的Utility 篇。
    • 掌握 Web 开发框架。我们使用 Spring(或Rose) + Ibatis(或Jade) 开发 web 服务,你需要熟练掌握它们。
    • 学习代码规范。我们大致上遵循 oracle 的 Java 语言编码规范,你可以先阅读并熟悉它。Code Formatting 文件在 git@xxx/coding-standard.git,在编写代码之前,请把它导入到 IDE 中。另外,确认 IDE 已经安装 Findbugs 和 CheckStyle 插件。
    • 熟悉开发流程。我们的开发流程大致如下:功能开发->单元测试->功能测试->Code Review->集成测试->发布。确保你熟悉其中的每个环节。
    • 其他。需要熟练使用版本控制工具 Git(阅读:《Git 权威指南》),以及项目构建工具 Maven(阅读:《Maven 实战》)。另外,在这个阶段可以尝试 TDD 开发。
进阶(2-6 个月)
  • 目标:独立负责某个服务端项目。
  • 技能:
    • 掌握 web 开发最佳实践,掌握 Restful API 设计,理解 Spring 原理。推荐阅读《Spring揭秘》。掌握项目分层、子模块划分。推荐阅读:《J2EE 核心模式》。
    • 掌握 web 架构设计。包括 Http 反向代理,数据缓存,负载均衡,水平扩展和垂直扩展。推荐阅读:《分布式 Java 应用:基础与实践》。
    • 掌握关系型数据库。包括设计 MySQL 表结构,根据业务特点分表分库,基于执行计划的 SQL 分析优化,以及数据库容量规划。推荐阅读:《MySQL 必知必会》、《高性能 MySQL》。
    • 了解 NoSQL。我们大规模使用 Hadoop、HBase、Hive,同时部分项目使用 Redis、Storm。你需要学会这些工具最基本的使用。
    • 学习 web 安全知识。了解 web 前端安全问题。设计安全 web 服务,包括加解密、防伪造、防重放攻击等。
    • 掌握 Http (推荐阅读:《图解Http》、《http权威指南》)、Thrift 等协议。
    • 掌握服务容量规划,性能调优,可靠性保证,以及故障处理。学习容量规划和性能调优知识,梳理业务监控点,熟练使用我们的监控报警系统。推荐阅读:《深入理解 Java 虚拟机》。
    • 其他。设计模式:从项目中学习,有时间可以看看《深入浅出设计模式》、《JDK 里的设计模式》。学习Java Socket 编程与多线程知识,可以看看《Java 并发编程实战》,并翻翻并发编程网的文章。
深入(6 个月-)
  • 目标:分布式系统和中间件开发。
  • 构建知识体系:《大型网站系统与 Java 中间件实践》、《大型网站技术架构:核心原理与案例分析》。
  • 原理与设计:《大规模存储式系统》、《UNIX 网络编程 卷1:套接字联网 API》、《How Tomcat Works》。
  • 学习开源项目:Apache Thrift、Zipkin、Netty、Rose、Jade、淘宝 RPC 系统 Dubbo 等。分析项目中的设计思路。比如,同样是RPC框架,Finagle 和 Dubbo 有什么异同。
  • 其他。根据参与的项目加深学习吧。比如,如果需要写 DSL,可以读一下《领域特定语言》,对 Redis 感兴趣推荐读一下:《Redis 设计与实现》。有两本书,无论做什么项目,都推荐读:《Unix 编程艺术》、《UNIX 环境高级编程(第3版)》。
主要分三阶段来说:入门,进阶程序员,攻城狮思维,每个阶段推荐相关书籍:
java入门书籍推荐:

入门者最需要静下心来系统化的学习知识,但同时也有很多可能与Java本身无关但很重要的疑问。
Head First Java(中文版)(第2版)

head first系列的教材,看起来都特别轻松,图文并茂,简单易懂,适合初学者选择。缺点则是只介绍一些最基础最实用的东西 知识点不够丰富。

Java核心技术 第七版 卷Ⅰ(基础知识)

统全面讲解Java语言的核心概念、语法、重要特性和开发方法,包含大量案例,实践性强,第1章概述了Java语言与其他程序设计语言不同的性能。

Java开发实战经典

书中的代码和案例较多,知识点也比较全面,在实际开发的过程中来讲解一些基础内容,对于新手而言很实用。

Thinking In Java 4(完美高清中文版)

Think in java被誉为“java圣经”。无论你处于什么阶段,每一次阅读都能有所收获。也因此,对于新手而言,这本书毁誉参半,自行斟酌吧。

————————————————华丽分割线————————————————-————

程序员进阶篇:
这一阶段的Java学习者处于高速成长期,需要不断的获取项目经验、掌握更多开发知识。当然,最重要的还是为了成功拿到靠谱的offer。

《Effective Java中文版 第2版》

本书介绍了在java编程中78条极具实用价值的经验规则,每条规则都以简短、独立的小文章形式出现,并通过例子代码加以进一步说明,这些经验规则涵盖了大多数开发人员每天所面临的问题的解决方案。

Java并发编程实战(中文版)

深入浅出地介绍了Java线程和并发,是一本完美的Java并发参考手册。其中并非只讲述了Java的多线程设施,对一般的并发编程的rationale也有相当透彻的阐述

测试驱动开发 by Example

书中不仅以案例的形式呈现了测试驱动开发的原则和方法,而且详尽地阐述了测试驱动开发(TDD)的模式和最佳实践。本书从始至终贯穿了两个TDD项目,展示了如何轻而易举且卓有成效地编写优质代码的技术。

重构_改善既有代码的设计[高清版]

书中给出了70多个可行的重构,每个重构都介绍了一种经过验证的代码变换手法的动机和技术。本书提出的重构准则将帮助你一次一小步地修改你的代码,从而减少了开发过程中的风险。

————————————————进阶攻城狮————————————————-————

java攻城狮推荐学习书籍:

这一阶段的Java学习者已经渐入佳境,沉下心来研究技术点的同时,更多的是关于Java的思考。

企业应用架构模式(中文版)

作者将40多种经常出现的解决方案转化成模式,最终写成这本能够应用于任何一种企业应用平台的、关于解决方案的、不可或缺的手册。

敏捷开发-敏捷软件开发:原则、模式与实践(全)

好的技术书籍的标准是通俗易懂;文字精炼;耐读,有吸引力;有思想性。作者的书写功力有目共睹,而且他的技术修为也绝对无人质疑。因此他写的这本书秉承了他一贯的优势。符合所有好处所具备的条件。

《Java性能优化权威指南》

Java性能优化圣经!主要为Java SE 和Java EE 应用的性能调优提供建议。主要包括以下几方面:性能监控、性能分析、Java HotSpot VM 调优、高效的基准测试以及Java EE 应用的性能调优。

学习过程中精品开发工具推荐:

JDK(Java开发工具包)、SparkJava、jClarity、Eclipse、NetBeans、JUnit.org、IntelliJ IDEA 13.1
posted @ 2017-12-29 13:35  TIMLONG  阅读(281)  评论(0编辑  收藏  举报