作者: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 地址:https://github.com/kingyuluk/FlappyBird

1.2 Java 圣经

高尔基说过:「书是人类进步的阶梯」。在历史的长河中诞生过无数的著作,计算机领域也不例外,而《Think in Java》就是我要重点介绍的一本著作,这本书给我的第一印象就是:全!从最基本的数据类型到之后的面向对象再到后面的泛型反射的高级话题,无所不包。我之前阅读的是第四版实体书,现在的好消息是,第五版来了!而且是以开源的形式。经过之前小项目的小打小闹,大家也有了一点编程的感觉了,是时候巩固下理论知识了,俗话说的好:「基础不牢,地动山摇」。现在这个阶段去阅读此著作一定会给你不一样的感觉,我甚至推荐你每到一个阶段,你可以回过头去翻翻这本经典书籍,每次都会有新的认识。

1.3 一图胜千言

如果你觉得刚刚的「圣经」有点重,不妨来看看这个项目,这个项目从 Java 基础到标准库 JVM 到 Spring 再到各个常用到中间件 Redis、Zookeeper 等。每一部分都用了一张思维导图来整理出各个知识点,既能够对将学知识的大致了解,也方便了学习后,对已学知识的巩固复习,可以说良心到不行。你完全可以按照自己的节奏,学习的进度去查看每一个知识点。

GitHub 地址:https://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 我这里推荐一个项目:

https://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 地址:https://github.com/newbee-ltd/newbee-mall

预览地址:http://mall.newbee.ltd

3.2 成神之路

之前都是偏向实践的项目,到了这里,应该放慢脚步,往更高层的方向出发了。正所谓,「知其然,更要知其所以然」。有了实践的帮助,会让学习理论不那么枯燥,同样也因为理论,让实践有了更好的基础。

这个在线书籍包含了很多 Java 生态中的高级话题,如高并发,分布式,缓存,高可用,微服务等等。由一个问句引出读者的思考,让读者跟着作者的思路一步步的从提出问题,分析问题到最后的解决问题。

3.3 走自己的路,让别人说去吧

之前的小鸟,不知道有没有击中你的心灵?我反正是有,我刚开始学 Java 的时候也捣鼓过一些小游戏,比如扫雷,贪吃蛇,坦克大战等。那时还不知道有 GitHub 不然这些项目就能和大家见面了,自己当时也瞎写,对编程感觉还不强,但是亲手将一些儿时的回忆复刻出来的感觉是非常棒的,如果你也想用 Java 写写小游戏的话,不妨看看下面这个项目。

项目中已经内置了一些简单游戏的 Demo,通过学习可以让你快速上手,框架还可以将游戏轻松打包到单个可执行文件,快来试试吧!

最后

HelloGitHub 想让更多人爱上编程、开源,也一直在尝试、摸索如何帮助更多的人。

如果你是在校大学生或研究生热爱编程、开源,喜欢讨论和学习技术相关的内容,那么来 HelloGitHub 的大学生开源俱乐部吧!你们的编程路才刚开始 HG 想陪你们走一段。加微信号:HelloGitHub (备注:学校和专业)。

发现更多 Java 开源项目

