/awesome-java

Collection of awesome Java project on Github(Github 上非常棒的 Java 开源项目集合).

关于作者:

  1. 公众号 : JavaGuide (最新原创文章+免费领取本文档配套的《Java面试突击》以及Java工程师必备学习资源)
  2. B站:Guide哥 (各种干货视频和生活向视频,来个一键三连可好!)


中文 | English
Great Java project on Github(Github 上非常棒的 Java 开源项目).

大家都知道 Github 是一个程序员福地,这里有各种厉害的开源框架、软件或者教程。这些东西对于我们学习和进步有着莫大的进步,所以我有了这个将 Github 上非常棒的 Java 开源项目整理下来的想法。我会按照几个维度对项目进行分类,以便大家查阅。当然,如果你觉得不错的话,欢迎给本项目点个 Star。我会用我的业余时间持续完善这份名单,谢谢 🙏。

欢迎大家推荐自己觉得不错的 Java 项目,下面项目的排序很大程度是根据当前项目的 Star 数量。

如果有码云上比较好的项目的话,我也会推荐到这里来!另外,我也会推荐少部分过于优秀但是非开源的优质 Java 项目。

目录

教程

Java

  1. JavaGuide :【Java 学习+面试指南】 一份涵盖大部分 Java 程序员所需要掌握的核心知识。
  2. advanced-java :互联网 Java 工程师进阶知识完全扫盲:涵盖高并发、分布式、高可用、微服务、海量数据处理等领域知识。
  3. miaosha : 秒杀系统设计与实现.互联网工程师进阶与分析。
  4. architect-awesome :后端架构师技术图谱。
  5. toBeTopJavaer :Java 工程师成神之路 。
  6. technology-talk : 汇总java生态圈常用技术框架、开源中间件,系统架构、数据库、大公司架构案例、常用三方类库、项目管理、线上问题排查、个人成长、思考等知识
  7. tutorials:该项目是一系列小而专注的教程 - 每个教程都涵盖 Java 生态系统中单一且定义明确的开发领域。 当然,它们的重点是 Spring Framework - Spring,Spring Boot 和 Spring Securiyt。 除了 Spring 之外,还有以下技术:核心 Java,Jackson,HttpClient,Guava。
  8. JCSprout :处于萌芽阶段的 Java 核心知识库。
  9. fullstack-tutorial :后台技术栈/架构师之路/全栈开发社区,春招/秋招/校招/面试。
  10. JavaFamily :【互联网一线大厂面试+学习指南】进阶知识完全扫盲。
  11. JGrowing :Java is Growing up but not only Java。Java 成长路线,但学到不仅仅是 Java。
  12. interview_internal_reference :2019年最新总结,阿里,腾讯,百度,美团,头条等技术面试题目,以及答案,专家出题人分析汇总。
  13. effective-java-3rd-chinese:Effective Java中文版(第3版),Java 四大名著之一,本书一共包含90个条目,每个条目讨论Java程序设计中的一条规则。这些规则反映了最有经验的优秀程序员在实践中常用的一些有益的做法。
  14. OnJava8:《On Java 8》中文版,又名《Java编程**》第5版, Java 四大名著之一。
  15. java-design-patterns : Design patterns implemented in Java。

数据结构/算法

  1. LeetCodeAnimation :Demonstrate all the questions on LeetCode in the form of animation.(用动画的形式呈现解 LeetCode 题目的思路)。
  2. TheAlgorithms-Java :All Algorithms implemented in Java。
  3. leetcode :多种编程语言实现 LeetCode、《剑指 Offer(第 2 版)》、《程序员面试金典(第 6 版)》题解。
  4. LeetCode-Solution-in-Good-Style :这个项目是作者在学习《算法与数据结构》的时候,在 LeetCode(力扣) 上做的练习,刷题以 Java 语言为主。作者在刷题的时候,非常考虑代码质量,他的很多问题的回答都被 Leetcode 官方精选,值得推荐!

计算机基础

  1. CS-Notes :技术面试必备基础知识、Leetcode 题解、后端面试、Java 面试、春招、秋招、操作系统、计算机网络、系统设计。
  2. Waking-Up :计算机基础(计算机网络/操作系统/数据库/Git...)面试问题全面总结,包含详细的follow-up question以及答案;全部采用【问题+追问+答案】的形式,即拿即用,直击互联网大厂面试🚀;可用于模拟面试、面试前复习、短期内快速备战面试...

