2019年Java开发者的成长之路:路径图上有什么?

全文共3627字,预计学习时长7分钟java

Java开发者须要学习哪些技术?哪些工具可使你成为更好的开发者?哪些框架又是开发者必须掌握的?本文将为Java开发者绘出一条成长为专家的路径图,并回答一些亟待解决的问题。数据库

Java开发者的必备技能express

如今,让咱们细看这份Java开发者成长路径,看看咱们究竟要学习哪些工具(tools),框架(frameworks),库(libraries)和应用程序接口(APIs)。编程

1. 工具数组

工具章节主要分为两个部分。第一部分介绍集成开发环境(IDE),这是最基础的工具,你几乎能够用它作任何事,如编译(compile),运行(run),调试(debug),性能分析(profile),测试(test),比对文本(compare file),和编码(code),重构(refactoring)等。微信

第二部分介绍开发工具,你须要用它进行项目开发与设计,如Maven(一种项目对象模型)和Gradle(一种构建工具),这些都很好用。我以前有提过ANT(一种跨平台构建工具),但这是为旧程序设计的。若是要开发新程序,我更推荐Maven和Gradle。数据结构

2. Java开发工具包应用程序接口(JDK APIs)多线程

JDK APIs对多数Java开发者都十分重要。这部份内容有点多,因此我将其分为Java集合框架,Java并发机制,Java IO和Java 8 APIs这几大核心来说解。往下看。并发

2.1 Java集合框架框架

这是最为重要的Java应用程序接口之一,每一个Java开发者都应学会。它定义了Java标准数据结构的执行方式,如链表(linked list),集合(set),栈(stack),队列(queue),哈希表(hash table),优先队列(priority queue)等。

开发者还至少须要了解一些最经常使用的数据结构,好比ArrayList,HashSet,LinkedHashSet,TreeSet等。不一样数据结构属性各不相同,如ArrayList是能够增加的动态数组;HashMap是哈希表的标准数据结构,用于储存键值对;而HashSet则是只能储存不重复对象的集合数据结构。

2.2 Java并发机制

重要性仅次于集合的API是多线程技术(multithreading)和并发机制(concurrency)。一位称职的Java开发者必须熟练掌握Java并发机制。

你不只须要深刻理解线程(Thread),对象锁(Object locking)和同步器(synchronization)这类基本概念,还须要熟悉 死锁(deadlock),活锁(livelock),竞争条件(race conditions)等,而且知道如何操做。

同时,你须要了解一些进阶概念,如Java 5及以后的版本中加入的循环栅栏(Cyclicbarrier),多线程条件通行工具(CountDownLatch),相位器(Phaser),异步编程(completeable future)等同步装置(synchronizers),Feature(一种异步处理接口)以及如何在Java 中实现异步操做。

2.3 Java IO

采访了上百位Java开发者后,咱们发现:跟集合或者多线程相比,他们广泛缺少Java IO和NIO的知识。我理解大多数人会花更多时间在学习前二者上,可是IO和NIO也不能忽视。

当编写一个实践性的核心程序时,你会须要java.io包中的类(classes),如文件流(file),字符流(InputStream & OutputStream),字节流(Reader & Writer),这也是Java IO接口的核心。一样,若是要编写套接字应用,你也须要了解Java NIO接口中的字节缓冲区(ByteBuffer),文件通道(FileChannel),选择器(Selector)等重要的类。惋惜如今并无不少针对Java IO和NIO的公共学习资源,我找到一个不错的学习资源——The Complete Java Masterclass,从这里你能学习到这两种接口的一些重要概念。

2.4 Java 8 Features

接下来介绍的这个接口全部Java开发者都会用到——Java 8 features,这奠基了现今Java 编写和编程的方向。在2019年,想要成为一个Java开发者,必须了解Lambda表达式(Lambda expression),流接口(the Stream API),可选类(Optional classes)和新的时间日期接口(Date and Time API)的用法,否则开发Java程序会变的十分艰难。如今不少的库都不能支持Java 8如下的版本,也就是说最好如今就开始学习Java 8 features。Java 8已经发布5年了,你没什么理由不学习它。

