適合 Java 新手的開源項目集合——在 GitHub 學編程

作者:HelloGitHub——老荀

當今互聯網份額最大的程式語言是哪一個?是 Java!這兩年一直有聽說 Java 要不行了、在走下坡路了。沒錯,Java 的確在走下坡路,未來的事情的確不好說,但是瘦死的駱駝比馬大,未來的三五年之內,我相信 Java 仍然是行業「一哥」!各位是否和我剛學完 Java 基礎語法時一樣,陷入過不知道 Java 能做什麼的困擾中?覺得 Java 只能在控制台里 System.out.println 列印列印貓啊狗啊、爸爸和兒子嗎?

不!在開源的世界裡,有著無數的 Java 項目等待你去發現探索,讓我們一起跟著本篇文章去看看有哪些開源項目吧?

興趣是最好的老師,HelloGitHub 就是幫你找到編程的樂趣。

這裡是 HelloGitHub 的《GitHub 上適合新手的開源項目》系列,共計 5 篇文章:

  1. C++ 篇
  2. Python 篇
  3. Go 篇
  4. Java 篇
  5. JavaScript 篇

本期是 Java 篇 希望這篇文章能讓大家找到 GitHub 上適合自己學習的 Java 開源項目。可以把這次的學習當成一次遊戲,一路打怪升級直至通關,我層層遞進的設計了三個階段:青銅->白銀->黃金。為什麼只到黃金?因為成為真正大牛的路是非常漫長的,我相信黃金之後的路。你一定就會有自己的想法了,大膽的走自己的路,成為那顆璀璨的「鑽石」吧!

一、青銅

萬事開頭難

1.1 快樂的小鳥

作為整篇文章的開頭,我選擇了一個比較輕鬆好玩的項目,希望能夠勾起你對編程的興趣!作者僅使用了 Java 標準庫還原了,曾經在手機上紅遍一時的「憤怒的小鳥」。先 clone 把源碼下載後,可以通過 java -jar FlappyBird.jar 直接運行,也可以通過運行源碼中的 GameApp:main 方法來啟動整個遊戲。通過學習該項目可以學習到:

  • 使用標準庫中的一些工具,比如集合、播放音效、載入圖片
  • 如何利用多文件,把不同的邏輯拆分到不同的類中去,並相互之間協作構建起整個遊戲的狀態
  • 一些設計模式的應用,比如單例、對象池

GitHub 地址://github.com/kingyuluk/FlappyBird

1.2 Java 聖經

高爾基說過:「書是人類進步的階梯」。在歷史的長河中誕生過無數的著作,電腦領域也不例外,而《Think in Java》就是我要重點介紹的一本著作,這本書給我的第一印象就是:全!從最基本的數據類型到之後的面向對象再到後面的泛型反射的高級話題,無所不包。我之前閱讀的是第四版實體書,現在的好消息是,第五版來了!而且是以開源的形式。經過之前小項目的小打小鬧,大家也有了一點編程的感覺了,是時候鞏固下理論知識了,俗話說的好:「基礎不牢,地動山搖」。現在這個階段去閱讀此著作一定會給你不一樣的感覺,我甚至推薦你每到一個階段,你可以回過頭去翻翻這本經典書籍,每次都會有新的認識。

1.3 一圖勝千言

如果你覺得剛剛的「聖經」有點重,不妨來看看這個項目,這個項目從 Java 基礎到標準庫 JVM 到 Spring 再到各個常用到中間件 Redis、Zookeeper 等。每一部分都用了一張思維導圖來整理出各個知識點,既能夠對將學知識的大致了解,也方便了學習後,對已學知識的鞏固複習,可以說良心到不行。你完全可以按照自己的節奏,學習的進度去查看每一個知識點。

GitHub 地址://github.com/huangliangyun/MindManager

二、白銀

堅持就是勝利

2.1 春天來了

Java 在生產中多數是以服務端開發為主,那在服務端領域還有一個一定繞不開的 Java 框架就是 Spring。我相信你一定聽過這個名字,Spring 這個框架現在基本已經是 Java 服務端的工業級標準了,我就職過的公司沒有一個不用的,而 Spring 發展至今,他工程上的複雜程度也大大的提高了,各種封裝和抽象,想要搞懂原理變得非常困難,但是你不需要太過害怕,因為只是完成功能上的開發和一般的使用是不需要知道 Spring 的原理的。Spring 團隊為了能進一步提升開發體驗,推出了 Spring Boot 這個框架,你可以認為 Spring Boot 是對原本的 Spring MVC 進行封裝並且內置了一個 Tomcat 的容器,僅此而已。最後如果是新學的話建議直接從 2.0 開始。

