Apache 软件基金会

Apache 软件基金会,全称:Apache Software Foundation,简称:ASF,成立于 1999 年 7 月,是目前世界上最大的最受欢迎的开源软件基金会,也是一个专门为支持开源项目而生的非盈利性组织。

来看看 Apache 软件基金会现在的成绩:

  • 管理了超过两亿行的代码;
  • 提交了 1,119,785,328 行代码;
  • 3,231,428 次代码提交;
  • 765 个 ASF 个人会员;
  • 7,600 个 代码提交者;
  • 所有志愿者的社区;
  • 350+ 项目和提议;
  • 300 +顶级项目;
  • 52 个孵化器项目;

以上信息来源 Apache 官网,你看本文的时候可能会有更新。

https://www.apache.org/

据 Apache 统计,目前整个 Apache 软件基金会有价值超过 200+ 亿美元的开源软件和项目,免费提供给开发者使用,并使全世界数十亿的用户受益。

看到这里,我只能说 Apache 牛逼,下面我要整理的,可能都是我们日常开发过程中都会遇到的顶级开源项目,看看你用过几个,没用过的也可以学习了解下,日后总有用武之地。

顶级开源项目

基础组件项目

1、Apache(httpd)

项目主页:

http://httpd.apache.org/

Apache 中文名:阿帕奇,全称:Apache HTTP Server,后来改名叫 "httpd",是 Apache 软件基金会的一个开源 HTTP 服务器,能够运行于 UNIX 和 Windows 上的安全、高效和可扩展服务器。

Apache 估计也是最早的开源项目了,1995 年就推出来了,自从 1996 年 4 月开始就一直是互联网上最流行的 web 服务器了,2020 年 2 月,它度过了它的 25 岁生日。

Apache 适合做HTML、图片等静态资源服务,可以用来部署静态网站,类似于 Nginx,不过 Nginx 要更强大,现在用 Nginx 的比较多。

2、Tomcat

项目主页:

http://tomcat.apache.org/

这个做 Java 的没人不认识吧,记得在学校的时候学 Java 最经典的软件就是这只汤姆猫了,当时还是 Tomcat 6 的时代,现在是 8 的时代,最新已经到 10 了。

Tomcat 就是一个 Apache 开源的 Web 应用服务器,支持 Java Servlet, JavaServer Pages, Java Expression Language 和 Java WebSocket 技术,其实就是为 Java 而生。

虽然这些年 Tomcat 漏洞一直有,不能和其他收费的比,但它开源啊、免费啊,现在仍是 Java 界最主流的应用服务器。

3、Commons

项目主页:

http://commons.apache.org/

Apache Commons 是包含一系列 Java 公共组件的项目,可以理解为 Java 开发工具包、公共类库,最经典的莫非 commons-lang3 类库了:

<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
</dependency>

Apache Commons 提供了一系列额外的 Java 核心 API,用的最多的 StringUtils 想必大家都知道了。

除了 commons-lang3 类库,Apache Commons 目前共提供了 43 个十分好用的类库,比如:

  • commons-io:这是一个有效开发 IO 功能的实用类库,很多 Java IO 处理都不能自己封装;
  • commons-codec:这个类库提供了常用的编码器和解码器,比如:Base64、十六进制、语音和 url 的编码解码等;
  • commons-collections:这个类库是专门处理集合的,很多集合处理也不用自己写了;
  • commons-fileupload:这个类库提供了非常容易的、健壮的、高性能的文件上传功能;
  • ……

更多请参考上方的项目主页链接,其实 Apache Commons 提供了许多这些公用类库,我们真的没有必要重复造轮子,直接拿来用就好了。

4、POI

项目主页:

http://poi.apache.org/

做过 Java Web 传统后台项目的都知道 POI 类库吧,POI 提供了一系列的 Java API 对 Microsoft Office 格式档案读写处理,如:Excel、Word、PowerPoint 等文件的读写,非常强大。

5、HttpComponents

项目主页:

http://hc.apache.org/

Apache HttpComponents 提供了 HTTP 和相关协议的一系列 Java 组件和工具集,包括:HttpCore、HttpClient、HttpAsyncClient 三个组件,大家用的最多的 HTTP 客户端 HttpClient 应该都清楚了吧,就是这个开源项目的组件之一。

最新的 HttpClient 都到 httpclient5 了:

<dependency>
<groupId>org.apache.httpcomponents.client5</groupId>
<artifactId>httpclient5</artifactId>
<version>5.0.1</version>
</dependency