适合 Java 新手的开源项目集合——在 GitHub 学编程的更多相关文章

  1. GitHub 上适合新手的开源项目(Python 篇)

    作者:HelloGitHub-卤蛋 随着 Python 语言的流行,越来越多的人加入到了 Python 的大家庭中.为什么这么多人学 Python ?我要喊出那句话了:"人生苦短,我用 Py ...

  2. 适合 Go 新手学习的开源项目——在 GitHub 学编程

    作者:HelloGitHub-小鱼干&卤蛋 故事要从 2007 年说起.因为受够了 C++ 煎熬的 Google 首席软件工程师 Rob Pike 召集 Robert Griesemer 和 ...

  3. 适合 JS 新手学习的开源项目——在 GitHub 学编程

    作者:HelloGitHub-小鱼干 这里是 HelloGitHub 的<GitHub 上适合新手的开源项目>系列的最后一篇,系列文章: C++ 篇 Python 篇 Go 篇 Java ...

  4. Git,SVN的优缺点及适合的范围,开源项目?公司项目?

    Git,SVN的优缺点及适合的范围,开源项目?公司项目? 使用git不久,粗浅理解: 1)适用对象不同.Git适用于参与开源项目的开发者.他们由于水平高,更在乎的是效率而不是易用性.Svn则不同,它适 ...

  5. 立足GitHub学编程:13个不容错过的Java项目

    立足GitHub学编程:13个不容错过的Java项目 今天我们将整理一大波干货满满的Java示例代码与能力展示素材. GitHub可谓一座程序开发的大宝库,有些素材值得fork,有些则能帮助我们改进自 ...

  6. 适合 C++ 新手学习的开源项目——在 GitHub 学编程

    作者:HelloGitHub-小鱼干 俗话说:万事开头难,学习编程也是一样.在 HelloGitHub 的群里,经常遇到有小伙伴询问编程语言如何入门方面的问题,如: 我要学习某一门编程语言,有什么开源 ...

  7. Github上关于iOS的各种开源项目集合(强烈建议大家收藏,查看,总有一款你需要)

    下拉刷新 EGOTableViewPullRefresh - 最早的下拉刷新控件. SVPullToRefresh - 下拉刷新控件. MJRefresh - 仅需一行代码就可以为UITableVie ...

  8. github上关于iOS的各种开源项目集合(转)

    UI 下拉刷新 EGOTableViewPullRefresh - 最早的下拉刷新控件. SVPullToRefresh - 下拉刷新控件. MJRefresh - 仅需一行代码就可以为UITable ...

  9. 转: Github上关于iOS的各种开源项目集合

    https://blog.csdn.net/jiashaoying/article/details/79079500 下拉刷新 EGOTableViewPullRefresh - 最早的下拉刷新控件. ...

随机推荐

  1. Redis基础(二)数据库

    数据库 Redis服务器的所有数据库都保存在redisServer.db数组中,而数据库的数量则由redisServer.dbnum属性保存. struct redisServer { // .. / ...

  2. 给 Mac 添加右键菜单「使用 VSCode 打开」

    最终的实现效果是在文件 / 文件夹上右击时,会出现菜单项「用 VSCode 打开」,点击后会启动 Visual Studio Code 打开对应的文件 / 文件夹. 实现步骤 打开「自动操作.app」 ...

  3. oracle基本学习

    oracle目录及卸载 1.oracle的目录介绍: oradata:数据库存储文件的目录 db_home: network >admin:配置网络服务和监听器服务 jdk:oracle自带jd ...

  4. C#数据结构-线程安全队列

    什么是线程安全? 答:线程安全是多线程编程时的计算机程序代码中的一个概念.在拥有共享数据的多条线程并行执行的程序中,线程安全的代码会通过同步机制保证各个线程都可以正常且正确的执行,不会出现数据污染等意 ...

  5. 【5】JMicro其于RSA及AES加密实现安全服务调用

    JMicro是基于Java实现的微服务平台,最近花了两个周未实现服务间安全调用支持. JMicro服务调用分两个部份,分别为内部服务间相互调用和外部客户端通过API网关调用JMicro集群内部服务,前 ...

  6. Ethernaut靶场练习(0-5)

    1.Hello Ethernaut 目标: 安装好metamask,熟悉操作命令. 操作过程: 我们先提交一个实例,然后打开游览器F12.然后跟他的提示走. 先输入contract.info(). c ...

  7. Python之使用pip安装三方库Error:Could not find a version that satisfies the requirement <package>(from versions: none),No matching distribution found for <package>

    出现多次使用pip安装包时提示以下报错: ERROR: Could not find a version that satisfies the requirement <package> ...

  8. 痞子衡嵌入式:RT-UFL - 一个适用全平台i.MXRT的超级下载算法设计

    大家好,我是痞子衡,是正经搞技术的痞子.今天给大家带来的是痞子衡的开源项目 RT-UFL. 痞子衡在近两年多的i.MXRT客户项目支持过程中,遇到的一个相当高频的问题就是制作i.MXRT下载算法.我们 ...

  9. 1、Web应用

    一 Web应用的组成 接下来我们学习的目的是为了开发一个Web应用程序,而Web应用程序是基于B/S架构的,其中B指的是浏览器,负责向S端发送请求信息,而S端会根据接收到的请求信息返回相应的数据给浏览 ...

  10. ORA-00020: maximum number of processes (40) exceeded模拟会话连接数满

    问题描述:在正式生产环境中,有的库建的process和session连接数目设置的较小,导致后期满了无法连接.因为正式库无法进行停库修改,只能释放连接,做个测试模拟 1. 修改现有最大会话与进程连接数 ...