许多Java开发人员都希望通过某种Java成长路线图,来解答有关:该学习哪些技术,使用哪些工具以及框架之类的问题。
在此,我将向大家展示一张根据自己多年经验总结出的路线图。该路线图在保持简单可行的基础上,介绍了各种具有业界标准、且方便多数人遵循的工具和程序库。
该路线图如下所示,希望能够对您起到指导和借鉴的作用。
Java开发人员的必备技能
下面,我们将根据上述Java路线图,来一起探讨那些开发人员必须学习和掌握的工具、框架、程序库、以及API。
在路线图中,工具部分主要分为两块。
第一部分是作为主要工具的IDE。它能够起到编译、运行、调试、分析、测试、比较文件与代码、以及重构等作用。
第二部分是构建工具。您需要使用例如Maven和Gradle之类的工具,来构建和部署项目。当然,您也可以选择使用比较传统甚至有些老旧的ANT。不过,在处理所有新的Java项目时,我个人更偏好使用Maven或Gradle。
JDKAPI是其次需要学习和掌握的方面。根据它对于大多数Java开发人员的重要程度,我将Java集合框架(CollectionsFramework)、Java并发性(Concurrency)、JavaIO与Java8API等核心领域都归纳到了此类之中。下面我们逐一进行讨论:
2.1Java集合框架
这是每个Java开发人员都应该认真学习的Java重要API之一。该API提供了Java中标准数据结构的实现,例如:链表、集合、堆栈、队列、哈希表、以及优先级队列等。
您至少应该了解的常规对象包括:ArrayList、HashMap、HashSet、LinkedHashSet、以及TreeSet等。它们都有各自不同的属性。
例如:ArrayList是一个可以增长的动态数组;HashMap是一种哈希表的标准实现,可以被用于存储各种键值对;而HashSet则是一套实现类的集合,它不允许有重复元素的出现。
2.2Java并发性
在Java集合之后,另一个关键的JavaAPI便是多线程与并发性。我个人认为:如果您想成为一名合格的Java开发人员,那么就必须对JavaConcurrencyAPI具有扎实的理解和掌握。
同时,您也应该了解一些高级的Java概念,例如:如何在Java5及其后续版本中添加各种同步器,包括:CyclicBarrier、CountDownLatch、Phaser、CompleteableFuture等,以及如何通过Futures在Java中执行异步操作等方面。
2.3JavaIO
有过编写核心Java应用程序的读者应该体会到:经常需要使用java.io包中的File、InputStream、OutputStream、Reader和Writer等类。它们都是JavaIOAPI的核心。
同理,如果您想编写基于套接字的应用程序,那么就需要通过java.nioAPI来了解ByteBuffer、FileChannel、Selector和其他关键类。
不过在网上,有关传授JavaIO和JavaNIOAPI的资源并不多,你可以通过TheCompleteJavaMasterclass课程资源,来全面掌握此类API。当然,该课程也会涉及到JavaAPI的许多其他基本概念。
2.4Java8的各项功能
Java程序员应该学习并掌握的下一个重要API是Java8的各项功能。可以毫不夸张地说,这些功能彻底改变了如今Java的编程方式。
Java的魅力在于它拥有一个充满活力的生态系统,这意味着其许多框架和程序库能够被用于几乎所有的领域。
目前,被Java开发人员经常使用到的框架和程序库包括:Spring、SpringBoot、Hibernate、Log4j、以及JUnit等。
3.1Spring框架
SpringFramework不但能够让开发人员编写出简洁的代码,而且还能够通过依赖注入(DependencyInjection)和控制反转(InversionofControl)等功能,轻松地测试与维护代码。它拥有丰富API,可适用于大多数日常任务,恐怕这也就是为什么Java开发人员应该学习Spring框架的原因。
3.2Hibernate
在我的路线图中,第二个推荐给Java开发人员学习的框架是Hibernate。它是基于Java持久性的API(JPA,JavaPersistenceAPI)。更准确地说,Hibernate早于JPA,但是由于JPA是在Java中实现了持久层的标准API,因此Hibernate也能够实现它。
3.3SpringBoot
我在此推荐的第三个框架是SpringBoot。就像Spring能够使得创建Java应用程序更加容易那样,延续了Spring简化化理念的SpringBoot,通过自动配置之类的功能,消除了创建和配置基于Spring的Java应用程序的各种麻烦步骤。
另外,其入门级的POM功能,将常用的依赖项分组成为了多个简单且可重用的POM。
测试,尤其是单元测试、集成测试和自动化测试,是任何Java开发人员必修的一项基本技能。其中,JUnit和Mockito是两种被Java开发人员最为熟悉、且欢迎的单元测试和模拟库。
当然,您也可以去学习一下更高级的程序库,例如:用于业务驱动测试的Cucumber,用于集成测试的RobotFramework,以及您肯定“绕不开”的JUnit。
在常见的PowerMock、Mockito和EasyMock三种模拟库中,我强烈建议您学习Mockito。由于目前有许多Java开发人员和公司都在使用它,因此它已逐渐成为了在Java中创建模拟对象的标准库。
一直以来,Java都拥有着丰富的开源程序库,它们可以帮助开发人员实现从日志记录到机器学习,从发送HTTP请求到解析JSON等,几乎所有的工作。
值得一提的是:ApacheCommons和GoogleGuava这两个实用程序库,它们是JavaJDK库的有效补充。
希望该清单能够帮助您编写出更加优秀,运行效率更高的Java程序代码。