3. 框架

Java最大的优势就是它的生态系统十分全面,也就是说它的框架和库几乎能支撑开发者来完成全部事。一般我会建议开发者在须要时再学习一个新的框架,可是还有一些框架和库是每个开发者都必须知道的,像Spring,Spring Boots,Hibernate,Log4j和JUnit等。

3.1 Spring

若是你想成为一个经验丰富的Java开发者,我强烈建议你从学习Spring框架开始,由于这是最流行的Java框架之一,过去5年我在作Java开发时几乎都会用到这个框架。

Spring使开发者写出的代码整齐明了,而且依赖注入(Dependency Injection)和控制反转(Inversion of Control)使测试和维护更为简单。这个框架同时拥有一个大型API用于日复一日的工做,这也是开发者须要学习这一框架的一个理由。

3.2 Hibernate

我推荐学习的第二个框架是Hibernate,这是基于Java持久化API(Java Persistence API,JPA)的对象关系映射框架。确切说来,Hibernate诞生于JPA以前,但因为JPA是应用在Java持久化层面的标准API,因此对象关系映射框架也会用到它。

那为何须要学习这一框架呢?这是由于绝大部分Java应用都会用到数据库,而若是不借助任何对象关系映射框架,只用Java数据库链接(JDBC)来处理数据库,是很是痛苦的。

并且如今对象关系映射框架还能提供一些重要功能,如高速缓冲储存(caching and transactions),这也就意味着开发者能够有更多的时间专一在应用程序的逻辑上,而不是缓冲上了。这确实显著改善了Java应用程序的表现,也是我使用Hibernate的最主要缘由。

3.3 Spring Boots

我推荐学习的另外一框架是Spring Boots,2019年之后Java开发者都应该学习这个框架。它借鉴了Spring的简化哲学,使和Spring的交互变得简单。就像Spring简化了开发Java程序,Spring Boots也简化了基于Spring的Java程序开发程序。

自动配置这类的features使配置Spring应用程序变得简单。一样地,POM(项目对象模型)启动器的features将经常使用的依赖(类之间的调用关系)分红简单可重复利用的不一样组别。

4. 测试

每一个Java开发者都必须会测试,尤为是单元测试,综合测试和自动化测试。所以每一个Java开发者至少要熟悉JUnit和Mockito这两个最流行的单元测试和模块库。

若是你认识这两个库,也知道如何借助它们来有效实现单元测试,那么你将成为一个更好的Java开发者。还有不少进阶的库,像商业导向测试的Cucumber,综合测试的Robot Framework,但仍是没有库能够替代JUnit,因此仍是须要学习。

对于模块库来讲,选择会更多一点,像PowerMock,Mockito,和EasyMock。我最推荐的是Mockito,由于这是一个很大的库,也有不少开发者和公司在使用,它也正在逐渐变成Java中创建模块的标准库。

若是你想学习JUnit和Mockito,能够参考我曾经分享的书籍和课程,你会学到更多。

5. 实用工具库

Java最强大的地方就在于它强大的开源库。库在Java中几乎能够应用到任何领域,从日志工具到机器学习,从发送HTTP请求到解析JSON等。除此以外,Java还拥有像Apache Commons 和Google Guava这样的实用工具库来补足JDK库。20个Java API和库的列表我已经分享给广大开发者了。建议你们能够先去浏览那份列表,大家已经抓住了一半的机会,就差潜心学习了。这些API和库很是实用,可使开发者写出更好的程序及提升编码速度。

留言 点赞 关注

咱们一块儿分享AI学习与发展的干货
欢迎关注全平台AI垂类自媒体 “读芯术”


(添加小编微信:dxsxbb,加入读者圈,一块儿讨论最新鲜的人工智能科技哦~)

相关文章
相关标签/搜索