SpringBoot

  1. springboot-guide :SpringBoot 核心知识点总结。 基于 Spring Boot 2.19+。
  2. SpringAll :循序渐进,学习 Spring Boot、Spring Boot & Shiro、Spring Cloud、Spring Security & Spring Security OAuth2,博客 Spring 系列源码。
  3. springboot-learning-example :Spring Boot 实践学习案例,是 Spring Boot 初学者及核心技术巩固的最佳实践。
  4. spring-boot-demo :spring boot demo 是一个用来深度学习并实战 spring boot 的项目,目前总共包含 63 个集成 demo,已经完成 52 个。
  5. SpringBoot-Labs :Spring Boot 系列教程。

SpringCloud

  1. SpringCloudLearning : 方志朋的《史上最简单的 Spring Cloud 教程源码》。
  2. SpringCloud-Learning : Spring Cloud 基础教程,持续连载更新中。
  3. spring-cloud : 《Spring Cloud 微服务-全栈技术与案例解析》和《Spring Cloud 微服务 入门 实战与进阶》配套源码。
  4. spring-cloud-examples :Spring Cloud 学习案例,服务发现、服务治理、链路追踪、服务监控等 (基本没更新了,Spring Cloud 比较老了)。
  5. SpringCloud :基于 SpringCloud2.1 的微服务开发脚手架,整合了 spring-security-oauth2、nacos、feign、sentinel、springcloud-gateway 等。服务治理方面引入 elasticsearch、skywalking、springboot-admin、zipkin 等,让项目开发快速进入业务开发,而不需过多时间花费在架构搭建上。

大数据

  1. BigData-Notes :大数据入门指南 ⭐️。
  2. flink-learning :含 Flink 入门、概念、原理、实战、性能调优、源码解析等内容。

实战项目

Guide哥注:下面这些推荐的项目几乎都和 Spring Boot 有关,毕竟这年头没有理由再搞 SSM/SSH 这些东西了。

商城系统

Guide哥注:下面的商城系统大多比较复杂比如 mall ,如果没有 Java 基础和 Spring Boot 都还没有摸熟的话不推荐过度研究下面几个项目或者使用这些项目当作毕业设计。

  1. mall :mall 项目是一套电商系统,包括前台商城系统及后台管理系统,基于 SpringBoot+MyBatis 实现。
  2. mall-swarm : mall-swarm 是一套微服务商城系统,采用了 Spring Cloud Greenwich、Spring Boot 2、MyBatis、Docker、Elasticsearch 等核心技术,同时提供了基于 Vue 的管理后台方便快速搭建系统。
  3. onemall :mall 商城,基于微服务的**,构建在 B2C 电商场景下的项目实战。核心技术栈,是 Spring Boot + Dubbo 。未来,会重构成 Spring Cloud Alibaba 。
  4. litemall : 又一个小商城。litemall = Spring Boot 后端 + Vue 管理员前端 + 微信小程序用户前端 + Vue 用户移动端。
  5. xmall :基于SOA架构的分布式电商购物商城 前后端分离 前台商城:Vue全家桶 后台管理系统:Spring/Dubbo/SSM/Elasticsearch/Redis/MySQL/ActiveMQ/Shiro/Zookeeper等
  6. newbee-mall :newbee-mall 项目(新蜂商城)是一套电商系统,包括 newbee-mall 商城系统及 newbee-mall-admin 商城后台管理系统,基于 Spring Boot 2.X 及相关技术栈开发。

博客/论坛/其他

Guide哥注:下面这几个项目都是非常适合 Spring Boot初学者学习的,下面的大部分项目的总体代码架构我都看过,个人觉得还算不错,不会误导没有实际做过项目的老哥,特别是前两个项目 vhr 和 favorites-web 。

  1. vhr :微人事是一个前后端分离的人力资源管理系统,项目采用 SpringBoot+Vue 开发。
  2. favorites-web :云收藏 Spring Boot 2.X 开源项目。云收藏是一个使用 Spring Boot 构建的开源网站,可以让用户在线随时随地收藏的一个网站,在网站上分类整理收藏的网站或者文章。
  3. community :开源论坛、问答系统,现有功能提问、回复、通知、最新、最热、消除零回复功能。功能持续更新中…… 技术栈 Spring、Spring Boot、MyBatis、MySQL/H2、Bootstrap。
  4. VBlog :V部落,Vue+SpringBoot实现的多用户博客管理平台!
  5. My-Blog : My Blog 是由 SpringBoot + Mybatis + Thymeleaf 等技术实现的 Java 博客系统,页面美观、功能齐全、部署简单及完善的代码,一定会给使用者无与伦比的体验。

权限管理系统

