作者:Javin Paul

原文:The 2019 Java Developer Roadmap
转自:51CTO官微

许多Java开发人员都希望通过某种Java成长路线图,来解答有关:该学习哪些技术,使用哪些工具以及框架之类的问题。

在此,我将向大家展示一张根据自己多年经验总结出的路线图。该路线图在保持简单可行的基础上,介绍了各种具有业界标准、且方便多数人遵循的工具和程序库。

该路线图如下所示,希望能够对您起到指导和借鉴的作用。

Java开发人员的必备技能

下面,我们将根据上述Java路线图,来一起探讨那些开发人员必须学习和掌握的工具、框架、程序库、以及API。

1 工具

在路线图中,工具部分主要分为两块。

第一部分是作为主要工具的IDE。它能够起到编译、运行、调试、分析、测试、比较文件与代码、以及重构等作用。

第二部分是构建工具。您需要使用例如Maven和Gradle之类的工具,来构建和部署项目。当然,您也可以选择使用比较传统甚至有些老旧的ANT。不过,在处理所有新的Java项目时,我个人更偏好使用Maven或Gradle。
2 JDK API

JDK API是其次需要学习和掌握的方面。根据它对于大多数Java开发人员的重要程度,我将Java集合框架(Collections Framework)、Java并发性(Concurrency)、Java IO与Java 8 API等核心领域都归纳到了此类之中。下面我们逐一进行讨论:

2.1 Java集合框架

这是每个Java开发人员都应该认真学习的Java重要API之一。该API提供了Java中标准数据结构的实现,例如:链表、集合、堆栈、队列、哈希表、以及优先级队列等。

您至少应该了解的常规对象包括:ArrayList、HashMap、HashSet、LinkedHashSet、以及TreeSet等。它们都有各自不同的属性。

例如:ArrayList是一个可以增长的动态数组;HashMap是一种哈希表的标准实现,可以被用于存储各种键值对;而HashSet则是一套实现类的集合,它不允许有重复元素的出现。

2.2 Java并发性

在Java集合之后,另一个关键的Java API便是多线程与并发性。我个人认为:如果您想成为一名合格的Java开发人员,那么就必须对Java Concurrency API具有扎实的理解和掌握。

您不仅应该对Thread、Runnable、对象锁定(Object locking)、以及同步等基本概念有深入的了解,而且还应该熟悉死锁、活动锁(livelock)、竞争条件、以及如何处理等相关概念。

同时,您也应该了解一些高级的Java概念,例如:如何在Java 5及其后续版本中添加各种同步器,包括:CyclicBarrier、CountDownLatch、Phaser、CompleteableFuture等,以及如何通过Futures在Java中执行异步操作等方面。

2.3 Java IO

通过采访了100多名Java程序员,我注意并发现到:相比Java集合和Java多线程API,他们对于Java IO和NIO API的了解真是少之又少。虽然多数人已经将大量时间花费在了学习前面两个API上,但是我们丝毫不应该忽略其他关键的API。

有过编写核心Java应用程序的读者应该体会到:经常需要使用java.io包中的File、InputStream、OutputStream、Reader和Writer等类。它们都是Java IO API的核心。

同理,如果您想编写基于套接字的应用程序,那么就需要通过java.nio API来了解ByteBuffer、FileChannel、Selector和其他关键类。

不过在网上,有关传授Java IO和Java NIO API的资源并不多,你可以通过The Complete Java Masterclass课程资源,来全面掌握此类API。当然,该课程也会涉及到Java API的许多其他基本概念。

2.4 Java 8的各项功能

Java程序员应该学习并掌握的下一个重要API是Java 8的各项功能。可以毫不夸张地说,这些功能彻底改变了如今Java的编程方式。

因此,作为一名Java开发人员,您不应该错过了解与使用Lambda表达式、Stream API、Optional类、以及全新Date and Time API的机会。

Java 8已经发布5年多了,如今大多数库都已停止了支持低于Java 8的版本。因此如果您想顺利地实现Java应用程序的编写与调试的话,请赶快抓紧时间学习Java 8的各项新功能。
3  框架

