java路线图

在网上看到很多关于java入门的问题和指导。不过大多都是基于编程角度或者是仅仅为了编程。对于有志于程序员职业的爱好者来说,完整的全局观还是比较重要的。下面翻译了外网一位长期java工作者的文章,希望对大家Java学习有帮助。
我从许多读者那里收到的要求之一就是创建Java开发人员路线图。由于Java是我的专长,因此创建Java开发人员路线图不是问题,但是由于时间有限,我花了更长的时间来创建一个Java开发人员路线图。无论如何,我终于准备好与您分享我的Java开发人员RoadMap。该路线图包含了我多年的经验以及成为Java专家的通畅路线。它回答了许多紧迫的问题,例如Java开发人员应该学习哪些技术? 哪些工具使您成为更好的Java开发人员?而且,Java开发人员必须绝对学习哪种框架

我尝试使用此路线图的一件事是,为了使曝光时间尽可能短,避免提及许多替代方法,尤其是在涉及库和工具时,并坚持使用行业标准的工具和库。
我将其简化以使大多数人都可以遵循它,并且只包含必要的内容,但是如果有足够的愿望,我正在考虑发布Java开发者RoadMap 2.0,以添加一些高级的东西,例如JVM内部结构,性能分析, Java 9模块,Cloud Native Java,不同的云平台(例如AWS,GCP或Azure)以及更高级的工具(例如Chef for DevOps)等等。


任何Java开发人员的必备技能
1. Git&Github
最受欢迎的版本控制系统之一。没有Git就不可能再生活了。您可以上查看 《 Git教程》。
2. Linux
不仅仅是Web开发人员,对于任何程序员而言,Linux命令行都非常非常重要,我强烈建议您花一些时间来学习它们。您可以使用这些免费的Linux课程 来开始学习Linux。
3.数据结构和算法
这些是任何程序的组成部分,对算法和数据结构的充分了解对于您的下一份工作或在当前情况下表现出色至关重要。
您至少应该熟悉基本的数据结构,例如数组,链表,哈希表,二叉树,队列,堆栈和图。
如果您知道Trie,B-Tree,AVL树之类的高级数据结构,那就好了。但是,如果您不知道,那么我建议您参加一门综合课程,例如“ 数据结构和算法:使用Java深入学习”,该课程将教您所有这些基础知识。
4. HTTP / HTTPS
HTTP协议是Web的基础,并且Web开发人员必须具备HTTP和HTTPS的良好知识。7
5计算机科学基础
如果创建的全球应用程序以世界上许多不同的语言显示信息,那么您应该对字符编码有所了解。它基本上告诉您的浏览器如何显示数据。
6.设计模式
毫无疑问,每个程序员都应该了解Git和Github,因为它们是版本控制和代码存储库的标准。如果您想了解和掌握Git和Github上,你可以检查这个列表的书籍和课程学习设计模式。


完整的Java开发人员路线图
现在,让我们一起探索这个Java开发人员路线图,并找出可以学习哪些工具,框架,库,API。

现在,让我们一起探索这个Java开发人员路线图,并找出可以学习哪些工具,框架,库,API。

1.工具

工具部分分为不同的部分。首先,您的IDE是您的主要工具,它几乎可以完成您所要求的一切,例如编译,运行,调试,分析,测试,比较文件和代码,重构等等。
第二部分是构建工具,您需要它来构建和部署Maven和Gradle之类的项目。任何人都足够了。我刚刚列出了ANT,但这是针对旧项目的。对于所有新的Java项目,更喜欢Maven或Gradle。
而且,最重要的第三部分包括Docker和Kubernetes等容器 ,Jenkins和TeamCity等CI / CD工具以及Ansible等基础设施自动化工具。
如果您有兴趣学习这些工具,这里有一些有用的课程来学习构建工具和IDE。

· 面向Java开发人员的5门学习Apache Maven的课程

· 5门学习IntelliJIDEA的课程

· 5门免费课程,学习Eclipse IDE

· 学习Docker和Kubernetes的5大课程

· 学习Jenkins CI / CD的前5门课程

· 学习Ansible服务器自动化的5大热门课程

2. JDK API

下一个要学习的重要事情是JDK API,这对于任何Java开发人员来说都非常非常重要。这是一个很大的部分,这就是为什么将其划分为诸如Java Collections框架,Java Concurrency,Java IO和Java 8 API之类的核心领域的原因,让我们对其进行探索

2.1 Java集合框架

这是每个Java开发人员都应该学习的最重要的Java API之一。该API在类似Java的链表,集合,堆栈,队列,哈希表,优先级队列等中提供了标准数据结构的实现。
至少您应该了解所有日常对象,例如ArrayList,HashMap,HashSet, LinkedHashSet,TreeSet等。它们每个都有其不同的属性,例如ArrayList是可以增长的动态数组,HashMap是哈希表的标准实现,并且可以用于存储键值对。
同样,HashSet是一个设置实现,不允许重复的元素。我强烈建议您查看 Java基础知识:集合 Richard Warburton在Pluralsight上开设的课程,以深入学习Java Collection Framework。

 

 

