Java程序员2021年应该学习的11项技能

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
简介: Java程序员2021年应该学习的11项技能

image.png作为一名Java开发人员和一个Java博客的作者,我经常收到来自世界各地的Java程序员的请求,询问他们如何提高自己。


过去,我分享了我成为一名更好的程序员的10条建议,这篇文章中的每一条建议仍然适用,但是考虑到这是新的一年,我决定为Java程序员记下新的技巧,以提高自己,增强他们对Java编程的了解,并增加他们对未来职业发展的价值。


因此,不要再浪费时间了,让我们看看2019年我对Java程序员的九个想法。你可以从这些想法中获得灵感来创造你自己的目标。

顺便说一下,各位,在这篇文章中,你不仅会找到要学的东西,还会找到要学的地方,因为我的许多读者经常回到我身边,告诉我他们如何提高某些技能,从哪里开始,等等。


1.学习Java性能优化

在过去的几年里,我参加了50多次高级Java开发人员的面试,我清楚地看到缺乏的一项技能是对JVM内部、GC行为的知识和理解,和Java性能调整。

20210516142134880.png



随着您的Java经验的增长,您成为拥有5 – 6年以上经验的高级Java开发人员,希望你能了解Java基础知识的大局和小细节。


如果你不能描述一个应用程序,或者不知道它为什么慢或者如何让它快,那么你应该读一本关于JVM内部和性能调整的好书,例如斯考特·奥克斯的畅销书《Java Performance the Definitive Guide.》。


我已经读了很多年了,只要有时间,我仍然会参考它。我的目标是今年再读一遍。


如果你更喜欢在线课程而不是书籍,那么我建议你看看了解关于Pluarlsight的java虚拟机系列课程,它解释了内存管理、类加载、安全性和反思。


2. Docker and Kubernetes

您可能已经听到了有关Docker和Kubernetes的嗡嗡声,以及它对DevOps团队的影响。你可能一开始就想到,“啊,还有一项我需要学习的新技术”,但我会说Docker不仅仅是另一项技术,而且它确实是一个游戏改变者。

与Kubernetes一起,它是您可以学习的最重要的工具之一,并将在您的整个职业生涯中一直伴随着您。

如今,无论是大型企业还是小型初创企业,几乎每个开发团队都在使用Docker和Kubernetes。可以肯定地说,如果你现在进入劳动力市场,你很可能会在某个时候重温Docker。

简而言之,无论您是初级Java开发人员还是具有多年经验的资深人员,拥有Docker和Kubernetes知识对于您的职业发展和工作变动至关重要。如果您已经意识到Kubernetes的重要性,并希望在2021年之前学习Kubernetes,那么Docker和Kubernetes: 史蒂文Grider关于Udemy的完整指南是一个很好的入门课程。


20210516142141951.png


如果您喜欢免费资源,例如免费在线课程,那么您还可以查看此免费Docker和Kubernetes课程列表,供Java开发人员开始您的旅程。


3. DevOps (Jenkins)

去年,随着越来越多的公司进入DevOps并采用持续集成和部署,这是我看到很大吸引力的另一个领域。

DevOps非常庞大,您需要学习许多工具和原则,这让许多开发人员不堪重负,但您不必担心。我分享了一个DevOps路线图,您可以按照该路线图以自己的速度学习和掌握DevOps,尤其是Jenkins。

这意味着,如果您是一位经验丰富的Java程序员,并且热衷于管理环境、自动化和改进整体结构,那么您可以成为一名DevOps工程师。

如果你正在寻找一些优秀的资源,那么詹金斯,从零到英雄: 成为一名DevOps詹金斯大师是一个很好的开始,特别是对Java开发人员来说。


20210516142147149.png


4. 每天编码2小时

去年我注意到的另一件事是,随着你经验的增长,你会把时间花在协调、回复电子邮件、成为催化剂、故障排除、指导上,通常是项目经理。


20210516142151956.png


你留下的是编码,这是程序员最重要的技能。


如果你觉得你没有做足够的编码,那么就制定一个每天编码的决议。至少,写一些东西,无论是在你的项目、开源框架、库还是实用程序上。

既然开始是最困难的事情,我建议任何时候你感到阻力,开始阅读和重构代码以获得乐趣。你会喜欢的,在这个过程中,你也会写代码。


