第七十期:2019年度Java开发者路线图

本文将向大家展示了一张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面试题

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/424355.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

常见的软件

重装完系统后,会有不少软件需要重装,这边简单列一下自己需要下载安装的软件。 1. 首先下载一个浏览器,我这边下载的是谷歌浏览器。(不过现在的edge还是挺好用的) 下载安装完可以修改启动时的网址和默认搜索引擎。&…

第七十一期:管理 | 技术Leader:选OKR还是KPI?

除了 KPI,考核员工还有什么方式?OKR 是一种简单的管理方法,但是对于其误解和各种疑惑却很多。 作者:燕标 除了 KPI,考核员工还有什么方式?OKR 是一种简单的管理方法,但是对于其误解和各种疑惑却很多。 图片来自 Pe…

153. Find Minimum in Rotated Sorted Array

文章目录1题目理解2 二分分治法2.1至少有一部分是有序的2.2 示例2.3 编码3 只有二分1题目理解 输入:一个按升序排序的数组nums,但是这个数组在某个位置被旋转了。(例如., 原始数组是[0,1,2,4,5,6,7],旋转后就变成 [4,5,6,7,0,1,2])。 输出&a…

JS之onsubmit事件与组织事件外延

on是监听的意思 阻止事件发生&#xff1a;1、return false  2、e.preventDefault()适用于onsubmit outer外部  inner内部 event.stopPropagation()阻止事件向外层div传播 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8&…

第七十二期:Visual Studio Online 终于公开上线了

盼望已久的 Visual Studio Online 终于上线了。今年 5 月份&#xff0c;微软在 Build 2019 开发者大会上宣布了 Web 版本的 VS Code&#xff0c;即 Visual Studio Online。当时微软释出的是 Private Preview 版本&#xff0c;仅允许开发者申请试用。 作者&#xff1a;佚名 盼望…

154. Find Minimum in Rotated Sorted Array II

文章目录题目理解二分分治只有二分154是 153的升级版本。题目理解 输入&#xff1a;一个按升序排序的数组nums&#xff0c;但是这个数组在某个位置被旋转了。(例如., 原始数组是[0,1,2,4,5,6,7]&#xff0c;旋转后就变成 [4,5,6,7,0,1,2])。注意&#xff1a;这个数组可能包含重…

@ResponseBody注解學習

轉載自https://www.cnblogs.com/qiankun-site/p/5774325.html這篇博客 本文僅是爲了自學整理知識點 ResponseBody 作用 將controller的方法返回的對象通過適當的轉換器轉換爲指定的格式之後&#xff0c;寫入到response對象的body區&#xff0c;通常用來返回JSON數據或者是XML數…

spring mvc学习(4):第一个spring mvc项目

一个Spring MVC的项目如何创建&#xff1f;请看这里。 代码编辑器&#xff1a;Intellij IDEA 请提前在电脑上配置好自己的tomcat&#xff01; 该文属于小白教程&#xff0c;适合初学者。 1 创建Spring MVC项目 第一步&#xff0c;点击新建项目。 第二步&#xff0c;选择Sp…

spring mvc学习(5):IDEA修改背景颜色大全

路径为File->settings->Editor->Color Scheme可以设置软件默认颜色&#xff0c;旁边的小齿轮添加颜色名字 IDEA设置一张背景图片,路径&#xff1a;File->Settings->Appearance&Behavior->Appearance 手动设置护眼绿的RGB颜色 路径&#xff1a;File->…

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

“现在行情不好啊&#xff0c;工作不好找&#xff0c;我都怀疑我自己了……” 如果这些话出自某个在职场混迹多年、对工作丧失激情的中年男人&#xff0c;似乎并不是难以理解。但是&#xff0c;这些话来自一批985院校毕业的学生&#xff0c;曾经的他们头顶名校光环&#xff0c;…

国际经管学院举办计量经济学术前沿研讨会