Guide哥注:权限管理系统在企业级的项目中一般都是非常重要的,如果你需求去实际了解一个不错的权限系统是如何设计的话,推荐你可以参考下面这些开源项目。

  1. Spring-Cloud-Admin :Cloud-Admin 是国内首个基于 Spring Cloud 微服务化开发平台,具有统一授权、认证后台管理系统,其中包含具备用户管理、资源权限管理、网关 API 管理等多个模块,支持多业务系统并行开发,可以作为后端服务的开发脚手架。代码简洁,架构清晰,适合学习和直接项目中使用。核心技术采用 Spring Boot2 以及 Spring Cloud Gateway 相关核心组件,前端采用 vue-element-admin 组件。
  2. pig:(gitee)基于 Spring Boot 2.2、 Spring Cloud Hoxton & Alibaba、 OAuth2 的 RBAC 权限管理系统。
  3. FEBS-Shiro :Spring Boot 2.1.3,Shiro1.4.0 & Layui 2.5.4 权限管理系统。
  4. eladmin : 项目基于 Spring Boot 2.1.0 、 Jpa、 Spring Security、redis、Vue的前后端分离的后台管理系统,项目采用分模块开发方式, 权限控制采用 RBAC,支持数据字典与数据权限管理,支持一键生成前后端代码,支持动态路由。

快速开发脚手架

相关文章

  1. 听说你要接私活?Guide连夜整理了5个开源免费的Java项目快速开发脚手架。
  2. 解放双手,再来推荐5个Java项目开发快速开发脚手架!项目经验和私活都不愁了!
  1. RuoYi :RuoYi 一款基于基于 SpringBoot 的权限管理系统 易读易懂、界面简洁美观,直接运行即可用 。
  2. Guns : 我在上大学的时候就了解和接触过了这个项目,当时我还是一个 Spring 入门不太久的小菜鸟。一晃,不经意间已经过去快 3 年了。Guns 功能齐全 ,采用主流框架Spring Boot2.0+开发,并且支持 Spring Cloud Alibaba 微服务)。 适合企业后台管理网站的快速开发场景,不论是对于单体和微服务都有支持。
  3. SpringBlade :SpringBlade 是一个由商业级项目升级优化而来的 SpringCloud 分布式微服务架构、SpringBoot 单体式微服务架构并存的综合型项目,采用 Java8 API 重构了业务代码,完全遵循阿里巴巴编码规范。采用 Spring Boot 2 、Spring Cloud Hoxton 、Mybatis 等核心技术,同时提供基于 React 和 Vue 的两个前端框架用于快速搭建企业级的 SaaS 多租户微服务平台。
  4. renren : renren 下面一共开源了两个 Java 项目开发脚手架:①renren-security :采用 Spring、MyBatis、Shiro 框架,开发的一套轻量级权限系统,极低门槛,拿来即用。②renren-fast : 一个轻量级的 Java 快速开发平台,能快速开发项目并交付【接私活利器】
  5. COLA :根据我的了解来看,很多公司的项目都是基于 COLA 进行开发的,相比于其他快速开发脚手架,COLA 并不提供什么已经开发好的功能,它提供的主要是一个干净的架构,然后你可以在此基础上进行开发。通过一行命令就生成好的 web 后端项目骨架。

系统设计

微服务/分布式

基础框架

  1. spring-boot :Spring Boot 可以轻松创建独立的生产级基于 Spring 的应用程序,内置 web 服务器让你可以像运行普通 Java 程序一样运行项目。另外,大部分 Spring Boot 项目只需要少量的配置即可,这有别于 Spring 的重配置。
  2. spring-cloud-alibaba : Spring Cloud Alibaba 致力于提供微服务开发的一站式解决方案。此项目包含开发分布式应用微服务的必需组件,方便开发者通过 Spring Cloud 编程模型轻松使用这些组件来开发分布式应用服务。
  3. spring-cloud-kubernetes : Kubernetes 集成 Spring Cloud Discovery Client, Configuration, etc...。

Spring Cloud Alibaba 相关

  1. Sentinel :A lightweight powerful flow control component enabling reliability and monitoring for microservices. (轻量级的流量控制、熔断降级 Java 库)。
  2. dubbo :Apache Dubbo 是一个基于 Java 的高性能开源 RPC 框架。
  3. nacos :Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。Nacos 可以作为 Dubbo 的注册中心来使用。
  4. seata : Seata 是一种易于使用,高性能,基于 Java 的开源分布式事务解决方案。
  5. RocketMQ :阿里巴巴开源的一款高性能、高吞吐量的分布式消息中间件。

API 网关

  1. kong :Kong 是一个云本地的、快速的、可伸缩的分布式微服务抽象层(也称为 API 网关、API 中间件或在某些情况下称为服务网格)。2015 年作为开源项目发布,其核心价值是高性能和可扩展性。
  2. soul :高性能、基于 webflux 的反应式 Java API 网关

