當今互聯(lián)網(wǎng)份額最大的編程語言是哪一個?是 Java !這兩年一直有聽說 Java 要不行了、在走下坡路了。沒錯,Java 的確在走下坡路,未來的事情的確不好說,但是瘦死的駱駝比馬大,未來的三五年之內(nèi),我相信 Java 仍然是行業(yè)“一哥”!各位是否和我剛學(xué)完 Java 基礎(chǔ)語法時一樣,陷入過不知道 Java 能做什么的困擾中?覺得 Java 只能在控制臺里 System.out.println
打印打印貓啊狗啊、爸爸和兒子嗎?
不!在開源的世界里,有著無數(shù)的 Java 項目等待你去發(fā)現(xiàn)探索,讓我們一起跟著本篇文章去看看有哪些開源項目吧。
本期是 Java 篇 希望這篇文章能讓大家找到 GitHub 上適合自己學(xué)習(xí)的 Java 開源項目。可以把這次的學(xué)習(xí)當成一次游戲,一路打怪升級直至通關(guān),我層層遞進的設(shè)計了三個階段: 青銅 -> 白銀 -> 黃金 。為什么只到黃金?因為成為真正大牛的路是非常漫長的,我相信黃金之后的路。你一定就會有自己的想法了,大膽的走自己的路,成為那顆璀璨的“鉆石”吧!
一、青銅
萬事開頭難
1.1 快樂的小鳥
作為整篇文章的開頭,我選擇了一個比較輕松好玩的項目,希望能夠勾起你對編程的興趣!作者僅使用了 Java 標準庫還原了,曾經(jīng)在手機上紅遍一時的“憤怒的小鳥”。先 clone
把源碼下載后,可以通過 java -jar FlappyBird.jar
直接運行,也可以通過運行源碼中的 GameApp:main
方法來啟動整個游戲。通過學(xué)習(xí)該項目可以學(xué)習(xí)到:
-
使用標準庫中的一些工具,比如集合、播放音效、加載圖片
-
如何利用多文件,把不同的邏輯拆分到不同的類中去,并相互之間協(xié)作構(gòu)建起整個游戲的狀態(tài)
-
一些設(shè)計模式的應(yīng)用,比如單例、對象池
GitHub 地址:https://github.com/kingyuluk/FlappyBird
1.2 Java 圣經(jīng)
高爾基說過:「書是人類進步的階梯」。在歷史的長河中誕生過無數(shù)的著作,計算機領(lǐng)域也不例外,而《Think in Java》就是我要重點介紹的一本著作,這本書給我的第一印象就是:全!從最基本的數(shù)據(jù)類型到之后的面向?qū)ο笤俚胶竺娴姆盒头瓷涞母呒壴掝},無所不包。我之前閱讀的是第四版實體書,現(xiàn)在的好消息是,第五版來了!而且是以開源的形式。經(jīng)過之前小項目的小打小鬧,大家也有了一點編程的感覺了,是時候鞏固下理論知識了,俗話說的好:「基礎(chǔ)不牢,地動山搖」。現(xiàn)在這個階段去閱讀此著作一定會給你不一樣的感覺,我甚至推薦你每到一個階段,你可以回過頭去翻翻這本經(jīng)典書籍,每次都會有新的認識。
-
項目地址:https://github.com/LingCoder/OnJava8
-
在線閱讀:https://lingcoder.github.io/OnJava8/#/sidebar
1.3 一圖勝千言
如果你覺得剛剛的「圣經(jīng)」有點重,不妨來看看這個項目,這個項目從 Java 基礎(chǔ)到標準庫 JVM 到 Spring 再到各個常用到中間件 Redis、Zookeeper 等。每一部分都用了一張思維導(dǎo)圖來整理出各個知識點,既能夠?qū)W(xué)知識的大致了解,也方便了學(xué)習(xí)后,對已學(xué)知識的鞏固復(fù)習(xí),可以說良心到不行。你完全可以按照自己的節(jié)奏,學(xué)習(xí)的進度去查看每一個知識點。
GitHub 地址:https://github.com/huangliangyun/MindManager
二、白銀
堅持就是勝利
2.1 春天來了
Java 在生產(chǎn)中多數(shù)是以服務(wù)端開發(fā)為主,那在服務(wù)端領(lǐng)域還有一個一定繞不開的 Java 框架就是 Spring。我相信你一定聽過這個名字,Spring 這個框架現(xiàn)在基本已經(jīng)是 Java 服務(wù)端的工業(yè)級標準了,我就職過的公司沒有一個不用的,而 Spring 發(fā)展至今,他工程上的復(fù)雜程度也大大的提高了,各種封裝和抽象,想要搞懂原理變得非常困難,但是你不需要太過害怕,因為只是完成功能上的開發(fā)和一般的使用是不需要知道 Spring 的原理的。Spring 團隊為了能進一步提升開發(fā)體驗,推出了 Spring Boot 這個框架,你可以認為 Spring Boot 是對原本的 Spring MVC 進行封裝并且內(nèi)置了一個 Tomcat 的容器,僅此而已。最后如果是新學(xué)的話建議直接從 2.0 開始。
關(guān)于 Spring Boot 我這里推薦一個項目:
https://github.com/yizhiwazi/springboot-socks
項目里面內(nèi)置了很多有用的片段,從最簡單的 Hello World 到如何集成 Mybatis 啊,又或者是如何跨域,還有怎么發(fā)送郵件啊等等,都有一個對應(yīng)的文件夾的示例。
此階段建議按照以下路線學(xué)習(xí):
-
從零啟動一個空的 Spring Boot 項目,可以學(xué)習(xí)到 Spring Boot 的最小配置,以及如何聲明 REST 風(fēng)格的 Controller 并返回簡單的數(shù)據(jù)
-
將 Spring Boot 和 Java 的持久層框架(如 Mybatis-Plus )串起來,通過 REST 的接口進行簡單的增刪改查操作(可以完全不需要頁面,僅僅需要一個 Postman 或者
curl
即可) -
使用 FreeMarker 或者 Thymeleaf 其他模板引擎,寫一個簡單的頁面(可以是一些簡單的輸入框,按鈕,完全不需要考慮樣式),再將之前的增刪改查操作串起來,并通過模板引擎將結(jié)果渲染至瀏覽器。
完成這個階段后,相信你對企業(yè)中的前后端交互以及框架的基本使用就有概念了。然后就能基于此,嘗試做一些小功能,比如登陸,注冊等等。
2.2 人生就是要難得糊涂
Java 本身被詬病最多的就是語法啰嗦, hutool 是一個簡單易用的三方 Java 類庫,里面包含了大量的工具類靜態(tài)方法,封裝了原本復(fù)雜的調(diào)用。而它的源碼本身也是值得學(xué)習(xí)的優(yōu)秀開源項目,通過學(xué)習(xí)它可以了解到一個優(yōu)秀的 lib 項目是如何組織、規(guī)范代碼的,也希望讀者們以后都能擁有令人自豪的開源項目。
-
項目地址:https://github.com/looly/hutool
-
官網(wǎng)地址:https://www.hutool.cn
三、黃金
不經(jīng)歷風(fēng)雨,怎能見彩虹
3.1 要做 NB 不要做 NewBee
堅持到現(xiàn)在的你需要一個媲美生產(chǎn)環(huán)境的完整項目經(jīng)驗,而這個開源項目恰好可以滿足,推薦這個項目的原因如下:
-
項目的體量大了很多,不單單是后端代碼,還有一整套的前端頁面,Awesome!
-
商城基本功能都已經(jīng)具備:首頁,登錄,瀏覽商品,購物車,下單等,甚至還有一個后臺管理功能,Awesome!
GitHub 地址:https://github.com/newbee-ltd/newbee-mall
預(yù)覽地址:http://mall.newbee.ltd
3.2 成神之路
之前都是偏向?qū)嵺`的項目,到了這里,應(yīng)該放慢腳步,往更高層的方向出發(fā)了。正所謂,「知其然,更要知其所以然」。有了實踐的幫助,會讓學(xué)習(xí)理論不那么枯燥,同樣也因為理論,讓實踐有了更好的基礎(chǔ)。
-
項目地址:https://github.com/doocs/advanced-java
-
在線閱讀:https://doocs.github.io/advanced-java
這個在線書籍包含了很多 Java 生態(tài)中的高級話題,如高并發(fā),分布式,緩存,高可用,微服務(wù)等等。由一個問句引出讀者的思考,讓讀者跟著作者的思路一步步的從提出問題,分析問題到最后的解決問題。
3.3 走自己的路,讓別人說去吧
之前的小鳥,不知道有沒有擊中你的心靈?我反正是有,我剛開始學(xué) Java 的時候也搗鼓過一些小游戲,比如掃雷,貪吃蛇,坦克大戰(zhàn)等。那時還不知道有 GitHub 不然這些項目就能和大家見面了,自己當時也瞎寫,對編程感覺還不強,但是親手將一些兒時的回憶復(fù)刻出來的感覺是非常棒的,如果你也想用 Java 寫寫小游戲的話,不妨看看下面這個項目。
-
項目地址:https://github.com/AlmasB/FXGLGames
-
官網(wǎng)地址:http://almasb.github.io/FXGLGames
項目中已經(jīng)內(nèi)置了一些簡單游戲的 Demo,通過學(xué)習(xí)可以讓你快速上手,框架還可以將游戲輕松打包到單個可執(zhí)行文件,快來試試吧!
最后
HelloGitHub 想讓更多人愛上編程、開源,也一直在嘗試、摸索如何幫助更多的人。