6、logging services

项目主页:

http://logging.apache.org/

Apache logging services:即 Apache 日志服务,做 Java 都知道 Log4j 吧,也是用的最多的日志框架,就是属于这个开源项目,另外还包含还有 Log4j 2、log4php、log4cxx 等其他语言的日志框架。

7、Ant

项目主页:

http://ant.apache.org/

Apache Ant 是一个比较老的 Java 项目编译和构建工具,现在已经用的比较少了,已经被 Maven/ Gradle 替代了。

8、Maven

项目主页:

http://maven.apache.org/

Apache Maven 算是 Apache Ant 的终结者,是现在最主流的软件项目管理工具之一,提供项目自动编译、单元测试、打包、发布等一系列生命周期的管理。

这里就不展开介绍了,相信大家大部分人所在公司都已经在用它,想系统学习的,我之前也写过不少教程,关注Java技术栈公众号在后台回复 Maven 即可快速阅读。

9、Subversion

项目主页:

http://subversion.apache.org/

没错,Subversion 就是指牛逼哄哄的 SVN,创建于 2000 年,是 Apache 开源的版本控制软件,代码版本控制、文件版本控制没人没用过它吧?

Web 项目

10、Struts

项目主页:

http://struts.apache.org/

Struts 是一个免费开源的 MVC 框架,用于创建 Java web 应用程序。Struts 那些年可谓是风光无限啊,Struts2 + Spring + Hibernate 三大框架一起组成了 "SSH"————牛逼哄哄的 Java Web 框架三剑客。

不过 Struts 漏洞太多了,随着 Spring MVC, Spring Boot 的兴起,现在它也逐渐被淘汰了,具体可以点击这里看下这篇文章。

11、FreeMarker

项目主页:

https://freemarker.apache.org/

Apache FreeMarker 是一个基于模板和数据生成文本输出 HTML 页面、电子邮件、配置文件、源代码等的一个 Java 模板引擎库。

用的最多的就是利用 FreeMarker 模板来生成静态页面,FreeMarker 也是 Spring Boot 支持自动配置的四大模板引擎之一。

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-freemarker</artifactId>
<version>2.3.1.RELEASE</version>
</dependency>

12、Velocity

项目主页:

http://velocity.apache.org/

Velocity 是一个基于 Java 语言的模板引擎,它允许任何人使用简单而强大的模板语言来引用 Java 代码中定义的对象。

但是,由于 Velocity 长期未更新,所以 Spring Boot 1.5.x 之后不再支持 Velocity,建议大家使用其他模板引擎。

上次更新还是 2010 年。

13、Tapestry

项目主页:

https://tapestry.apache.org/

Tapestry 在 Java Web 开发界也是鼎鼎有名的,我知道的之前就有一些公司都用过它。它是一个面向组件的 Web 框架,用于在 Java 中创建高度可伸缩的 Web 应用程序。

14、Shiro

项目主页:

http://shiro.apache.org/

做 Java Web 后台开发的程序员应该没人不知道强大 Shiro 了,Apache Shiro 是一个功能强大且易于使用的 Java 安全框架,可用于身份验证、授权、加密和会话管理等。

另外,通过 Apache Shiro 易于理解的API、细致化的权限控制,我们可以快速、轻松地开发和保护企业应用程序。

分布式项目

15、Dubbo

项目主页:

http://dubbo.apache.org/

对于 Dubbo,做分布式、微服务的程序员朋友们应该都再清楚不过了,它最初是由阿里巴巴开源的分布式服务框架(RPC),一段时间停止维护后,后来又重启维护并捐献给了 Apache 软件基金会。

即使现在 Spring Cloud 微服务的兴起,Dubbo 现在在很多企业也还是在大量运用的,随着 Dubbo 的重启维护并且捐献给 Apache 软件基金会,它的明天会越来越好。

16、Thrift

项目主页:

http://thrift.apache.org/

Apache Thrift 也是一款优秀的、非常轻量级的 RPC 框架,也是大名鼎鼎,最初由 Facebook 进行开发,后来捐献给了 Apache 软件基金会。

Apache Thrift 支持可扩展的跨语言服务化开发,支持多种语言,如 C++, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, JavaScript, Node.js, Smalltalk, OCaml, Delphi 等,十分强大。

17、Zookeeper

项目主页:

http://zookeeper.apache.org/