其他

  1. skywalking : 针对分布式系统的应用性能监控,尤其是针对微服务、云原生和面向容器的分布式系统架构。
  2. apollo :Apollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性,适用于微服务配置管理场景。
  3. zipkin :Zipkin 是一个分布式跟踪系统。它有助于收集解决服务体系结构中的延迟问题所需的时序数据。功能包括该数据的收集和查找。

分布式任务调度/定时任务

相关阅读:Spring Job、Quartz、XXL-Job对比+全解析

  1. quartz :一个很火的开源任务调度框架,Java定时任务领域的老大哥或者说参考标准, 很多其他任务调度框架都是基于 quartz 开发的,比如当当网的elastic-job 就是基于quartz二次开发之后的分布式调度解决方案
  2. xxl-job :XXL-JOB是一个分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。
  3. Elastic-Job :Elastic-Job是当当网开源的一个基于Quartz和Zookeeper的分布式调度解决方案,由两个相互独立的子项目Elastic-Job-Lite和Elastic-Job-Cloud组成,一般我们只要使用Elastic-Job-Lite就好。
  4. EasyScheduler ( 更名为DolphinScheduler,已经成为 Apache 孵化器项目): Easy Scheduler 是一个分布式工作流任务调度系统,主要解决“复杂任务依赖但无法直接监控任务健康状态”的问题。Easy Scheduler 以 DAG 方式组装任务,可以实时监控任务的运行状态。同时,它支持重试,重新运行等操作... 。

消息中间件

  1. RocketMQ :阿里巴巴开源的一款高性能、高吞吐量的分布式消息中间件。
  2. Kafaka: Kafka 是一种分布式的,基于发布 / 订阅的消息系统。关于它的入门可以查看:Kafka 入门看这一篇就够了
  3. RabbitMQ :由 erlang 开发的基于 AMQP(Advanced Message Queue 高级消息队列协议)协议实现的消息队列。

搜索引擎

  1. elasticsearch:开源,分布式,RESTful 搜索引擎。

数据库

数据库连接池

  1. druid : 阿里巴巴数据库事业部出品,为监控而生的数据库连接池。
  2. HikariCP : 一个可靠的高性能 JDBC 连接池。

分布式数据库中间件

  1. shardingsphere :ShardingSphere是一套开源的分布式数据库中间件解决方案组成的生态圈,它由Sharding-JDBC、Sharding-Proxy和Sharding-Sidecar(计划中)这3款相互独立的产品组成。 他们均提供标准化的数据分片、分布式事务和数据库治理功能,可适用于如Java同构、异构语言、云原生等各种多样化的应用场景。中文文档:https://shardingsphere.apache.org/document/current/cn/overview/
  2. MyCat : MyCat 是数据库分库分表的中间件,MyCat 使用最多的两个功能是:读写分离和分库分表。

Redis相关

  1. redissonRedisson是架设在Redis基础上的一个 Java 驻内存数据网格(In-Memory Data Grid)。支持超过 30 个对象和服务:Set, multiap, SortedSet, Map, List, Queue, Deque, Semaphore, Lock, AtomicLong, Map Reduce, Publish / Subscribe, Bloom filter, Spring Cache, Tomcat, Scheduler, JCache API, Hibernate, RPC。Redisson 项目介绍

框架

  1. mybatis-3 : 适用于 Java 的 MyBatis SQL 映射器框架。

大数据

  1. spark :Spark是用于大规模数据处理的统一分析引擎。
  2. flink :Apache Flink 是一个框架和分布式处理引擎,用于在无边界和有边界数据流上进行有状态的计算。Flink 能在所有常见集群环境中运行,并能以内存速度和任意规模进行计算。
  3. hbase: HBase – Hadoop Database,是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBase技术可在廉价PC Server上搭建起大规模结构化存储集群。
  4. flume :Apache Flume是一个分布式的、可靠的、可用的,从多种不同的源收集、聚集、移动大量日志数据到集中数据存储的系统。
  5. storm : 一个分布式,高容错的实时计算系统。

开放平台(如微信)

  1. WxJava : WxJava (微信开发 Java SDK),支持包括微信支付、开放平台、小程序、企业微信/企业号和公众号等的后端开发。

测试

  1. mockito :Mockito是一个模拟测试框架,可以让你用优雅,简洁的接口写出漂亮的单元测试。(对那些不容易构建的对象用一个虚拟对象来代替,使其在调试期间用来作为真实对象的替代品)

机器学习

  1. smile :基于Java和Scala的机器学习库。

