本文将向大家展示了一张Java开发者路线图。该路线图在保持简单可行的基础上,介绍了各种具有业界标准、且方便多数人遵循的工具和程序库。

作者:陈峻

许多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中创建模拟对象的标准库。

如果您想深入学习JUnit和Mockito的话,可以通过链接:https://javarevisited.blogspot.com/2014/08/top-5-books-to-learn-unit-testing-junit-tdd-Java-programmers.html#axzz5E2uHdG3whttps://hackernoon.com/5-courses-java-programmers-can-join-to-learn-junit-and-mockito-in-2019-h74t38r4,来获取相关书籍与更多的课程资源。

5.实用程序库

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

值得一提的是:Apache Commons和Google Guava这两个实用程序库,它们是Java JDK库的有效补充。在此,我还为Java开发人员罗列了20个常用的Java API与程序库--https://javarevisited.blogspot.com/2018/01/top-20-libraries-and-apis-for-java-programmers.html。希望该清单能够帮助您编写出更加优秀,运行效率更高的Java程序代码。

原文标题:The 2019 Java Developer Roadmap,作者: Javin Paul

阅读目录(置顶)(长期更新计算机领域知识)

阅读目录(置顶)(长期更新计算机领域知识)

阅读目录(置顶)(长期科技领域知识)

歌谣带你看java面试题

第七十期:2019年度Java开发者路线图相关推荐

  1. 第四十期:2019年度十大Web开发趋势

    本文和您一起讨论那些本年度改变软件开发行业.特别是Web开发方面的十大趋势. 如今,随着各种新趋势的层出不穷,Web和移动领域的创新不仅改变了人们.乃至整个社会的日常行为习惯.以及业务处理方式,而且也 ...

  2. 2019年Java开发者进阶手册.pdf

    互联网时代已进入后半场,行业环境发生了显著变化.互联网人,尤其是技术人员,如何在加速更迭的技术浪潮中持续充电,提升自身价值,是当下必须面对的挑战. 近期,阿里.百度.微软.滴滴.创新工场等大厂相关负责 ...

  3. 第七十三期:2019大裁员!年关将至,裁员比例竟达90%?

    "现在行情不好啊,工作不好找,我都怀疑我自己了--" 如果这些话出自某个在职场混迹多年.对工作丧失激情的中年男人,似乎并不是难以理解.但是,这些话来自一批985院校毕业的学生,曾经 ...

  4. 第七十期:IT技术人员的自我修养

    8月4日 以下文章来源于空山新雨的技术空间 ,作者空山新雨的技术空间 前言 在IT领域摸爬滚打多年,从一个普通程序员到技术主管,到技术经理,再到技术总监,踩过不少坑.加过不少班,也背过不少锅. 在提升 ...

  5. 平安金融壹账通测试技术周报(七十期)

    本期导读:本期原创专栏收录了两篇内部原创文章,第一篇由张美苑给我们带来"Android App性能评测分析--流畅度篇":第二篇则由国虹给我讲讲如何利用SSH端口转发实现跨机器直接 ...

  6. 开发者论坛一周精粹(第七十一期) 国外企业备案解答 邮箱只能发不能收

    开发者论坛每周选取精华内容总结,精选论坛优质贴,每周更新一期,方便大家阅读! 如何用KodExplorer可道云实现阿里云OSS的Web管理 溪云cool 摘要:由于没有数据库,KodExplorer ...

  7. 开发者论坛一周精粹(第七十一期) 国外企业备案解答 邮箱只能发不能收...

    开发者论坛每周选取精华内容总结,精选论坛优质贴,每周更新一期,方便大家阅读! 如何用KodExplorer可道云实现阿里云OSS的Web管理 溪云cool 摘要:由于没有数据库,KodExplorer ...

  8. 2019年新版Java学习路线图(内含大纲+视频+工具+书籍+面试)

    一.2019新版Java学习路线图---每阶段市场价值及可解决的问题 二.2019新版Java学习路线图---学习大纲及各阶段知识点 三.2019新版Java学习路线图---升级后新增知识点一览 四. ...

  9. Java 开发者如何入门 Node.js 英文原文:Getting Started with Node.js for the Java Developer

    首先, 我必须得承认,作为一个有着十多年开发经验的java开发者,我已经形成了解决绝大部分问题的固有套路,尽管它们很多时候显得笨重和繁琐. 比如说如果要读取一个文件,那应该就是初始化一个Buffere ...

最新文章

  1. 第十六届全国大学生智能车竞赛线上赛点赛道审核 -华北赛区
  2. 动物麻醉剂量和途径相关要点
  3. ITK:将两个图像与棋盘格图案组合在一起
  4. 10.18.2 linux文件压缩与打包
  5. springboot-文件上传xls及POI操作Excel
  6. iOS Abort问题系统性解决方案
  7. JavaScript 经典代码大全2
  8. Lucene.Net+盘古分词-开发自己的搜索引擎
  9. 武汉街头出现手机无线充电路灯,极速快充,但需注意这一点!
  10. bzoj2423[HAOI2010]最长公共子序列
  11. 电商基础(一):跳出率和退出率
  12. Python程序员都会喜欢的6个库
  13. 航空信息指挥调度系统_应急指挥中心指挥调度系统解决方案(一)
  14. java鼠标左键拖拽事件_探索神秘的js拖拽事件
  15. 21天通关python 磁力_Python 实现 BT 种子转化为磁力链接 [实战]
  16. nRF24L01模块——基于Arduino
  17. 读书笔记 《TAOCP》 V1 S1.2
  18. QQxml红包跳转群代码
  19. 斯帅变阵只为讨好皇帝 36岁高龄大Z成热火首发
  20. 结绳计数——最原始的备忘录

热门文章

  1. MySQL浅谈 LEFT JOIN
  2. 计算机主机后面辐射大,电脑的背面辐射大吗
  3. linux重装eclipse_Linux环境安装Eclipse工具开发
  4. 依据地图上的经纬度坐标计算某个点到多边形各边的距离
  5. js RegExp正则表达式常见用例
  6. Spring在Java Filter注入Bean为Null的问题解决
  7. [iOS]Unable to run app in Simulator
  8. 基于海思开发板的屏幕截图程序(二)
  9. 高级I/O(七)--readv和writev函数
  10. grep搜索子目录中包含某字符串的特定文件