JAVA 开发者应该在 2018 年学习的 9 件事 < 译 >

本贴最后更新于 2250 天前,其中的信息可能已经水流花落

首先,祝大家新年快乐!是时候开始为新的一年编制计划、设定目标,寻找实现目标解决方案写点什么了。
作为一名 JAVA 开发者和 JAVA 博客作者,我经常收到来自全球各地 JAVA 开发者关于如何提高自身技能的问询。
在过去,我已经分享了如何成为一个更好的程序员的 10 个小技巧,并且这篇文章中的每一个小技巧都是真实的,但是鉴于这是新的一年,我决定为 Java 程序员提供新的解决方案来改进自己,提高他们对 Java 编程技能,并为未来职业成长增加价值。

所以,不要浪费更多时间,下面来看看我关于 2018 新一年 Java 程序员应该学习哪些东西的想法。您可以从这些想法中获得灵感,创建自己的目标和解决方案。

学习 Java 性能调优

在过去的几年中,我面试了 50 多位高级 Java 开发人员,而我清楚看到他们普遍存在一个问题,就是对 JVM 内部,GC 行为和 Java 性能调优缺乏理解和经验。
Alt text
在 2018 年学习 JVM 体系结构,随着您的 Java 经验的增长,您将成为拥有超过 5-6 年经验的高级 Java 开发人员,希望您了解 Java 基本原理的全貌和小细节。

如果你不能分析一个应用程序,或者不知道为什么它很慢,或者如何使它变得更快,那么你应该阅读一本关于 JVM 内部和性能优化的书,例如 Scott Oaks 的最佳销售者 Java Performance 权威指南《Java Performance the Definitive Guide.》。

我已经阅读了好几年了,每当我有时间的时候仍然会提及它。我的目标是今年再读一遍。

如果您更喜欢网上课程而不是书本,那么我建议您阅读了解 Pluarlsight 上的 Java 虚拟机系列课程 Understanding the Java Virtual Machine,它解释了内存管理,类加载,安全性和反思。

每天编码 2 小时

我注意到的过去一年正在发生的另一件事情,随着你经验的增长,你花费大量时间在协调,回复电子邮件,故障排除,正在变成项目经理一类的人。

除此之前的编码,才是程序员最重要的技能。
Alt text

如果你觉得自己没有做足够的编码,那么每天都要做一个解决方案来编码。至少,写一些东西,不管是你的项目,开源框架,类库还是实用程序。

由于开始是最困难的事情,所以我建议,只要你感到阻力,就开始阅读和重构代码以获得乐趣。你会喜欢的,在这个过程中,你也会写代码。

你也可以通过学习 Cracking the Coding Interview, 150 Programming Questions 解决在编码过程中遇到的问题。这不仅可以确保您已经准备好面试,还可以提高您对数据结构,算法和编程逻辑的了解。

每个月一次优化您的 Java 应用程序

选择一本好书作为学习 JVM 内核及性能调优的第一个解决方案。我推荐这本书 profile your Java application。当然,仅仅靠读这本书是不够的。你必须在你的实际项目中应用这些知识。

我建议你至少每个月对 Java 应用程序进行一次调优分析,花费大量的时间来理解和分析结果。

您也可以使用 Java 进程的堆转储,或者如果最近发生了崩溃,那么将堆转储找出哪个对象占用了大部分内存。Java 应用程序中是否有内存泄漏?

原因是什么?如果另一个 100K 新客户访问您的应用程序会发生什么?如果你能够舒适地回答所有这些问题,那么你的状态良好。如果你需要一些关于解决内存和 CPU 问题的指导,我建议你看一看 Understanding and Solving Java Memory Problems by Richard Warburton。

参与编程挑战

Alt text
这个目标与我们的第二个解决方案相关-“每天编写代码 2 个小时”。让我们面对现实吧,有时候,你实际项目中没有足够的机会去编码。

如果您正缺少一些富有挑战性编程的机会,那么没有比参与编程挑战活动更好的解决方案了。

在互联网上有许多网站承办编程挑战,并给你机会来测试你的技能,其中 TopCoder 是最好的。

如果您正在寻找一些艰难的编程挑战,那么您还可以查看我的良好网站列表来练习编码。

在 Java 中学习网络编程

我从面试人员那里学到的另外一件事是,Java 开发人员需要改进他们的 Socket 编程和网络基础。

我从我的 Java 网络编程问题列表中提出了许多问题,但大多数开发人员都无法回答大部分问题。

他们中的一些人甚至很难概述 TCP 和 UDP 之间的主要差异,我认为这是太基本,不能问任何 2-5 年经验的 Java 开发人员。

如果您觉得您没有足够的机会学习 Java 编程,或者您不需要,因为您是使用 JSP,Servlet 和 JSF 的 Java Web 开发人员,那么我建议您阅读至少一本好书 Java 网络,NIO 和 Socket 编程。

我强烈推荐的一本书是 TCP/IP Sockets in Java, Second Edition, Practical Guide for Programmers。这本书中学习 socket 编程的基础知识很容易阅读,而且还有趣。

Java 9

2017 年出现了几个大的版本,其中一个是 JDK 9.我还没有从 JDK 9 开始,但是这是我在 2018 年要研究的第一件事情。如果你想学习新的功能例如 Jigsaw,Reactive Streams,API 增强等,那么 Java 9 MasterClass 就是一个很好的开始。

Spring5.0

Spring 2017 是另一个 Java 世界的大发行版本。有了许多令人兴奋的功能,例如响应式编程模型和采用 Java 8 和 9,Spring 5.0 的采用将在 2018 年加速,这就是每个 Java 开发人员都应该学习的原因。如果你需要一些帮助, Spring 5.0:Beginner to Guru 是一个很好的开始。

Spring Security 5.0

2018 年另一个有趣的发布是 Spring Security 5.0。Spring Security 5.0 是一个主要版本,他们重写了几个模块并修复了几百个错误。最有趣的部分是 OAuth 2.0 模块。不幸的是,目前学习 Spring Security 5.0 的资源并不多,但幸好 Eugen 更新了 Learn Spring Security 以覆盖版本 5.0,并在 OAuth 2.0 上增加了一个新模块。

单元测试

如果你想成为 2018 年更好的开发者,那么你应该在你的单元测试技能上下功夫。而不仅仅是单元测试,还包括自动化测试。同样还包括集成测试。您可以学习 JUnit 5 和其他高级单元测试库(如 Mockito,PowerMock,Cucumber 和 Robot),将您的单元测试技巧提升到新的水平。Mockito 非常强大,可以通过 Mock 依赖关系并专注于测试对象来编写复杂类的单元测试。如果你是单元测试的初学者,并希望在 2018 年学习,那么来自 Udemy 的 JUnit 和 Mockito Crash Course 是一个很好的起点。

总结

这是我的个人建议!如果您是一位拥有多年经验的 Java 程序员,那么您也可以从这个列表中获取灵感来设定您的目标。您还可以添加到这个列表中的其他一些东西是学习 Docker 和 Spark 等等,因为这些对于任何 Java 程序员都是必不可少的。

我有目的地让这个 list 保持简单和可实现,因为我个人认为,小的成功导致了大的成功。设定小目标并达成目标比制定大而不切实际的目标并在开球前失败要好。

你还在等什么?写下新年的展望,并与我们分享。在今年年底,你可以回到这里,告诉我们你取得了多少成就。

英文链接

  • Java

    Java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 Sun Microsystems 公司于 1995 年 5 月推出的。Java 技术具有卓越的通用性、高效性、平台移植性和安全性。

    3165 引用 • 8206 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...