其他

  1. canal :阿里巴巴 MySQL binlog 增量订阅&消费组件。
  2. DataX :DataX 是阿里巴巴集团内被广泛使用的离线数据同步工具/平台,实现包括 MySQL、Oracle、SqlServer、Postgre、HDFS、Hive、ADS、HBase、TableStore(OTS)、MaxCompute(ODPS)、DRDS 等各种异构数据源之间高效的数据同步功能。
  3. cat : CAT 作为服务端项目基础组件,提供了 Java, C/C++, Node.js, Python, Go 等多语言客户端,已经在美团点评的基础架构中间件框架(MVC 框架,RPC 框架,数据库框架,缓存框架等,消息队列,配置系统等)深度集成,为美团点评各业务线提供系统丰富的性能指标、健康状况、实时告警等。
  4. server : 野火 IM 是一套跨平台、核心功能开源的即时通讯解决方案。
  5. halo :Halo 可能是最好的 Java 博客系统。
  6. generator-jhipster :开源应用程序平台,可在几秒钟内创建Spring Boot + Angular / React项目!
  7. jeecg-boot :一款基于代码生成器的JAVA快速开发平台,开源界“小普元”超越传统商业企业级开发平台!

Devpos

CI

  1. jenkins : Jenkins是领先的开源自动化服务器。它使用Java构建,提供了1600多个插件来支持几乎任何东西的自动化,从而使人类实际上可以将时间花在做机器无法做到的事情上。

工具

常用工具类/代码质量

  1. lombok :使用 Lombok 我们可以简化我们的 Java 代码,比如使用它之后我们通过注释就可以实现 getter/setter、equals等方法。
  2. guava :Guava 是一组核心库,其中包括新的集合类型(例如 multimap 和 multiset),不可变集合,图形库以及用于并发、I / O、哈希、原始类型、字符串等的实用程序!
  3. p3c :Alibaba Java Coding Guidelines pmd implements and IDE plugin。Eclipse 和 IDEA 上都有该插件,推荐使用!
  4. arthas : Arthas 是 Alibaba 开源的 Java 诊断工具。
  5. sonarqube :SonarQube 支持所有开发人员编写更干净,更安全的代码。
  6. checkstyle :Checkstyle 是一种开发工具,可帮助程序员编写符合编码标准的 Java 代码。它使检查 Java 代码的过程自动化,从而使人们不必执行这项无聊(但很重要)的任务。这使其成为想要实施编码标准的项目的理想选择。
  7. pmd : 可扩展的多语言静态代码分析器。
  8. spotbugs :SpotBugs 是 FindBugs 的继任者。静态分析工具,用于查找 Java 代码中的错误。
  9. hutool : Hutool 是一个 Java 工具包,也只是一个工具包,它帮助我们简化每一行代码,减少每一个方法,让 Java 语言也可以“甜甜的”。

Excel

  1. easyexcel :快速、简单避免OOM的java处理Excel工具。

PDF

  1. pdfbox :用于处理PDF文档的开放源码Java工具。该项目允许创建新的PDF文档、对现有文档进行操作以及从文档中提取内容。PDFBox还包括几个命令行实用程序。PDFBox是在Apache 2.0版许可下发布的。
  2. OpenPDF :OpenPDF是一个免费的Java库,用于使用LGPL和MPL开源许可创建和编辑PDF文件。OpenPDF基于iText的一个分支。
  3. itext7 :iText 7代表了想要利用利用好 PDF 的开发人员的更高级别的 sdk。iText 7配备了更好的文档引擎、高级和低级编程功能以及创建、编辑和增强 PDF 文档的能力,几乎对每个工作流都有好处。
  4. FOP :Apache FOP 项目的主要的输出目标是PDF。

开发必备

API 请求

  1. Insomnia :像人类而不是机器人一样调试API。我平时经常用的,界面美观且轻量,总之很喜欢。
  2. postman :API 请求生成器。
  3. postwoman :API 请求生成器-一个免费、快速、漂亮的 Postma 替代品。

Markdown

  1. Typora :我一直用的一款 Markdown 工具,直接文件夹试图和目录试图,支持 Markdown 格式直接导出成 PDF、HTML 等格式。
  2. markdown-here :使用 markdown 语法发邮件,并且提供多种主题,快来拯救你的邮件格式吧!

其他

  1. ip2region :最自由的ip地址查询库,ip到地区的映射库,提供Binary,B树和纯内存三种查询算法,妈妈再也不用担心我的ip地址定位。
  2. thingsboard :开源物联网平台 - 设备管理,数据收集,处理和可视化。

说明

公众号

成员列表