Java的魅力在于它拥有一个充满活力的生态系统,这意味着其许多框架和程序库能够被用于几乎所有的领域。

目前,被Java开发人员经常使用到的框架和程序库包括:Spring、Spring Boot、Hibernate、Log4j、以及JUnit等。

3.1 Spring框架

Spring Framework是最流行的Java框架之一。实际上过去五年里,我在几乎所有工作过的Java应用程序中,都使用了该框架。

Spring Framework不但能够让开发人员编写出简洁的代码,而且还能够通过依赖注入(Dependency Injection)和控制反转(Inversion of Control)等功能,轻松地测试与维护代码。它拥有丰富API,可适用于大多数日常任务,恐怕这也就是为什么Java开发人员应该学习Spring框架的原因。

3.2 Hibernate

在我的路线图中,第二个推荐给Java开发人员学习的框架是Hibernate。它是基于Java持久性的API(JPA,Java Persistence API)。更准确地说,Hibernate早于JPA,但是由于JPA是在Java中实现了持久层的标准API,因此Hibernate也能够实现它。

由于大多数Java应用程序都需要与数据库进行交互,因此开发人员可以通过Java Hibernate之类的框架,使用JDBC来处理Java中的数据库相关操作。另外,由于Hibernate提供了开箱即用的缓存和事务等基本功能,因此开发人员能够拥有更多的时间,去专注于应用程序的逻辑,而不用考虑如何去实现缓存。显然,Hibernate大幅提高了Java应用程序的性能。

3.3 Spring Boot

我在此推荐的第三个框架是Spring Boot。就像Spring能够使得创建Java应用程序更加容易那样,延续了Spring简化化理念的Spring Boot,通过自动配置之类的功能,消除了创建和配置基于Spring的Java应用程序的各种麻烦步骤。

另外,其入门级的POM功能,将常用的依赖项分组成为了多个简单且可重用的POM。

4 测试

测试,尤其是单元测试、集成测试和自动化测试,是任何Java开发人员必修的一项基本技能。其中,JUnit和Mockito是两种被Java开发人员最为熟悉、且欢迎的单元测试和模拟库。

当然,您也可以去学习一下更高级的程序库,例如:用于业务驱动测试的Cucumber,用于集成测试的Robot Framework,以及您肯定“绕不开”的JUnit。

在常见的PowerMock、Mockito和EasyMock三种模拟库中,我强烈建议您学习Mockito。由于目前有许多Java开发人员和公司都在使用它,因此它已逐渐成为了在Java中创建模拟对象的标准库。

5 实用程序库

一直以来,Java都拥有着丰富的开源程序库,它们可以帮助开发人员实现从日志记录到机器学习,从发送HTTP请求到解析JSON等,几乎所有的工作。

值得一提的是:Apache Commons和Google Guava这两个实用程序库,它们是Java JDK库的有效补充。

希望该清单能够帮助您编写出更加优秀,运行效率更高的Java程序代码。

正文结束

推荐阅读 ↓↓↓

2

3

4

5

6

7

8

一个人学习、工作很迷茫?