6月10日&#xff0c;由首都经济贸易大学国际经济管理学院组织的“计量经济学术前沿研讨会”在博远楼三号报告厅举办。此次研讨会汇集海内外知名学者&#xff0c;校长付志峰出席活动并致辞。 付志峰在致辞向远道而来的国内外专家学者表示欢迎。他讲到&#xff0c;首都经济贸易大…

第七十四期:国内SaaS企业终于活成了自己讨厌的样子!

总之&#xff0c;单纯的SaaS走不通了&#xff0c;为企业客户提供软件服务的这条路总是走得通的&#xff0c;反正SaaS企业就是要抢传统软件公司和软件外包公司的市场&#xff0c;换个姿势&#xff0c;继续降维打击就是了。 作者&#xff1a;佚名 SaaS&#xff0c;英文Software …

378. Kth Smallest Element in a Sorted Matrix

文章目录1题目理解2 思路分析2.1二分思路2.2计算小于等于middle值的个数3 拓展解决leetcode 6681题目理解 输入&#xff1a;一个nxn的矩阵&#xff0c;每一行从左到右按照升序排列&#xff0c;每一列从上到下按照升序排列。一个整数k。 输出&#xff1a;这个矩阵中第k小的数。…

20 年后,我们怎么看电影?

简评&#xff1a; 几十年来&#xff0c;虚拟现实一直被认为是电影业的未来所在&#xff0c;能够为观众提供比传统影视更身临其境的体验。在 1955 年的一篇题为《未来的电影》的文章中&#xff0c;电影摄影师海里戈就预言「未来的电影将会以生动活泼的形式为人们揭开新科学世界的…

第七十五期:网络 | 5G那些运营商不愿说的秘密

11月1日&#xff0c;国内几大基础运营商正式上线5G资费套餐&#xff1a;月套餐最低128元起&#xff0c;最高869元&#xff0c;这也标志着中国5G通信服务真正进入全民商用时代&#xff0c;不少急于尝鲜者还第一时间购入5G手机并办理相关套餐&#xff0c;率先体验传说中的极速5G网…

烦人的项目

最近被一些挑剔的用户搞了个半死。都要忙晕过去了。作项目真的是好累&#xff01;不知这种烦人的日子还要多久才能过去。转载于:https://www.cnblogs.com/Lancer/archive/2004/05/24/11152.html

第七十七期:可自动生成代码,5款基于AI的开发工具

如今&#xff0c;对机器学习潜力感兴趣的程序员都在讨论&#xff0c;如何使用人工智能和基于人工智能的软件开发工具构建应用程序。例如PyTorch和TensorFlow之类的解决方案。 作者&#xff1a;Sandra Parker 如今&#xff0c;对机器学习潜力感兴趣的程序员都在讨论&#xff0…

第七十八期:2019全球程序员薪酬报告:软件开发比机器学习抢手!40岁后收入下滑

Hired发布了《2019 年度薪酬状况报告》。调查显示&#xff1a;仅有23%的计算机科学相关专业硕士/博士表示高学历为其带来高薪&#xff1b;54%从业者表示不会继续深造&#xff1b;40岁后薪资呈现下降、60岁基本降到30岁水平。 作者&#xff1a;佚名 Hired发布了《2019 年度薪酬…

第七十九期:阿里程序员感慨:码农们过去暴富有多轻松,现在赚钱就有多辛苦

互联网的世界也是一座围城。有人挤破脑袋想要进去。而有人又觉得是被互联网的光鲜表象欺骗了忙着要出来&#xff0c;但最终&#xff0c;这些人都会离开。 作者&#xff1a;职场八卦 互联网的世界也是一座围城。有人挤破脑袋想要进去。而有人又觉得是被互联网的光鲜表象欺骗了…

[导入]画带阴影效果的文字

画带阴影效果的文字文章来源:http://blog.csdn.net/net_lover/archive/2004/07/06/35553.aspx 转载于:https://www.cnblogs.com/zhaoxiaoyang2/archive/2004/07/07/816094.html