2.2 Java并发

在Java Collections之后,Java中下一个最关键的API是关于多线程和并发的,我坚信,如果您想成为一名合格的Java开发人员,必须对Java Concurrency API有扎实的理解和掌握。
您不仅应该对诸如线程,可运行,对象锁定和同步之类的基本概念有深入的了解,而且还应该熟悉诸如死锁,活动锁,争用条件以及如何处理它们的概念。
您还应该了解高级Java概念,例如在Java 5及其后续版本中添加的同步器,我的意思是CyclicBarrier,CountDownLatch,Phaser和CompleteableFuture等,以及Futures,以及如何在Java中执行异步操作。
我知道,这是很多东西,这就是为什么我建议您加入深入的课程,例如Heinz Kabutz的Java Concurrency in Practice捆绑包,Java Champion,以及有关并发和设计模式的权威。这门课程有点贵,但是您将深入学习更多的概念,这完全值得您花费时间和金钱。

 

 

2.3 Java IO

我采访了100多个Java程序员,并且注意到一种模式。与Java Collections和Java Multithreading API相比,他们对Java IO和NIO API的了解很少。我可以理解,很多人花费大量时间来学习这两个API,但是您不能忘记这个关键的API。
如果必须编写真实的核心Java应用程序,则需要使用包中的File,InputStream,OutputStream,Reader和Writer之类的类,这是Java IO API的核心。同样,您还需要从java.nio了解ByteBuffer,FileChannel,Selector和其他关键类。API,如果要编写基于套接字的应用程序。
不幸的是,关于教授Java IO和Java NIO API的资源并不多,但是Complete Java Masterclass 是掌握此API的绝佳资源。在本课程中,您将从此API中找到很多基本概念。

 

 

2.4 Java 8功能

现在,下一个也是另一个必需的API(Java程序员)应该学习的是Java 8功能,它已经完全改变了如今Java的编码和编程方式。要在2020年成为Java开发人员,您必须知道如何使用Lambda表达式,Stream API,Optional类和新的Date and Time API。
如果不了解这些API,那么在2020年编写Java应用程序将非常困难。现在,大多数库也停止支持低于Java 8的版本,这意味着您必须现在就学习Java 8功能。自Java 8发布以来已经有5年了,所以您几乎没有任何借口。
在学习Java 8功能时,市场上有许多出色的资源。不过,如果您已经了解Java,建议您选择只关注Java 8功能的资源,例如Pluralsight 上Java 8 的新功能课程。这样,您可以立即学习Java 8。

 

 

尽管Java 8功能对于Core Java开发人员是必不可少的,但如果可以的话,请学习从Java 9到Java 13引入的所有其他新功能,例如模块,用于局部变量的var,用于集合的静态工厂方法,文本块,Switch中的String以及许多更多。如果您需要资源,可以查看此课程列表以了解 2020年所有新的Java功能。

3.框架

关于Java的最好的事情是它拥有一个充满活力的生态系统,这意味着几乎所有东西都有很多框架和库。通常,我不建议Java开发人员在需要在项目中使用它之前就学习一个框架。仍然有一些框架和库,我相信每个Java开发人员都应该知道,例如Spring,Spring Boot,Hibernate,Log4j,JUnit等。

3. 1个Spring框架

如果您想在2020年成为Java开发人员,强烈建议您先学习Spring Framework。这是最流行的Java框架之一,从字面上看,过去五年来我工作的几乎每个Java应用程序都使用此框架。
Spring Framework鼓励编写简洁的代码,通过为您提供诸如依赖注入和控制反转之类的功能,易于测试和维护。它还具有用于大多数日常任务的丰富API,这就是每个Java开发人员都应该学习Spring框架的原因。
而且,如果您想学习Spring框架,没有比Spring Framework 5:Beginner to Guru更好的课程了。它涵盖了Spring 5,这是Spring 5的最新版本,并且以比其他任何课程都更加动手的方式教授Spring。

 

 

3.2休眠

我建议每个Java开发人员都学习的第二个框架是Hibernate,它基于JPA(Java持久性API)。准确地说,Hibernate早于JPA,但是由于JPA是用于在Java中实现持久层的标准API,因此Hibernate会实现它。
现在,为什么要学习休眠?好吧,因为您将使用的大多数Java应用程序都将与数据库进行交互,并且使用JDBC且没有像Hibernate这样的适当框架来处理Java中的数据库是一件非常痛苦的事情。
它提供了一些诸如开箱即用的缓存和事务之类的基本功能,这意味着您有更多的时间专注于应用程序逻辑,然后在应用程序中实现缓存。这严重提高了Java应用程序的性能,这是迄今为止使用Hibernate的最重要的理由。
现在,在学习Hibernate时,市场上有很多可用的资源,但是我更喜欢Spring&Hibernate初学者课程,因为您可以用一块石头杀死两只鸟,您可以在一堂课中同时学习Spring和Hibernate。而不是为他们参加单独的课程。

