1. 程式人生 > >盤點 35 個 Apache 頂級專案,我拜服了…

盤點 35 個 Apache 頂級專案,我拜服了…

## Apache 軟體基金會 Apache 軟體基金會,全稱:**Apache Software Foundation**,簡稱:**ASF**,成立於 1999 年 7 月,是目前世界上最大的最受歡迎的開源軟體基金會,也是一個專門為支援開源專案而生的非盈利性組織。 ![](https://img2020.cnblogs.com/other/1218593/202008/1218593-20200810094548719-1769498614.png) **來看看 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) ![](https://img2020.cnblogs.com/other/1218593/202008/1218593-20200810094549177-1781147752.png) 專案主頁: > 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 ![](https://img2020.cnblogs.com/other/1218593/202008/1218593-20200810094550022-1641268588.png) 專案主頁: > 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 ![](https://img2020.cnblogs.com/other/1218593/202008/1218593-20200810094550832-664873002.png) 專案主頁: > http://commons.apache.org/ Apache Commons 是包含一系列 Java 公共元件的專案,可以理解為 Java 開發工具包、公共類庫,最經典的莫非 `commons-lang3` 類庫了: ``` ``` 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 ![](https://img2020.cnblogs.com/other/1218593/202008/1218593-20200810094551165-754491367.png) 專案主頁: > http://poi.apache.org/ 做過 Java Web 傳統後臺專案的都知道 POI 類庫吧,POI 提供了一系列的 Java API 對 Microsoft Office 格式檔案讀寫處理,如:Excel、Word、PowerPoint 等檔案的讀寫,非常強大。 #### 5、HttpComponents ![](https://img2020.cnblogs.com/other/1218593/202008/1218593-20200810094551953-1766314462.png) 專案主頁: > http://hc.apache.org/ Apache HttpComponents 提供了 HTTP 和相關協議的一系列 Java 元件和工具集,包括:HttpCore、HttpClient、HttpAsyncClient 三個元件,大家用的最多的 HTTP 客戶端 HttpClient 應該都清楚了吧,就是這個開源專案的元件之一。 最新的 HttpClient 都到 httpclient5 了: ``` http://logging.apache.org/ Apache logging services:即 Apache 日誌服務,做 Java 都知道 Log4j 吧,也是用的最多的日誌框架,就是屬於這個開源專案,另外還包含還有 Log4j 2、log4php、log4cxx 等其他語言的日誌框架。 #### 7、Ant ![](https://img2020.cnblogs.com/other/1218593/202008/1218593-20200810094553139-391616160.jpg) 專案主頁: > http://ant.apache.org/ Apache Ant 是一個比較老的 Java 專案編譯和構建工具,現在已經用的比較少了,已經被 Maven/ Gradle 替代了。 #### 8、Maven ![](https://img2020.cnblogs.com/other/1218593/202008/1218593-20200810094553681-799953327.jpg) 專案主頁: > http://maven.apache.org/ Apache Maven 算是 Apache Ant 的終結者,是現在最主流的軟體專案管理工具之一,提供專案自動編譯、單元測試、打包、釋出等一系列生命週期的管理。 這裡就不展開介紹了,相信大家大部分人所在公司都已經在用它,想系統學習的,我之前也寫過不少教程,關注Java技術棧公眾號在後臺回覆 Maven 即可快速閱讀。 #### 9、Subversion ![](https://img2020.cnblogs.com/other/1218593/202008/1218593-20200810094554051-104132570.png) 專案主頁: > http://subversion.apache.org/ 沒錯,Subversion 就是指牛逼哄哄的 SVN,創建於 2000 年,是 Apache 開源的版本控制軟體,程式碼版本控制、檔案版本控制沒人沒用過它吧? ## Web 專案 #### 10、Struts ![](https://img2020.cnblogs.com/other/1218593/202008/1218593-20200810094555277-1271566828.png) 專案主頁: > http://struts.apache.org/ Struts 是一個免費開源的 MVC 框架,用於建立 Java web 應用程式。Struts 那些年可謂是風光無限啊,Struts2 + Spring + Hibernate 三大框架一起組成了 "SSH"————牛逼哄哄的 Java Web 框架三劍客。 不過 Struts 漏洞太多了,隨著 Spring MVC, Spring Boot 的興起,現在它也逐漸被淘汰了,具體可以[點選這裡](https://mp.weixin.qq.com/s/yjvBtlZSGNiGi1eqjQq6Iw)看下這篇文章。 #### 11、FreeMarker ![](https://img2020.cnblogs.com/other/1218593/202008/1218593-20200810094555565-2089182741.png) 專案主頁: > https://freemarker.apache.org/ Apache FreeMarker 是一個基於模板和資料生成文字輸出 HTML 頁面、電子郵件、配置檔案、原始碼等的一個 Java 模板引擎庫。 用的最多的就是利用 FreeMarker 模板來生成靜態頁面,FreeMarker 也是 Spring Boot 支援自動配置的四大模板引擎之一。 ``` ``` #### 12、Velocity ![](https://img2020.cnblogs.com/other/1218593/202008/1218593-20200810094556341-343824769.png) 專案主頁: > http://velocity.apache.org/ Velocity 是一個基於 Java 語言的模板引擎,它允許任何人使用簡單而強大的模板語言來引用 Java 程式碼中定義的物件。 但是,由於 Velocity 長期未更新,所以 Spring Boot 1.5.x 之後不再支援 Velocity,建議大家使用其他模板引擎。 ![](https://img2020.cnblogs.com/other/1218593/202008/1218593-20200810094556680-262965759.png) 上次更新還是 2010 年。 #### 13、Tapestry ![](https://img2020.cnblogs.com/other/1218593/202008/1218593-20200810094557017-1345112820.png) 專案主頁: > https://tapestry.apache.org/ Tapestry 在 Java Web 開發界也是鼎鼎有名的,我知道的之前就有一些公司都用過它。它是一個面向元件的 Web 框架,用於在 Java 中建立高度可伸縮的 Web 應用程式。 #### 14、Shiro ![](https://img2020.cnblogs.com/other/1218593/202008/1218593-20200810094557515-1498303028.png) 專案主頁: > http://shiro.apache.org/ 做 Java Web 後臺開發的程式設計師應該沒人不知道強大 Shiro 了,Apache Shiro 是一個功能強大且易於使用的 Java 安全框架,可用於身份驗證、授權、加密和會話管理等。 另外,通過 Apache Shiro 易於理解的API、細緻化的許可權控制,我們可以快速、輕鬆地開發和保護企業應用程式。 ## 分散式專案 #### 15、Dubbo ![](https://img2020.cnblogs.com/other/1218593/202008/1218593-20200810094557917-1878143720.png) 專案主頁: > http://dubbo.apache.org/ 對於 Dubbo,做分散式、微服務的程式設計師朋友們應該都再清楚不過了,它最初是由阿里巴巴開源的分散式服務框架(RPC),一段時間停止維護後,後來又重啟維護並捐獻給了 Apache 軟體基金會。 即使現在 Spring Cloud 微服務的興起,Dubbo 現在在很多企業也還是在大量運用的,隨著 Dubbo 的重啟維護並且捐獻給 Apache 軟體基金會,它的明天會越來越好。 #### 16、Thrift ![](https://img2020.cnblogs.com/other/1218593/202008/1218593-20200810094559263-1391720949.png) 專案主頁: > 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 ![](https://img2020.cnblogs.com/other/1218593/202008/1218593-20200810094600115-954651890.png) 專案主頁: > http://zookeeper.apache.org/ Apache Zookeeper 也是一個分散式中介軟體神器,是 Google Chubby 的一個開源實現,可用於做配置中心、分散式鎖等,最主要一點是它可以用來支援高度可靠的分散式服務協調中介軟體。 現在市面上的一些主流的開源專案都有 Zookeeper 的身影,如:Hadoop、Dubbo、Kafka、ElasticJob 等。 #### 18、Curator ![](https://img2020.cnblogs.com/other/1218593/202008/1218593-20200810094600871-807956909.png) 專案主頁: > http://curator.apache.org/ Apache Curator 是 ZooKeeper 的 Java 客戶端,它包括一系列高階 API 和工具,簡化了使用 ZooKeeper 的操作,可以更容易、可靠地使用 ZooKeeper。 #### 19、SkyWalking ![](https://img2020.cnblogs.com/other/1218593/202008/1218593-20200810094601308-108186905.png) 專案主頁: > http://skywalking.apache.org/ Apache SkyWalking 是一個可觀測性分析平臺和應用效能管理系統,提供分散式跟蹤、指標監控、效能診斷、度量彙總和視覺化一體化的解決方案。 Apache SkyWalking 支援 Java,net Core, PHP, NodeJS, Golang, LUA 的代理,還支援 Istio + Envoy Service Mesh,特別為微服務、雲本機和基於容器(如:Docker, K8s, Mesos)架構設計的。 #### 20、ShardingSphere ![](https://img2020.cnblogs.com/other/1218593/202008/1218593-20200810094601857-1522348186.png) 專案主頁: > http://shardingsphere.apache.org/ Apache ShardingSphere 是由一組分散式資料庫中介軟體解決方案組成的開源生態系統,包括 3 個獨立的產品:JDBC, Proxy & Sidecar (計劃中)。它們都提供了資料分片、分散式事務和資料庫編排功能,適用於 Java 同構、異構語言和雲原生等多種場景。 ## 搜尋專案 #### 21、Lucene ![](https://img2020.cnblogs.com/other/1218593/202008/1218593-20200810094602441-1534368000.png) 專案主頁: > https://lucene.apache.org/ Apache Lucene 是一個頂級的開源搜尋框架,包括一個核心搜尋庫:Lucene core,以及一個搜尋伺服器:Solr。 Lucene Core 是一個提供強大的索引和搜尋功能的 Java 庫,以及拼寫檢查、高亮顯示和高階分析/標記功能。 Solr 是使用 Lucene Core 構建的高效能搜尋伺服器。Solr 具有高伸縮性,提供完全容錯的分散式索引、搜尋和分析功能。 ## 訊息中介軟體專案 #### 22、ActiveMQ ![](https://img2020.cnblogs.com/other/1218593/202008/1218593-20200810094602910-104101001.png) 專案主頁: > http://activemq.apache.org/ Apache ActiveMQ 是一款靈活、強大的多協議開源訊息中介軟體,支援 JMS 1.1 & 2.0,也是目前最流行的基於 Java 的訊息中介軟體之一。 它支援行業標準協議,所以使用者可以跨廣泛的語言和平臺選擇最合適的客戶端,如 C、c++、Python、. net 等更多其他語言。 #### 23、RocketMQ ![](https://img2020.cnblogs.com/other/1218593/202008/1218593-20200810094603484-1594955942.png) 專案主頁: > http://rocketmq.apache.org/ Apache RocketMQ 真的是一款重量級、極具競爭力的訊息佇列產品,是由阿里巴巴 2012 年開源的分散式訊息中介軟體,也是一款輕量級的資料處理平臺,2016 年捐贈給了 Apache 軟體基金會,2017 年正式畢業。 #### 24、Kafka ![](https://img2020.cnblogs.com/other/1218593/202008/1218593-20200810094603765-803294405.png) 專案主頁: > http://kafka.apache.org/ Apache Kafka 也是一款重量級開源專案,最初由 Linkedin 公司進行開發,後來捐獻給了 Apache 軟體基金會。 Apache Kafka 它是一種分散式、高吞吐量的釋出訂閱訊息系統(MQ),它的最大的特性就是,可以實時好處理大量資料以滿足各種需求和業務場景。 ## 大資料/資料庫專案 #### 25、Hadoop ![](https://img2020.cnblogs.com/other/1218593/202008/1218593-20200810094604521-1488234925.png) 專案主頁: > http://hadoop.apache.org/ 做大資料的沒有不知道 Apache Hadoop 的,它是一種高可靠、可伸縮、分散式大資料處理框架,也是一套大資料行業公認的標準框架。 Apache Hadoop 成立於 2002 年,曾是 Apache Lucene 的子專案之一,2008 年正式成為 Apache 的頂級專案。 #### 26、HBase ![](https://img2020.cnblogs.com/other/1218593/202008/1218593-20200810094605277-3822585.png) 專案主頁: > http://hbase.apache.org/ Apache HBase 是一個建立在 Hadoop HDFS 的非關係資料庫,以分散式、可擴充套件進行大資料儲存,如果需要對大資料進行隨機、實時的讀寫訪問時,可以使用 Apache HBase。 #### 27、Pig ![](https://img2020.cnblogs.com/other/1218593/202008/1218593-20200810094605796-1812003267.png) 專案主頁: > http://pig.apache.org/ Apache Pig 是一個基於 Hadoop 的大資料分析平臺,是 Map Reduce 的一個抽象,提供類似於 SQL 的面向資料流的 Pig Latin 高階語言。 Pig Latin 提供了各種操作符,以及豐富的資料型別,從而可以很輕鬆地執行 Map Reduce 任務。 #### 28、Hive ![](https://img2020.cnblogs.com/other/1218593/202008/1218593-20200810094606781-864719184.png) 專案主頁: > http://hive.apache.org/ Apache Hive 是一個基於 Hadoop 的資料倉庫工具,用來提取、轉化和載入資料,它可以將 Hadoop 原始結構化資料對映為 Hive 中的一張表,並提供了類似 SQL 的 HiveQL 語言查詢功能。 #### 29、Spark ![](https://img2020.cnblogs.com/other/1218593/202008/1218593-20200810094607221-1980426589.png) 專案主頁: > http://spark.apache.org/ Apache Spark 是一個用於大規模資料處理的統一分析引擎,它也被認為是第二代大資料技術,第一代是基於 Hadoop 的 Map Reduce 模型。 Apache Spark 它本身不會進行分散式資料的儲存,所以它必須要整合其他的分散式檔案系統才能工作,一船要與 Apache Hadoop 的 HDFS 結合使用,但這不是必須的,也可以選擇其他的資料系統平臺進行整合。 #### 30、Flink ![](https://img2020.cnblogs.com/other/1218593/202008/1218593-20200810094607595-792286586.png) 專案主頁: > https://flink.apache.org/ Apache Flink 是一個分散式處理引擎框架,用於無邊界和有邊界資料流上的有狀態計算。Flink 被設計用於在所有常見的叢集環境中執行,以記憶體速度和任何規模執行計算。 #### 31、Storm ![](https://img2020.cnblogs.com/other/1218593/202008/1218593-20200810094608262-1806412532.png) 專案主頁: > http://storm.apache.org/ Apache Storm 是一個分散式實時計算系統,它能夠輕鬆可靠地處理資料流,就像 Hadoop 那樣進行實時批處理,並且可以與任何程式語言一起使用,而且使用起來非常方便。 #### 32、Cassandra ![](https://img2020.cnblogs.com/other/1218593/202008/1218593-20200810094608951-1031126578.png) 專案主頁: > https://cassandra.apache.org/ Apache Cassandra 是一款可伸縮、高可用、高效能去中心化的分散式資料庫,當時是 Facebook 在 2007 年為了解決訊息收件箱搜尋問題而開始設計的,後來被轉移到了 Apache 軟體基金會成為頂級專案。 #### 33、CouchDB ![](https://img2020.cnblogs.com/other/1218593/202008/1218593-20200810094609829-73678028.png) 專案主頁: > https://couchdb.apache.org/ Apache CouchDB 是一個面向文件的分散式資料庫,它以 JSON 作為儲存格式,JavaScript 作為查詢語言,提供直觀可靠的 Restful API 介面進行操作,最顯著的特點就是支援多主複製。 ## 程式語言、工具專案 #### 34、Groovy ![](https://img2020.cnblogs.com/other/1218593/202008/1218593-20200810094610440-969753575.png) 專案主頁: > http://groovy.apache.org/ Apache Groovy 是一個功能十分強大的基於 JVM 平臺的動態程式語言,語法與 Java 十分相似,並且相容 Java,但 Groovy 要更簡潔、優美,更易於學習,開發效率也非常高。 #### 35、NetBeans ![](https://img2020.cnblogs.com/other/1218593/202008/1218593-20200810094610956-2118037487.png) 專案主頁: > http://netbeans.apache.org/ NetBeans 是一款老牌的開源開發工具(IDE),整合開發環境和應用框架,支援 Java, JavaScript, PHP 等更多程式語言,最初由 SUN 公司開發,後來被 Oracle 收購,再後來被 Oracle 捐獻給了 Apache 軟體基金會。 ## 總結 相信今天棧長分享的 35 個頂級專案大家都接觸過或者聽說過,雖然有些面臨淘汰,但它們個個都是重磅,曾經也都風光過,正是有了這些開源專案,我們 Java 生態圈才會越來越繁榮。 最後,這篇文章寫完真心不容易啊,抽空陸陸續續寫了好些天,覺得本文不錯,也歡迎點贊轉發哦! 大家也可以持續關注公眾號Java技術棧,棧長也將繼續分享好玩的 Java 專案和工具,公眾號第一時間推送。 你還知道哪些重磅的 Apache 頂級專案,歡迎留言分享~ **推薦去我的部落格閱讀更多:** 1.[Java JVM、集合、多執行緒、新特性系列教程](http://www.javastack.cn/categories/Java/) 2.[Spring MVC、Spring Boot、Spring Cloud 系列教程](http://www.javastack.cn/categories/Spring/) 3.[Maven、Git、Eclipse、Intellij IDEA 系列工具教程](http://www.javastack.cn/categories/工具/) 4.[Java、後端、架構、阿里巴巴等大廠最新面試題](http://www.javastack.cn/categories/面試題/) 覺得不錯,別忘了點贊+轉