你也可以解决破解编码面试中给出的问题,189个编程问题。这不仅可以确保你为面试做好准备,还可以提高你对数据结构、算法和编程逻辑的了解。


5.每月一次分析您的Java应用程序

本技巧与第一技巧有关,该技巧与如何阅读有关JVM内部的好书和(或)加入有关Java性能调优的课程有关。 顺便说一句,仅阅读本书或参加课程是不够的。 您必须将这些知识应用到您的实时项目中。


20210516142157773.png

我建议您至少每月一次对Java应用程序进行概要分析,并花费大量时间来理解和分析结果。


您还可以对Java进程进行堆转储,或者,如果最近发生崩溃,则可以进行该堆转储,并找出哪个对象正在占用您的大部分内存。 您的Java应用程序中是否存在内存泄漏?


原因是什么? 如果其他10万新客户访问您的应用程序,将会怎样? 如果您可以舒适地回答所有这些问题,那么您的知识状况良好。 如果您需要有关解决内存和CPU问题的指导,建议您看一下Richard Warburton的《了解和解决Java内存问题》。


6. 参与编码挑战


20210516142202923.png

这个目标在某种程度上与我们的第二个解决方案有关-每天编写2小时的代码。 让我们面对现实吧,有时候,您的实时项目中没有足够的机会编写代码。

如果您渴望挑战代码,那么没有比参加编程和编码挑战更好的了。


互联网上有许多网站面临编程挑战,使您有机会测试自己的技能,但是TopCoder绝对是最好的。


如果您正在寻找一些艰巨的编程挑战,那么您也可以查看我的优秀网站列表,以练习编码。


7.学习Java网络编程

从采访中我了解到的另一件事是Java开发人员需要改善他们的套接字编程和网络基础。


我从Java网络编程问题列表中提出了许多问题,但是大多数开发人员未能回答其中的大多数问题。


他们中的一些人甚至难以勾勒出TCP和UDP之间的关键区别,我认为这太基本了,无法要求任何具有2–5年经验的Java开发人员。


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


我强烈推荐的一本书是《 Java中的TCP / IP套接字》,第二版,《程序员实用指南》。 它易于阅读,有趣,并且是学习套接字编程基础知识的好方法。


8. Java 12 to 15

在过去的几年中,已经看到了一些重要的发布,其中一个是JDK 12和13。我还没有从JDK 11开始,请忘记12,但这是我要在2021年研究的第一件事。


9. Spring 5.0

2017年Java世界的另一个重要发行版是Spring Framework 5.0。 具有许多令人兴奋的功能,例如 响应式编程模型以及Java 8和9的采用,Spring 5.0的采用将在2019年加速,这就是每个Java开发人员都应该学习它的原因。 如果您需要帮助,那么从Spring 5.0:Guru入门是一个不错的入门。


202105161422108.png


10. Spring Security 5.0

我将在2021年学习的2017年另一个有趣的版本是Spring Security 5.0。 Spring Security 5.0是一个主要版本,他们重写了几个模块并修复了数百个错误。

最有趣的部分是OAuth 2.0模块。


11. Unit Testing

如果您想在2021年成为一名更好的开发人员,那么您应该提高单元测试技能。 不仅是单元测试,还包括一般的自动化测试。 这也包括集成测试。


您可以学习JUnit 5和其他高级单元测试库,例如Mockito,PowerMock,Cucumber和Robot Framework,以将单元测试技能提高到一个新的水平。


Mockito确实非常强大,它允许您通过模拟依赖关系并只关注被测对象来编写用于复杂类的单元测试。


如果您是单元测试的初学者并且想在2021年学习它,那么Udemy的JUnit和Mockito崩溃课程将是一个不错的起点。


概括

这是我的建议! 如果您是具有几年经验的Java程序员,那么您也可以从这份清单中汲取灵感来设定目标。 您可以添加到此列表中的其他内容是学习Android,Docker和Spark,因为这些对于任何Java程序员都是必不可少的。


我有目的地保持这一简单性和可实现性,因为我个人认为小小的成功会带来大的成功。


设定小目标并实现目标比设定大的,不切实际的目标和在开始之前失败要好。


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