3.3 spring boot

这是我建议每个Java开发人员在2020年及以后学习的另一个框架。Spring Boot继承了Spring的简化哲学,并使其易于使用Spring本身。就像Spring使创建Java应用程序更容易一样,Spring Boot使创建基于Spring的Java应用程序变得更加容易。
自动配置等功能消除了与配置Spring应用程序相关的大部分麻烦。同样,入门POM功能将常用的依赖项分组为简单的可重用POM。
现在,如果您想学习Spring Boot,我强烈建议您学习100 Steps课程中的Learn Spring Boot课程。它是最好,最新的工具之一,还提供了Spring Boot开发人员需要了解的日常操作的分步指南。

 

 

3.4 MicroProfile,Micronaut和Quarkus

虽然学习Spring Boot和Spring Cloud足以用Java开发微服务,但是您可以探索几个更高级的框架,例如Eclipse Microprofile,Micronaut和Quarkus。
3.4.1 Eclipse Microprofile
这是一项旨在针对微服务架构优化Enterprise Java的计划。它由Eclipse驱动,Eclipse是Java的领先组织之一,并且是流行的Eclipse IDE背后的公司。Eclipse of MicroProfile的目标是定义用于构建微服务的标准API,并在多个MicroProfile运行时之间提供可移植的应用程序。Eclipse的Microprofile的当前版本的3.2,这是一个有用的Java框架,以学习在2020年
3.4.3 Micronaut
这是您可以在2020年学习的另一个Java框架。Micronaut是基于JVM的现代全栈框架,用于构建模块化,易于测试的微服务和无服务器应用程序。它是一个多语言框架,允许您使用Java,Kotlin或Groovy创建应用程序。Micronaut的一些关键要点是减少启动时间,超快的吞吐量和最小的内存占用。
3.4.3 Quarkus
Quarkus是为OpenJDK HotSpot和GraalVM量身定制的Kubernetes本机Java堆栈,它是从最佳Java库和标准中精制而成的。Quarkus为GraalVM和HotSpot量身定制您的应用程序,从而获得了惊人的快速启动时间和极低的RSS内存(不仅仅是堆大小!)。
它还使用称为编译时启动的技术在容器编排平台(如Kubernetes)中提供即时可伸缩性和高密度内存利用率。在为Quarkus开发应用程序时,也可以同时使用熟悉的命令式代码和非阻塞式反应式。
简而言之,这是Java开发人员创建应用程序的最佳平台之一,值得在2020年学习。

 

 

4.测试

测试是任何Java开发人员的一项基本技能,尤其是单元测试,集成测试和自动化测试。至少,每个Java开发人员都应该熟悉JUnit和Mockito,这两个是最受欢迎的单元测试和Mock库。
如果您知道这两个并知道如何使用它们来有效地创建单元测试,那么与没有它们相比,您将是一个更好的Java开发人员。
还存在更高级的库,例如用于业务驱动的测试的Cucumber,用于集成测试的Robot Framework,但没有JUnit的替代品,您将始终需要它。
当涉及到一个模拟库时,您有两个选择,例如PowerMock,Mockito和EasyMock。尽管如此,我还是强烈建议您学习Mockito,因为它是一个庞大的库,并且许多Java开发人员和公司也在这样做。它正逐渐成为在Java中创建模拟对象的标准库。
如果您想学习JUnit和Mockito,我已经分享了很多资源,例如书籍和课程,您可以检查这些资源以了解更多信息。

5.实用程序库

Java的真正功能在于其充满活力的开源库生态系统。您会发现从Java日志到机器学习,从发送HTTP请求到解析JSON等等,库几乎可以完成Java的所有工作。
除此之外,Java还幸运地拥有实用程序库,例如Apache Commons和Google Guava,这两个库有效地补充了JDK库。我还为Java开发人员共享了20个Java API和库的列表。
我建议您仔细检查一下清单,很可能您已经是清单的一半,但是如果您不学习它们,它们将非常非常有用,可以帮助您编写更好的Java程序并更快地交付。
这就是有关2020 Java开发人员路线图的全部内容 。

这是在2020年学习Java并成为更好的Java开发人员的绝佳资源。我将其简化以使大多数人都可以遵循它,并且只包含重要的内容,但是如果有足够的愿望,我正在考虑发布Java Developer RoadMap 2.0以添加一些高级的东西,例如JVM内部结构,性能分析,模块,Cloud Native Java,容器等。

 

原文获取可关注公众号 “程序员开发入门” ,输入“java路线图”

 

Java开发人员路线图​www.maiyewang.com

猜你喜欢

转载自www.cnblogs.com/cppentry/p/12751362.html