21CTO导读:
本文提供的成长路线图将包含如何成为Java专家的最佳成长曲线。它回答了人们以下的问题:
1)Java开发人员应该学习哪些技术?
2)哪些工具是最好的
3)Java开发人员需要学习哪些框架?
此路线图的目的之一是让人们既有学习效果,时间也尽可能地缩短。避免许多模棱两可的方法,尤其是在涉及库和工具时,坚持使用行业标准的工具和标准库。
另外我们将路线图描述得尽量简洁,以便大多数人都可遵循,因此本文只包括了一些基本内容。
我们会推出后续的Java Developer Roadmap 2.0,它会添加一些高级功能,例如JVM内核解析,配置文件管理,模块化,Cloud-Native 云原生,容器(Docker和Kubernetes)等内容。
顺便说一句,不用完全了解此路线图上的内容也能成为优秀的开发人员。如果你不想这样做,当然也无需认真看待,但是可以将此路线图做为起点来指导自己的学习。
让我们开始吧。
Java开发人员的必备技能
现在,让我们一起探讨这个Java开发人员路线图,并找出应该学习哪些工具,框架,库和API。
1.工具
路线图中的工具部分由两个主要部分组成。
首先,IDE是主要工具,它可以满足程序员的所有需求,例如编译,运行,调试,分析,测试,文件比较和代码管理,重构等。
第二部分是构建工具,用它来构建和部署项目,例如Maven和Gradle,它们任何一个的设计都很棒。刚刚还想列出ANT,但它是针对旧项目的。对于所有新的Java项目,人们更喜欢Maven或Gradle。
2. JDK API
下一个要学习的重要事情是JDK API,对于大多数Java开发人员来说都非常重要。这是一个很大的部分,这就是为什么将其划分为Java Collections框架,Java Concurrency,Java IO和Java 8 API等核心领域的原因。
2.1 Java集合框架
这是每个Java开发人员都应该学习的重要Java API之一。该API提供了Java中标准数据结构的实现,例如链表,集合,堆栈,队列,哈希表,优先级队列等。
你至少应该知道Java所有的日常用品一样 ArrayList, HashMap, HashSet, LinkedHashSet, TreeSet,等,它们各自有自己的属性。例如, ArrayList 是一个可以动态增长的数组, HashMap 是哈希表的标准实现,可以用来存储键值对,而 HashSet 是一个不允许重复元素的集合实现。
2.2 Java并发
在Java Collections之后,Java中下一个关键API是关于多线程与并发的,如果您想成为一名合格的Java开发人员,则必须对Java Concurrency API有扎实的掌握。
不仅应该深入了解诸如Thread,, Runnable对象锁定和同步之类的基本概念 ,而且还应该熟悉诸如死锁,活动锁,争用条件以及如何处理它们的概念。
还应该了解像Java 5及以后的版本,例如添加同步先进的Java概念, CyclicBarrier, CountDownLatch, Phaser, CompleteableFuture等,连同 Futures 以及如何在Java中执行异步操作。
2.3 Java IO
我采访过100多个Java程序员,并且注意到一种模式:与Java Collections和Java多线程API相比,大家对Java IO和NIO API的掌握都很少。
如果想写一个真实的核心Java应用,需要用到如下类: File, InputStream, OutputStream, Reader,和 Writer 等,这是Java IO API的核心。同样的,你也需要了解 ByteBuffer, FileChannel, Selector,从java.nio的API和其他重要课程,如果你想编写一个基于Socket的应用程序。
关于讲授Java IO和Java NIO API的资源并不多,但是Complete Java Masterclass 是掌握此API的绝佳资源,你将从此API中找到很多基本概念。
2.4 Java 8功能
Java程序员应该学习的下一个必要的API是Java 8的功能,这些功能彻底改变了当今的Java编码和编程方式。你需要知道如何用Lambda表达式,Stream API,Optional类和新的日期时间 API。
现在,大多数库都已停止支持低于Java 8的版本,这意味着最好现在就学习Java 8功能,而不是以后。Java 8发布已经5年了,我们没有任何借口。
3.框架
Java有一个充满活力的生态系统,这意味着有很多框架和库,几乎可以用来做全部的事物。通常,不建议Java开发人员在熟悉Java之前就开始学习框架,但是Java开发人员应该知道一些流行的框架和库,比如Spring,Spring Boot,Hibernate,Log4j,JUnit。
3. 1 Spring框架
如果您想成为熟练的Java开发人员,强烈建议先学习Spring Framework。这是最流行的Java框架之一,过去五年来几乎每个Java应用程序都使用了该框架。
Spring Framework使开发人员能够编写干净的代码,通过依赖注入等功能,能够轻松地测试和维护代码。它还有丰富的用于大多数日常任务的API。
3.2 Hibernate
我建议每个Java开发人员学习的第二个框架是Hibernate,它基于JPA(Java持久化API)。准确地说,Hibernate早于JPA,但是由于JPA是在Java中实现持久层的标准API,因此Hibernate也可以实现它。
因为大多数Java应用程序都会与数据库进行交互,并且使用Java 而不使用Hibernate之类的适当框架来使用JDBC处理Java中的数据库实在是令人难以调试。
Hibernate提供了一些基本功能,例如开箱即用的缓存和事务,开发者有更多时间专注于应用程序逻辑,而不是在应用程序中实现缓存。这可以大大提高Java应用程序的性能,这是我用Hibernate的最重要原因。
3.3 Spring Boot
这是我建议每个Java开发人员在2019年后学习的另一个框架。
Spring Boot采用了Spring的简化哲学,让Spring本身更加容易。就像Spring使创建Java应用程序变得更容易一样,Spring Boot使创建基于Spring的Java应用程序变得更加容易。
自动配置之类的功能消除了与配置Spring应用程序相关的部分很烦琐。同样,入门POM功能将常用的依赖项分组为简单的可重用POM。
3.4 测试
测试是Java开发人员的一项基本技能,尤其是单元测试,集成测试和自动化测试。每个Java开发人员都应该熟悉JUnit和Mockito,这是两种最受欢迎的单元测试和模拟库。
如果知道这两个并知道如何使用它们来有效地创建单元测试,那么与没有它们相比,您将是一个更好的Java开发人员。
还存在更高级的库,例如用于业务驱动测试的Cucumber,用于集成测试的Robot Framework,但是没有替代品JUnit。你将始终需要JUnit。
对于模拟库,您可以选择PowerMock,Mockito和EasyMock等几种选择,但建议你学习Mockito,因为它是一个很棒的库,并且许多Java开发人员和公司都在使用它。它正逐渐成为在Java中创建模拟对象的标准库。
5.实用程序库
Java的真正精彩在于其丰富的开源库生态系统。你会发现库在Java中几乎可以完成所有工作,从日志记录到机器学习,从发送HTTP请求到解析JSON等等。
除此之外,Java还拥有诸如Apache Commons和Google Guava之类的实用程序库。这两个库有效地补充了JDK库。
希望这份清单,可以帮助我们编写更好的Java程序。