相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
18天前
|
Java 程序员
JAVA程序员的进阶之路:掌握URL与URLConnection,轻松玩转网络资源!
在Java编程中,网络资源的获取与处理至关重要。本文介绍了如何使用URL与URLConnection高效、准确地获取网络资源。首先,通过`java.net.URL`类定位网络资源;其次,利用`URLConnection`类实现资源的读取与写入。文章还提供了最佳实践,包括异常处理、连接池、超时设置和请求头与响应头的合理配置,帮助Java程序员提升技能,应对复杂网络编程场景。
42 9
|
25天前
|
XML Java 编译器
Java学习十六—掌握注解:让编程更简单
Java 注解(Annotation)是一种特殊的语法结构,可以在代码中嵌入元数据。它们不直接影响代码的运行,但可以通过工具和框架提供额外的信息,帮助在编译、部署或运行时进行处理。
86 43
Java学习十六—掌握注解:让编程更简单
|
3天前
|
SQL 存储 Java
面向 Java 程序员的 SQLite 替代品
SQLite 是轻量级数据库,适用于小微型应用,但其对外部数据源支持较弱、无存储过程等问题影响了开发效率。esProc SPL 是一个纯 Java 开发的免费开源工具,支持标准 JDBC 接口,提供丰富的数据源访问、强大的流程控制和高效的数据处理能力,尤其适合 Java 和安卓开发。SPL 代码简洁易懂,支持热切换,可大幅提高开发效率。
|
10天前
|
Java 大数据 API
14天Java基础学习——第1天:Java入门和环境搭建
本文介绍了Java的基础知识,包括Java的简介、历史和应用领域。详细讲解了如何安装JDK并配置环境变量,以及如何使用IntelliJ IDEA创建和运行Java项目。通过示例代码“HelloWorld.java”,展示了从编写到运行的全过程。适合初学者快速入门Java编程。
|
1月前
|
存储 SQL 小程序
JVM知识体系学习五:Java Runtime Data Area and JVM Instruction (java运行时数据区域和java指令(大约200多条,这里就将一些简单的指令和学习))
这篇文章详细介绍了Java虚拟机(JVM)的运行时数据区域和JVM指令集,包括程序计数器、虚拟机栈、本地方法栈、直接内存、方法区和堆,以及栈帧的组成部分和执行流程。
31 2
JVM知识体系学习五:Java Runtime Data Area and JVM Instruction (java运行时数据区域和java指令(大约200多条,这里就将一些简单的指令和学习))
|
15天前
|
SQL Java 程序员
倍增 Java 程序员的开发效率
应用计算困境:Java 作为主流开发语言,在数据处理方面存在复杂度高的问题,而 SQL 虽然简洁但受限于数据库架构。SPL(Structured Process Language)是一种纯 Java 开发的数据处理语言,结合了 Java 的架构灵活性和 SQL 的简洁性。SPL 提供简洁的语法、完善的计算能力、高效的 IDE、大数据支持、与 Java 应用无缝集成以及开放性和热切换特性,能够大幅提升开发效率和性能。
|
21天前
|
缓存 前端开发 JavaScript
9大高性能优化经验总结,Java高级岗必备技能,强烈建议收藏
关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。本文介绍了9种性能优化方法,涵盖代码优化、数据库优化、连接池调优、架构层面优化、分布式缓存、异步化、Web前端优化、服务化、硬件升级、搜索引擎和产品逻辑优化。欢迎留言交流。
|
21天前
|
IDE Java 程序员
C++ 程序员的 Java 指南
一个 C++ 程序员自己总结的 Java 学习中应该注意的点。
20 5
|
18天前
|
JavaScript Java 项目管理
Java毕设学习 基于SpringBoot + Vue 的医院管理系统 持续给大家寻找Java毕设学习项目(附源码)
基于SpringBoot + Vue的医院管理系统,涵盖医院、患者、挂号、药物、检查、病床、排班管理和数据分析等功能。开发工具为IDEA和HBuilder X,环境需配置jdk8、Node.js14、MySQL8。文末提供源码下载链接。
|
20天前
|
前端开发 Java API
过时Java技术的退役:这些技能你不再需要掌握!
【10月更文挑战第22天】 在快速变化的技术领域,一些曾经流行的Java技术已经逐渐被淘汰,不再适用于现代软件开发。了解这些过时的技术对于新手开发者来说尤为重要,以避免浪费时间和精力学习不再被行业所需的技能。本文将探讨一些已经或即将被淘汰的Java技术,帮助你调整学习路径,专注于那些更有价值的技术。
30 1