Apache Zookeeper 也是一个分布式中间件神器,是 Google Chubby 的一个开源实现,可用于做配置中心、分布式锁等,最主要一点是它可以用来支持高度可靠的分布式服务协调中间件。

现在市面上的一些主流的开源项目都有 Zookeeper 的身影,如:Hadoop、Dubbo、Kafka、ElasticJob 等。

18、Curator

项目主页:

http://curator.apache.org/

Apache Curator 是 ZooKeeper 的 Java 客户端,它包括一系列高级 API 和工具,简化了使用 ZooKeeper 的操作,可以更容易、可靠地使用 ZooKeeper。

19、SkyWalking

项目主页:

http://skywalking.apache.org/

Apache SkyWalking 是一个可观测性分析平台和应用性能管理系统,提供分布式跟踪、指标监控、性能诊断、度量汇总和可视化一体化的解决方案。

Apache SkyWalking 支持 Java,net Core, PHP, NodeJS, Golang, LUA 的代理,还支持 Istio + Envoy Service Mesh,特别为微服务、云本机和基于容器(如:Docker, K8s, Mesos)架构设计的。

20、ShardingSphere

项目主页:

http://shardingsphere.apache.org/

Apache ShardingSphere 是由一组分布式数据库中间件解决方案组成的开源生态系统,包括 3 个独立的产品:JDBC, Proxy & Sidecar (计划中)。它们都提供了数据分片、分布式事务和数据库编排功能,适用于 Java 同构、异构语言和云原生等多种场景。

搜索项目

21、Lucene

项目主页:

https://lucene.apache.org/

Apache Lucene 是一个顶级的开源搜索框架,包括一个核心搜索库:Lucene core,以及一个搜索服务器:Solr。

Lucene Core 是一个提供强大的索引和搜索功能的 Java 库,以及拼写检查、高亮显示和高级分析/标记功能。

Solr 是使用 Lucene Core 构建的高性能搜索服务器。Solr 具有高伸缩性,提供完全容错的分布式索引、搜索和分析功能。

消息中间件项目

22、ActiveMQ

项目主页:

http://activemq.apache.org/

Apache ActiveMQ 是一款灵活、强大的多协议开源消息中间件,支持 JMS 1.1 & 2.0,也是目前最流行的基于 Java 的消息中间件之一。

它支持行业标准协议,所以用户可以跨广泛的语言和平台选择最合适的客户端,如 C、c++、Python、. net 等更多其他语言。

23、RocketMQ

项目主页:

http://rocketmq.apache.org/

Apache RocketMQ 真的是一款重量级、极具竞争力的消息队列产品,是由阿里巴巴 2012 年开源的分布式消息中间件,也是一款轻量级的数据处理平台,2016 年捐赠给了 Apache 软件基金会,2017 年正式毕业。

24、Kafka

项目主页:

http://kafka.apache.org/

Apache Kafka 也是一款重量级开源项目,最初由 Linkedin 公司进行开发,后来捐献给了 Apache 软件基金会。

Apache Kafka 它是一种分布式、高吞吐量的发布订阅消息系统(MQ),它的最大的特性就是,可以实时好处理大量数据以满足各种需求和业务场景。

大数据/数据库项目

25、Hadoop

项目主页:

http://hadoop.apache.org/

做大数据的没有不知道 Apache Hadoop 的,它是一种高可靠、可伸缩、分布式大数据处理框架,也是一套大数据行业公认的标准框架。

Apache Hadoop 成立于 2002 年,曾是 Apache Lucene 的子项目之一,2008 年正式成为 Apache 的顶级项目。

26、HBase

项目主页:

http://hbase.apache.org/

Apache HBase 是一个建立在 Hadoop HDFS 的非关系数据库,以分布式、可扩展进行大数据存储,如果需要对大数据进行随机、实时的读写访问时,可以使用 Apache HBase。

27、Pig

项目主页:

http://pig.apache.org/

Apache Pig 是一个基于 Hadoop 的大数据分析平台,是 Map Reduce 的一个抽象,提供类似于 SQL 的面向数据流的 Pig Latin 高级语言。

Pig Latin 提供了各种操作符,以及丰富的数据类型,从而可以很轻松地执行 Map Reduce 任务。

28、Hive

项目主页:

http://hive.apache.org/

Apache Hive 是一个基于 Hadoop 的数据仓库工具,用来提取、转化和加载数据,它可以将 Hadoop 原始结构化数据映射为 Hive 中的一张表,并提供了类似 SQL 的 HiveQL 语言查询功能。