国外大神整理的 2019 年 Java 权威开发路线图,Java大神养成记相关推荐

  1. Oracle发布Java移动开发路线图 影响近千万开发者

    Oracle发布Java移动开发路线图 影响近千万开发者 http://mobile.51cto.com  2010-09-27 08:49  佚名  51CTO综合报道  我要评论(3) Oracl ...

  2. 视频教程-JAVA WEB开发实战-Java

    JAVA WEB开发实战 主要研究方向为J2EE..net .数据库 .前端.Android,曾经服务过大型上市国企IT部门,软件企业联合创始人,对软件研发管理.市场营销有自己独特思想体系! 张晨光 ...

  3. Java 游戏开发:关于Java面向对象的知识(一)

    Java 游戏开发:关于Java面向对象的知识(一) 软件的生命周期(了解即可) 由于我们是大专生 这里的生命周期是之前软件工程的笔记,你们了解就可以了 什么是软件的生命周期 一个软件从被开发到被正式 ...

  4. Java 游戏开发:关于Java面向对象的知识( 四)

    这是上期教程:Go To It! 新年过去了,鸽了几天的教程,今天我们开始继续学习(新年快乐~) 游戏人物类的实现 对于一个游戏人物而言,我们可以想到以下的字段: 最大血量 当前血量 名称 装备数组( ...

  5. JAVA后端开发(Java基础)Day01

    一.软件开发 1.1.什么是程序 用于解决现实中实际问题的,使用编程语言编写的指令的集合. 1.2.计算机编程语言 C语言:做系统,嵌入式开发,与硬件结合的开发 C++:游戏开发 Java:Andro ...

  6. java客户端开发_ElasticSearch java 客户端开发

    2.1介绍:ES提供了两个JAVA REST client 版本 Java Low Level REST Client :用于Elasticsearch的官方低级客户端.它允许通过http与Elast ...

  7. Java微信开发-微信java开发接入平台实例

    微信上接入平台的demo是PHP的,没得java的,所以我自己做接入的时候遇到了一点小问题.用java做带薪开发,首先就要先通过微信的接入配置,大概原理就是微信往服务器发送一些数据,然后在服务器端做一 ...

  8. 百度迁徙大数据整理[2020+2019同期]

    统筹推进疫情防控和经济社会发展工作是常态化疫情防控阶段促进中国经济恢复的必然选择.基于百度地图迁徙大数据,采用双重差分模型探究不同阶段的疫情防控措施对中国人口流动的影响.结果表明,早期的疫情超常规防控 ...

  9. Java 8 开发的 4 大顶级技巧,你都知道吗 ?

    点击上方蓝色"方志朋",选择"设为星标"回复"666"获取独家整理的学习资料! 来源:https://dzone.com/articles/ ...

  10. Java 8 开发的 4 大技巧

    欢迎关注方志朋的博客,回复"666"获面试宝典 Java 开发过程经常需要编写有固定格式的代码,例如说声明一个私有变量,logger或者bean等等.对于这种小范围的代码生成,我们 ...

最新文章

  1. mysql命令行显示乱码_mysql命令行显示乱码的解决方法
  2. warning C4800: 'int' : forcing value to bool 'true' or 'false' (performance warning)
  3. 嵌入式设备web服务器比较
  4. 【Linux系统编程】进程间通信--共享内存
  5. Java基础 Day14 泛型
  6. mysql测试数据图表_mysql测试数据表
  7. Windows下安装和配置Java JDK
  8. springboot指定属性返回_SpringBoot中属性赋值操作的实现
  9. ORACLE VARCHAR2
  10. 数据库删除表中多列语法总结
  11. SQL练习题——店铺UV、访客信息
  12. WORD/OFFICE排版时插入脚注和分栏冲突的解决方法
  13. 安规X电容和Y电容的作用
  14. cef 获取 html代码,CefGlue获取网页源代码
  15. yolo系列之yolo v3【深度解析】——讲的挺好,原作者厉害的
  16. 2-2学生成绩统计(加强版)
  17. hdu 1541 树状数组版)——咯咯
  18. 已开源!Flutter 流畅度优化组件 keframe
  19. python输出三角形
  20. 虚拟机安装kali详细图解

热门文章

  1. Android 中文 API——android.widget合集(中)(50篇)(chm格式)
  2. CentOS 6.5安装Tomcat-9.0.0.M19
  3. 解决异常:公共语言运行时检测到无效的程序
  4. 「leetcode」129. 求根到叶子节点数字之和【递归中隐藏着回溯】详解
  5. 如何准备面试中算法问题
  6. Pr常见问题,pr素材脱机后该如何恢复?
  7. 红警 for Mac合集(Red Alert红色警戒)
  8. MAMP Pro for Mac(PHP/MySQL开发环境)
  9. 2Do for Mac(任务管理GTD工具)
  10. OCR图文识别工具Mac版:iText