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

简介: 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程序员都是必不可少的。


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


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


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


相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
7天前
|
Java
Java基础学习day08-作业
本作业涵盖Java中Lambda表达式的应用,包括Runnable与Comparator接口的简化实现、自定义函数式接口NumberProcessor进行加减乘及最大值操作,以及通过IntProcessor处理整数数组,实现遍历、平方和奇偶判断等功能,强化函数式编程实践。
34 5
|
7天前
|
Java API 容器
Java基础学习day08-2
本节讲解Java方法引用与常用API,包括静态、实例、特定类型方法及构造器引用的格式与使用场景,并结合代码示例深入解析。同时介绍String和ArrayList的核心方法及其实际应用。
50 1
|
8天前
|
Java 程序员
Java基础学习day08
本节讲解Java中的代码块(静态与实例)及其作用,深入介绍内部类(成员、静态、局部及匿名)的定义与使用,并引入函数式编程思想,重点阐述Lambda表达式及其在简化匿名内部类中的应用。
88 5
|
8天前
|
Java
Java基础学习day07-作业
本作业包含六个Java编程案例:1)动物类继承与多态;2)加油卡支付系统;3)员工管理类设计;4)学生信息统计接口;5)USB设备控制;6)家电智能控制。综合运用抽象类、接口、继承、多态等面向对象技术,强化Java基础编程能力。
104 3
|
8天前
|
Java
Java基础学习day06-作业
本内容为Java基础学习作业,涵盖两个案例:一是通过Card类及其子类GoldenCard、SilverCard实现加油卡系统,体现封装与继承;二是通过Shape类及子类Circle、Rectangle演示多态与方法重写,强化面向对象编程理解。
35 1
|
8天前
|
设计模式 存储 Java
Java基础学习day07
本节讲解Java中的final关键字、单例设计模式、枚举类、抽象类与接口。涵盖常量定义、单例写法(饿汉式/懒汉式)、枚举特点及应用场景,以及抽象类与接口的使用与区别,助力掌握核心面向对象编程思想。
68 1
|
13天前
|
Java
Java基础学习day05-作业
本文为Java基础学习第五天作业,通过五个案例练习类与对象的定义、构造方法、set/get方法及成员方法的应用。涵盖女友、学生、教师、手机和电影等类的设计与测试,强化面向对象编程基础。
45 2
|
13天前
|
安全 Java 编译器
Java基础学习day06
本节学习Java继承与多态核心概念:继承通过extends实现,子类可复用父类非私有成员,支持单继承与多层继承,遵循就近原则并可用super调用父类成员;方法重写需满足权限与返回值约束,常用于重写toString等。多态基于继承,实现父类引用指向子类对象,提升扩展性但无法直接访问子类独有方法,可通过instanceof安全类型转换。
78 2
|
14天前
|
存储 Java
Java基础学习day05
本节介绍Java面向对象编程基础,涵盖类与对象的概念、构造器、this关键字、封装、Javabean及static修饰符的使用。重点讲解如何通过类设计对象、实现数据封装与方法暴露,并理解静态成员的特点与应用场景。
51 2
|
14天前
|
Java
Java基础学习day04-作业
本作业包含8个Java编程案例,涵盖数组的定义与遍历、求和、最值计算、去极值求平均、元素倍增、二维数组行和计算及查找指定元素等内容,旨在巩固Java基础语法与数组操作技能。
167 1