關於 Spring Boot 我這裡推薦一個項目:

//github.com/yizhiwazi/springboot-socks

項目裡面內置了很多有用的片段,從最簡單的 Hello World 到如何集成 Mybatis 啊,又或者是如何跨域,還有怎麼發送郵件啊等等,都有一個對應的文件夾的示例。

此階段建議按照以下路線學習:

  • 從零啟動一個空的 Spring Boot 項目,可以學習到 Spring Boot 的最小配置,以及如何聲明 REST 風格的 Controller 並返回簡單的數據
  • 將 Spring Boot 和 Java 的持久層框架(如 Mybatis-Plus )串起來,通過 REST 的介面進行簡單的增刪改查操作(可以完全不需要頁面,僅僅需要一個 Postman 或者 curl 即可)
  • 使用 FreeMarker 或者 Thymeleaf 其他模板引擎,寫一個簡單的頁面(可以是一些簡單的輸入框,按鈕,完全不需要考慮樣式),再將之前的增刪改查操作串起來,並通過模板引擎將結果渲染至瀏覽器。

完成這個階段後,相信你對企業中的前後端交互以及框架的基本使用就有概念了。然後就能基於此,嘗試做一些小功能,比如登陸,註冊等等。

2.2 人生就是要難得糊塗

Java 本身被詬病最多的就是語法啰嗦, hutool 是一個簡單易用的三方 Java 類庫,裡面包含了大量的工具類靜態方法,封裝了原本複雜的調用。而它的源碼本身也是值得學習的優秀開源項目,通過學習它可以了解到一個優秀的 lib 項目是如何組織、規範程式碼的,也希望讀者們以後都能擁有令人自豪的開源項目。

三、黃金

不經歷風雨,怎能見彩虹

3.1 要做 NB 不要做 NewBee

堅持到現在的你需要一個媲美生產環境的完整項目經驗,而這個開源項目恰好可以滿足,推薦這個項目的原因如下:

  1. 項目的體量大了很多,不單單是後端程式碼,還有一整套的前端頁面,Awesome!
  2. 商城基本功能都已經具備:首頁,登錄,瀏覽商品,購物車,下單等,甚至還有一個後台管理功能,Awesome!

GitHub 地址://github.com/newbee-ltd/newbee-mall

預覽地址://mall.newbee.ltd

3.2 成神之路

之前都是偏向實踐的項目,到了這裡,應該放慢腳步,往更高層的方向出發了。正所謂,「知其然,更要知其所以然」。有了實踐的幫助,會讓學習理論不那麼枯燥,同樣也因為理論,讓實踐有了更好的基礎。

這個在線書籍包含了很多 Java 生態中的高級話題,如高並發,分散式,快取,高可用,微服務等等。由一個問句引出讀者的思考,讓讀者跟著作者的思路一步步的從提出問題,分析問題到最後的解決問題。

3.3 走自己的路,讓別人說去吧

之前的小鳥,不知道有沒有擊中你的心靈?我反正是有,我剛開始學 Java 的時候也搗鼓過一些小遊戲,比如掃雷,貪吃蛇,坦克大戰等。那時還不知道有 GitHub 不然這些項目就能和大家見面了,自己當時也瞎寫,對編程感覺還不強,但是親手將一些兒時的回憶復刻出來的感覺是非常棒的,如果你也想用 Java 寫寫小遊戲的話,不妨看看下面這個項目。

項目中已經內置了一些簡單遊戲的 Demo,通過學習可以讓你快速上手,框架還可以將遊戲輕鬆打包到單個可執行文件,快來試試吧!

最後

HelloGitHub 想讓更多人愛上編程、開源,也一直在嘗試、摸索如何幫助更多的人。

如果你是在校大學生或研究生熱愛編程、開源,喜歡討論和學習技術相關的內容,那麼來 HelloGitHub 的大學生開源俱樂部吧!你們的編程路才剛開始 HG 想陪你們走一段。加微訊號:HelloGitHub (備註:學校和專業)。

發現更多 Java 開源項目