29、Spark

项目主页:

http://spark.apache.org/

Apache Spark 是一个用于大规模数据处理的统一分析引擎,它也被认为是第二代大数据技术,第一代是基于 Hadoop 的 Map Reduce 模型。

Apache Spark 它本身不会进行分布式数据的存储,所以它必须要集成其他的分布式文件系统才能工作,一船要与 Apache Hadoop 的 HDFS 结合使用,但这不是必须的,也可以选择其他的数据系统平台进行集成。

30、Flink

项目主页:

https://flink.apache.org/

Apache Flink 是一个分布式处理引擎框架,用于无边界和有边界数据流上的有状态计算。Flink 被设计用于在所有常见的集群环境中运行,以内存速度和任何规模执行计算。

31、Storm

项目主页:

http://storm.apache.org/

Apache Storm 是一个分布式实时计算系统,它能够轻松可靠地处理数据流,就像 Hadoop 那样进行实时批处理,并且可以与任何编程语言一起使用,而且使用起来非常方便。

32、Cassandra

项目主页:

https://cassandra.apache.org/

Apache Cassandra 是一款可伸缩、高可用、高性能去中心化的分布式数据库,当时是 Facebook 在 2007 年为了解决消息收件箱搜索问题而开始设计的,后来被转移到了 Apache 软件基金会成为顶级项目。

33、CouchDB

项目主页:

https://couchdb.apache.org/

Apache CouchDB 是一个面向文档的分布式数据库,它以 JSON 作为存储格式,JavaScript 作为查询语言,提供直观可靠的 Restful API 接口进行操作,最显著的特点就是支持多主复制。

编程语言、工具项目

34、Groovy

项目主页:

http://groovy.apache.org/

Apache Groovy 是一个功能十分强大的基于 JVM 平台的动态编程语言,语法与 Java 十分相似,并且兼容 Java,但 Groovy 要更简洁、优美,更易于学习,开发效率也非常高。

35、NetBeans

项目主页:

http://netbeans.apache.org/

NetBeans 是一款老牌的开源开发工具(IDE),集成开发环境和应用框架,支持 Java, JavaScript, PHP 等更多编程语言,最初由 SUN 公司开发,后来被 Oracle 收购,再后来被 Oracle 捐献给了 Apache 软件基金会。

总结

相信今天栈长分享的 35 个顶级项目大家都接触过或者听说过,虽然有些面临淘汰,但它们个个都是重磅,曾经也都风光过,正是有了这些开源项目,我们 Java 生态圈才会越来越繁荣。

最后,这篇文章写完真心不容易啊,抽空陆陆续续写了好些天,觉得本文不错,也欢迎点赞转发哦!

大家也可以持续关注公众号Java技术栈,栈长也将继续分享好玩的 Java 项目和工具,公众号第一时间推送。

你还知道哪些重磅的 Apache 顶级项目,欢迎留言分享~

推荐去我的博客阅读更多:

1.Java JVM、集合、多线程、新特性系列教程

2.Spring MVC、Spring Boot、Spring Cloud 系列教程

3.Maven、Git、Eclipse、Intellij IDEA 系列工具教程

4.Java、后端、架构、阿里巴巴等大厂最新面试题

觉得不错,别忘了点赞+转发哦!

