1. 程式人生 > >有哪些優秀的Java開源專案最值得閱讀?

有哪些優秀的Java開源專案最值得閱讀?

閱讀原始碼是程式猿們最好的學習方式,給大家分享:

可能是最火的Java開源專案

這些專案在 GitHub 上的 star 數均超過 15000

star:26782;fork:4718

.Net響應式程式設計框架 Rx 的Java版本開源實現,有Groovy, Clojure, Scala and JRuby版本的實現。

star:24646;fork:8723

Elasticsearch 是一個分散式的 RESTful 風格的搜尋和資料分析引擎,能夠解決越來越多的用例。作為 Elastic Stack 的核心,它集中儲存您的資料,幫助您發現意料之中以及意料之外的情況。這個實時的分散式搜尋分析引擎, 它能讓你以一個之前從未有過的速度和規模,去探索你的資料。

star:23443;fork:4731

retrofit 是一個型別安全的 REST 客戶端,用於 Android 平臺。

RestAdapter restAdapter = new RestAdapter.Builder()
    .setServer("https://api.github.com")
    .build();

GitHubService service = restAdapter.create(GitHubService.class);

star:21981;fork:5311

okhttp 是一個 Java 的 HTTP+SPDY 客戶端開發包,同時也支援 Android。

OkHttpClient client = new OkHttpClient();

    String get(URL url) throws IOException {
      HttpURLConnection connection = client.open(url);
      InputStream in = null;
      try {
        // Read the response.
        in = connection.getInputStream();
        byte[] response = readFully(in);
        return
new String(response, "UTF-8"); } finally { if (in != null) in.close();

star:21456;fork:7162

設計模式是程式設計師在設計應用程式或系統時解決常見問題的最佳實踐,重用設計模式有助於防止可能導致重大問題的細微問題,同時熟悉模式的程式設計師和架構師的程式碼也更具可讀性。

star:18414;fork:4327

Guava 中文是石榴的意思,該專案是 Google 的一個開源專案,包含許多 Google 核心的 Java 常用庫。

star:17845;fork:3662

Butter Knife 是 Android 檢視欄位和方法繫結,使用註解處理來生成樣板程式碼。

主要特性:

  • 在欄位使用 @FindView消除findViewById呼叫
  • 使用 @FindViews在一個列表中分組多個檢視
  • 通過註解方法為監聽者消除匿名 inner-classes

star:17758;fork:5133

MPAndroidChart 是 Android 系統上一款開源的圖表庫。目前提供線圖和餅圖,支援選擇、縮放和拖放。

star:17418;fork:3520

Glide 是一個 Android 上的圖片載入和快取庫,其目的是實現平滑的圖片列表滾動效果。

star:16531;fork:2761

LeakCanary 是 Android 和 Java 記憶體洩露檢測框架。

star:15850; fork:11326

Spring Framework 是一個開源的Java/Java EE全功能棧(full-stack)的應用程式框架,以Apache許可證形式釋出,也有.NET平臺上的移植版本。該框架基於 Expert One-on-One Java EE Design and Development(ISBN 0-7645-4385-7)一書中的程式碼,最初由 Rod Johnson 和 Juergen Hoeller等開發。Spring Framework 提供了一個簡易的開發方式,這種開發方式,將避免那些可能致使底層程式碼變得繁雜混亂的大量的屬性檔案和幫助類。

star:15733; fork:3752

如果你學習過設計模式,那麼當想通知其他元件某些事情發生時你一定會使用觀察者模式。好了,既然能想到這個設計模式,那麼就來看一個屌爆天的Android開源框架EventBus。主要功能是替代Intent、Handler、BroadCast在Fragment、Activity、Service、執行緒之間傳遞訊息。他的最牛逼優點是開銷小,程式碼簡潔,解耦程式碼。

star:15596; fork:6455

Android-Universal-Image-Loader (Universal Image Loader for Android) 的目的就是為了實現非同步的網路圖片載入,支援多執行緒非同步載入。

star:15357; fork:13367

Spring Boot 專案旨在簡化建立產品級的 Spring 應用和服務。你可通過它來選擇不同的 Spring 平臺。可建立獨立的 Java 應用和 Web 應用,同時提供了命令列工具來允許 'spring scripts'.

下圖顯示 Spring Boot 在 Spring 生態中的位置:

star:15094; fork:2166

Lottie 是 Airbnb 開發的一款能夠為原生應用新增動畫效果的開源工具。Lottie 目前提供了 iOS, Android, 和 React Native 版本,能夠實時渲染After Effects 動畫特效。

star:15003; fork:6686

ZXing是一個開源Java類庫用於解析多種格式的1D/2D條形碼。目標是能夠對QR編碼、Data Matrix、UPC的1D條形碼進行解碼。 其提供了多種平臺下的客戶端包括:J2ME、J2SE和Android。

原始碼的閱讀是個逆向的過程,那麼該如何閱讀原始碼呢?

原始碼閱讀思維正規化 Problem domain→model→architecture&implementation→improvement→best practice