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

2020-12-04 HelloGitHub

作者:HelloGitHub-老荀

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

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

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

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

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

讓我們開始~

一、青銅

萬事開頭難

1.1 快樂的小鳥

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

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

1.2 Java 聖經

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

OnJava8

1.3 一圖勝千言

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

MindManager

二、白銀

堅持就是勝利

2.1 春天來了

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

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

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 項目是如何組織、規範代碼的,也希望讀者們以後都能擁有令人自豪的開源項目。

hutool

三、黃金

不經歷風雨,怎能見彩虹

3.1 要做 NB 不要做 NewBee

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

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

3.2 成神之路

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

advanced-java

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

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

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

FXGLGames

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

最後

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

相關焦點

  • 2018年阿里巴巴關於Java重要開源項目匯總
    此項目包含開發分布式應用服務的必需組件,方便開發者通過 Spring Cloud 編程模型輕鬆使用這些組件來開發分布式應用服務。依託 Spring Cloud Alibaba,您只需要添加一些註解和少量配置,就可以將 Spring Cloud 應用接入阿里分布式應用解決方案,通過阿里中間件來迅速搭建分布式應用系統。
  • 6月份Github上熱門的開源項目
    6月份GitHub上熱門的開源項目排行已經出爐啦,一起來看看上榜詳情吧!2. practical-pythonhttps://github.com/dabeaz-course/practical-pythonStar 4603這是一份實用的Python教程,涵蓋 Python 編程的基礎方面,重點是腳本編寫,數據操作和程序組織。
  • 如何在 Github 上發現優秀的開源項目?
    問到點子上了,GitHub 其中一個最重要的作用就是發現全世界最優秀的開源項目,你沒事的時候刷刷微博、知乎,人家沒事的時候刷刷 GitHub ,看看最近有哪些流行的項目,久而久之,這差距就越來越大,那麼如何發現優秀的開源項目呢?這篇文章我就來給大家介紹下。1.
  • Java學習必不可少的十大網站
    這是我為學習java的同學們準備的網站集合。這些網站提供新聞,常見問題或訪談問題的答案,精彩的講座等。質量是好的網站的關鍵因素。我認為它們都具有最高的質量。在下文中,我還將分享如何使用這些網站進行學習或娛樂。1.
  • 面試資源、公共API、多樣化學習路徑,這10個GitHub庫開發者必看
    Oh My ZshGitHub 星數:106,000GitHub 地址:https://github.com/ohmyzsh/ohmyzshOh My Zsh 是一個社區驅動的開源框架,旨在管理 Zsh 配置。Zsh 既是交互式 shell,也是很多開發者使用的強大腳本語言。
  • 推薦一些 GitHub 上值得前端學習的開源實戰項目,進階必看!
    最近好多同學問我了解找一些學習的實戰項目;看一個別人寫的優秀的項目,從中可以學到很多;比如代碼的規範,項目的結構;從項目作者每次提交記錄,去學習一些別人的開發思維以及開發整個項目的流程;下面我主要找了一些比較火的一些框架以及 node 項目。
  • 程式設計師編程入門必知!程式設計師需要學什麼
    什麼是編程? 編程就是讓計算機為解決某個問題而使用某種程序設計語言編寫程序代碼,並最終得到結果的過程。資訊時代的大背景下,計算機的應用顯得舉足輕重,精通計算機的人才對於龐大的市場需求量來說還是顯得很匱乏,因此計算機行業的前景是很可觀的,但是也有不少人對於編程處於一竅不通的狀態,那編程該從何入手呢?
  • 世界排行第一的程式語言:java迎來25歲生日
    作為全球排名第一的程式語言,本周末Java將迎來 25 歲生日。Java起源於 1991 年的「 Oak」項目,由James Gosling領導。面向對象的Java以其「一次編寫,隨處運行」的可移植性而聞名,因為Java虛擬機支持多種硬體平臺和作業系統以及Java applet可以從網頁上運行。
  • 2018年github上最值得學習的十個熱門項目
    項目一 julia(語言)簡介:julia是一種新的、高性能的動態語言, 目前在github上已經超過了10000+star項目二 Muzei-macOS(蘋果桌面)簡介:Muzei-macOS是一款免費的
  • Github標星過萬,Python新手100天學習計劃,這次學不會算我輸!
    大數據文摘編輯部出品作為目前最火也是最實用的程式語言,Python不僅是新手入門程序界的首選,也逐漸成為了從大廠到小廠,招牌需求list的必要一條。當然,學Python這件事情,你可能也和文摘菌一樣,已經下了一百次決心,但是最後都「從入門到放棄」。
  • 2018 年度 GtiHub 開源項目 TOP 25:數據科學 & 機器學習
    科技正在快速發展,同時計算成本也比之前更低了,所以現在有一個接一個大量的開源項目可供我們使用。現在,可以被稱作機器學習編碼的黃金時代嗎?這是一個開放的問題,但是我們都認同的一件事是,現在是做一個數據科學領域的編程員的好時期。在這個部分(以及整篇文章),我都在嘗試讓程式語言儘可能地多樣化些,不過 Python 無法避免地佔據主導地位。
  • 盤點:2017年GitHub上30個優秀的機器學習項目
    我們比較了過去一年近8,800個開源的機器學習項目,從中選擇了30個表現優秀的,分享給讀者。這是一份非常精彩的名單,它仔細挑選了2017年1月至12月之間發布的最佳開源機器學習庫、數據集和應用程式。我們綜合考慮項目的受歡迎程度,參與度和進展程度來評估項目質量。為了給讀者更直觀的感受,使用GitHub上的關注量(星星數量)來表示項目熱度。
  • 安全專業人士最愛的 19 個 GitHub 開源項目
    GitHub上有許多開源項目可供安全專業人士選擇,而且每天都有新的項目出現。不妨將這些項目添加到你的工具庫,讓你工作起來更得心應手。
  • Java編程領域你需要懂得技術名詞解釋與常用開源框架理解
    常見的有activeMQ(支持多語言,實現jms1.1),RabbitMQ(支持更多語言,基於AMQP規範),kafka(高吞吐量,分布式,分區,O(1)磁碟順序提供消息持久化)2、常用的開源項目框架理解SpringSpring是輕量級的IoC和AOP的容器框架,是進行對象管理、對象關聯、解耦的一個中間層框架。是面向Bean的編程,實現了組件的解耦。
  • 相比於Java,python到底有哪些優勢?
    談到編程,首先不可避免的是程式語言。由於在AI的帶動下python更是異軍突起,撼動了許多老大哥的地位。可唯獨java穩如泰山,不可動搖!自然而然的就會出現python與Java的討論聲。本文的目的在於討論python和java相比到底有哪些優勢,至於缺點暫且不提!
  • 取代GitHub?工信部公布2020開源託管平臺項目結果
    日前,工業和信息化部技術發展司公布了「2020年開源託管平臺項目」的招標結果,工業和信息化部選擇Gitee來構建「面向中國的獨立,開放原始碼託管平臺」。據悉,該項目由深圳市奧思網絡科技有限公司(開源中國)牽頭,與國家工業信息安全發展研究中心、工業和信息化部電子第五研究所、中國電子技術標準化研究院、華為技術有限公司、奇安信科技集團股份有限公司、浪潮電子信息產業股份有限公司、蘇州稜鏡七彩信息科技有限公司、北京理工大學、西南科技大學共10家單位組成的聯合體中標該項目,聯合體將依託碼雲Gitee建設中國獨立的開源託管平臺。
  • 擁抱雲原生,如何將開源項目用k8s部署?
    本文將重點分享阿里開源項目otter適配k8s部署的改造過程,其中的改造過程和技巧應該適用於將大多數開源項目改造到k8s進行部署。1.背景otter是阿里開源的分布式資料庫同步系統,基於資料庫增量日誌解析,並準實時同步到本機房或異地機房的mysql/oracle資料庫(相關內容可以參考https://github.com/alibaba/otter,本文不做過多贅述)。
  • 基於TensorFlow2.0的中文深度學習開源書來了!GitHub趨勢日榜第一
    近日,一個叫做深度學習開源書的項目在火了。GitHub趨勢日榜排名全球第一,已斬獲2K+星。為什麼這麼火?深度學習開源書介紹這本書共包含15個章節。從目錄章節構成來看,理論與編程並不是獨立分開,而是隨著難度的遞增,循序漸進、穿插編排的。大體上可以分為四個部分。
  • 在GitHub上8800個開源機器學習項目中,選出了其中的Top30
    大數據文摘作品編譯:葉一、Shan LIU、Aileen2017年是機器學習應用全面開花的一年,驚為天人的想法和項目層出不窮。我們對比了過去一年中近8800個開源機器學習項目,並挑選了其中較好的30個(Top 0.3%)列舉於此。
  • 跟我學java編程—Java邏輯運算符
    示例1:邏輯運算符在D盤Java目錄下,新建「LogicSample.java」文件。用記事本打開「LogicSample.java」文件,輸入以下代碼:代碼結構分析程序功能主要是演示邏輯運算符的用法。類似語句「bJudge = !