盘点 35 个 Apache 顶级项目,我拜服了…的更多相关文章

  1. Dubbo下一站:Apache顶级项目

    导读: 近日,在Apache Dubbo开发者沙龙杭州站的活动中,阿里巴巴中间件技术专家曹胜利(展图)向开发者们分享了Dubbo2.7版本的规划. 本文将为你探秘 Dubbo 2.7背后的思考和实现方 ...

  2. 我给 Apache 顶级项目提了个 Bug

    这篇文章记录了给 Apache 顶级项目 - 分库分表中间件 ShardingSphere 提交 Bug 的历程. 说实话,这是一次比较曲折的 Bug 跟踪之旅.10月28日,我们在 GitHub 上 ...

  3. Apache 顶级项目 Apache Pulsar 成长回顾

    关于 Apache Pulsar Apache Pulsar 是 Apache 软件基金会顶级项目,是下一代云原生分布式消息流平台,集消息.存储.轻量化函数式计算为一体,采用计算与存储分离架构设计,支 ...

  4. 特性预览:Apache 顶级项目 Apache Pulsar 2.6.1 版本

    在正式分享 2.6.1 版本更新细节之前,冉小龙首先为我们分享了两个相关 PIP 的内容. 一个是 PIP-47 中关于「基于时间来进行版本更新」的计划.该 PIP 提出后,从 2.5.0 版本到目前 ...

  5. 我给Apache顶级项目贡献了点源码。

    这是why技术的第 91 篇原创文章 这篇文章其实并没有什么技术性的分享,从我的角度而言,更多是记录和思考. 把我对于源码和之前写的部分文章反哺给我的一些东西,带来的一点点思考分享给大家. 一行源码 ...

  6. Apache顶级项目 Calcite使用介绍

    什么是Calcite Apache Calcite是一个动态数据管理框架,它具备很多典型数据库管理系统的功能,比如SQL解析.SQL校验.SQL查询优化.SQL生成以及数据连接查询等,但是又省略了一些 ...

  7. 盘点Apache毕业的11个顶级项目

    自1999年成立至今,Apache 软件基金会已成功建立起自己强大的生态圈.其社区涌现了非常多优秀的开源项目,同时有越来越多国内外项目走向这个国际开源社区进行孵化.据悉,目前所有的 Apache 项目 ...

  8. 官宣!DolphinScheduler 毕业成为 Apache 软件基金会顶级项目

    全球最大的开源软件基金会 Apache 软件基金会(以下简称 Apache)于北京时间 2021年4月9日在官方渠道宣布Apache DolphinScheduler 毕业成为Apache顶级项目.这 ...

  9. 官宣!ASF官方正式宣布Apache Hudi成为顶级项目

    马萨诸塞州韦克菲尔德(Wakefield,MA)- 2020年6月 - Apache软件基金会(ASF).350多个开源项目和全职开发人员.管理人员和孵化器宣布:Apache Hudi正式成为Apac ...

随机推荐

  1. Nslookup命令的使用 - [详细]

    用法一.查询IP地址 nslookup最简单的用法就是查询域名对应的IP地址,包括A记录和CNAME记录,如果查到的是CNAME记录还会返回别名记录的设置情况.其用法是: nslookup 域名 # ...

  2. GitHub 热点速览 Vol.28:有品位程序员的自我修养

    作者:HelloGitHub-小鱼干 摘要:一个程序员除了技术好,还得品位高,有什么比一个高颜值的 GUI 更能体现你品味的呢?rocketredis 就是一个高颜值.简约的 Redis 管理界面,比 ...

  3. Vue小功能-视频播放之video.js

        最近在练手一个小项目,想给首页增加一个视频介绍(如下图).涉及到了vue视频播放的功能,所以在网上了解了一下.     相关的插件是Video.js,官网讲解比较详细,我罗列出来,可以根据自己 ...

  4. java中同步异步阻塞和非阻塞的区别

    同步 所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回. 按照这个定义,其实绝大多数函数都是同步调用(例如sin, isdigit等).但是一般而言,我们在说同步.异步的时候,特 ...

  5. db2数据库基本添加删除表字段总结

    1.添加字段 alter table [table_name] add [column_name] [column_type] 2.更改字段类型 alter table  [table_name] a ...

  6. 30页软件测试人面试宝典文档资料,助你拿下了百度、美团、字节跳动、小米等大厂的offer【内含答案】

    前言:看了一下桌边的日历,新的6月,已经过去5天了.明天又是周六了,大家准备怎么度过呢?趁着大家周末给大家分享一个软件测试工程师面试题汇总. 拿到大厂的offer一直是软件测试朋友的一个目标,我是如何 ...

  7. 如何看待HTTP/3

    前言 HTTP/2 相比于 HTTP/1.1,可以说是大幅度提高了网页的性能,只需要升级到该协议就可以减少很多之前需要做的性能优化工作,当然兼容问题以及如何优雅降级应该是国内还不普遍使用的原因之一. ...

  8. Python3网络爬虫开发实战PDF高清完整版免费下载|百度云盘

    百度云盘:Python3网络爬虫开发实战高清完整版免费下载 提取码:d03u 内容简介 本书介绍了如何利用Python 3开发网络爬虫,书中首先介绍了环境配置和基础知识,然后讨论了urllib.req ...

  9. Java SE基础知识

    Java SE面试题 目录 Java SE基础 基本语法 数据类型 关键字 面向对象 集合 集合类概述 Collection接口 List Set Map Java SE基础 基本语法 数据类型 Ja ...

  10. 最长公共子序列dp入门

    #include <iostream> #include <string> #include <string.h> #include <vector> ...