Java,作为静态面向对象编程语言的代表。

许多人会认为 1995 年 5 月 23 日是 Java 诞生的日子,毕竟这个时间点是 Java 第一次在 SunWorld 会议上公开发布的日子。

其实在这之前,1994 年,Java 1.0 的 Alpha 版本已经可以提供下载。并且,Java 真正意义上开始作为独立开发工具的重要里程碑,是 1996 年 1 月 23 日 Java 第一个开发工具包 JDK 1.0 ——即 Java 1.0 的问世。

Java 在万维网端却得到了长足的发展,主流的网站后端仍在使用 Java。

SO, 作为 Java 开发人员,我们应该学习哪些技术?哪些工具能够帮助我们成为更好的 Java 开发人员?Java 开发人员必须学习的框架有哪些?

Java 开发人员学习路线进阶图

java开发工作量评估 java开发工作时间_Java


工具

工具大致分为两类。

第一类是 IDE,这是开发人员最主要的工具,它几乎可以满足你所有的要求和目标,包括编译、运行、调试、分析、测试,比较文件和代码重构等等。

第二类是构建工具,你需要利用这些工具来构建和部署 Gradle 项目。我用过 ANT,但是在旧项目中。对于所有的 Java 新项目,应该考虑 Gradle。
JDK API

JDK API 关系到所有 Java 工程师的日常工作。API 可以进一步细分为 Java Collections 框架、Java Concurrency、Java IO 和 Java 8 API 等核心领域。

(1)Java Collections 框架
这是每一位 Java 开发人员都应该学习的最重要的 Java API 之一。该API包含一系列的Java标准数据结构的实现:链表、集合、堆、栈、队列、哈希表、优先级队列等。
你应该对日常工作所需的对象有所了解,例如 ArrayList、HashMap、HashSet、LinkedHashSet、TreeSet 等。每个对象都有不同的结构,例如 ArrayList 是一个可以动态修改的数组,HashMap 是哈希表的标准实现,并且可用于存储键值对。

(2)Java Concurrency
Java 并发是一个关键的 API,涉及多线程与并发,如果你想成为一名合格的Java开发人员,必须对 Java Concurrency API 有扎实的理解和掌握。
你不仅应该对字符串、可运行、对象锁定和同步之类的基本概念有深入的了解,而且还应该熟悉死锁、活动锁、竞争条件等概念。
此外,你还应该了解一些Java的高级概念,例如 Java 5 及其后续版本添加的同步代码块,以及 CyclicBarrier、CountDownLatch、Phaser 和 CompleteableFuture 等,以及如何在 Java 中执行异步操作。

(3)Java IO
与 Java Collections 和 Java Multithreading API 相比,有关 Java IO 和NIO API 的信息非常少。我可以理解,很多人花费了大量时间来学习这两个 API,尽管如此,你仍然离不开这些重要的 API。
如果你需要编写核心 Java 应用程序,则需要使用 java.io 包中的 Documents、InputStream、OutputStream、Reader、Author 等类。

(4)Java 8
此外,你还必须学习 Java 8 的功能,这个版本完全改变了 Java 的编程方式。如果你想成为一名优秀的 Java 开发人员,则必须知道如何使用 Lambda 表达式、Stream API、Optional 类以及新的 Data 与 Time API。
结构
Java 的优势之一就在于,它拥有一个生机勃勃的生态系统,这意味着 Java 拥有大量的框架与库,可以满足所有的需求。通常,我不建议 Java 开发人员主动寻找框架,除非有真正的需要。但是,我认为每一位 Java 开发人员都应该了解一些框架和库,例如 Spring、Spring Boot、Hibernate、Log4j、JUnit 等。

(1)Springtime 框架
Spring 框架可以帮助你编写整洁的代码,该框架提供了依赖注入、控制反转之类的功能,可以减轻测试和维护工作的负担。此外,它还提供了大量日常工作所需的API,所以每一位 Java 开发人员都应该学习 Spring 框架。
此外,如果你想学习 Spring 框架,则 Spring Framework 5:Beginner to Guru 课程是首选。它涵盖了 Spring 5,该课程讲解了 Spring 5 的最新技术,而且包含大量的实践。

(2)Hibernate
我建议每一位 Java 开发人员学习的第二个框架是 Hibernate,它基于 JPA(Java持久性API)。确切地说,Hibernate 早于 JPA,但是由于 JPA 是用于在 Java 中实现持久层的标准 API,因此 Hibernate 也使用了它。
那么,为什么要学习 Hibernate 呢?因为你使用的大量Java应用程序都需要与数据库进行交互,而且在 Java 中,如果没有 Hibernate 这样的框架帮忙,使用 JDBC 来处理数据库是一件非常痛苦的事情。
该框架提供了若干功能,比如缓存和自带的 Deal 对象。使用该框架意味着你有更多的时间专注于应用程序逻辑,然后在应用程序中实现缓存。这可以大幅提高 Java 应用程序的性能,因此也是使用 Hibernate 的主要理由。

(3)Spring Boot
Springtime Boot 继承了 Spring 的简化思想,而且也进一步简化了 Springtime 本身的管理。就像 Springtime 可以简化Java应用程序一样,Springtime Boot 可以让基于 Spring 的 Java 应用程序变得更加容易。
自动设计等特性解决了与配置 Spring 应用程序相关的大部分棘手工作。

测试
测试是所有 Java 开发人员的一项基本技能,尤其是单元测试、集成测试和自动化测试。每一位 Java 开发人员都应该熟悉 JUnit 和 Mockito,这两个是最受欢迎的单元测试工具。
此外,还有一些高级库,比如业务驱动测试 Cucumber,验收测试驱动开发的自动化测试框架 Robotic Framework,但 JUnit 仍然是必不可少的工具。
当涉及到模拟库时,你还可以选择 PowerMock,Mockito 和 EasyMock。

实用程序库
Java 真正的力量来自其充满活力的开源库生态系统。无论遇到怎样的难题和需求,从 Java 日志到机器学习,从发送 HTTP 请求到解析 JSON 等等,你都可以找到相应的库。
除此之外,Java 还拥有很多实用程序库,例如 Apache Commons 和 Google Guava,这两个库有效地补充了 JDK 库。

Java 在2020 年 9 月 15 日已更新至 Java 15。