发布于 

Java 30周年,而我与Java也已相识10年

上次在 v 站看到 v 友发帖说 Java 30 周年了,一想,发现自己接触 Java 也已 10 年,心中一阵感慨。

趁着空闲的时候,记录一下自己与 Java 的这 10 年,或者说,与编程的 10 年。

前缘

因一款游戏,知道了编程

第一次了解到 Java,还是 15 年,那个时候,我还在读高二。

当时我的学习成绩不好,我也不爱学习,对考大学也不上心。

心里只想着,反正考不上本科,有个专科读就行了。

就这样,我每天都玩游戏。

有一次,我看到同学在玩一款游戏,叫做《正常的大冒险》,它那变态玩法吸引到了我,于是我也去下了一个。

在那个游戏里,我第一次知道了 “开发者” 这个概念。

这也是我第一次,对程序产生了疑问。

这个软件是怎么来的?为什么点击这里就会这样?这是谁设定的?

于是我就去网上搜,后面我就了解到了 “编程” 的概念。

原来程序是通过编程得到的。

当时我就想,那我要学编程,我也要做一个这样的游戏!

当时的我没有电脑,只有手机,我就去搜手机上怎么学编程。

结果还真搜出一个软件,叫 Aide,用它可以在手机上开发安卓 app。

而且我很幸运,还搜出了它的教程,也是一个 app,我还记得它的作者叫 “爱上疯人院姑娘”,好像是百度贴吧 Aide 吧的吧主。

于是我就跟着教程学。

现在想想,自己当时还真是挺天真的,只是知道编程,但是对编程语言都没有任何概念,居然就敢学编程。

我是怎么学的呢?

说出来不怕大家笑话,我是一行一行代码,一个一个单词,死记硬背。

背安卓的类文件,xml 布局文件。

因为当时的我完全不理解这些东西,我只知道,教程上是这么写的,那我也这么写就对了。

我唯一知道的是,类文件里,双引号包起来的部分,可以自己替换成别的文字,xml 文件里的有些数字可以调大调小。

我当时觉得,只要我把所有代码背下来,那我就会编程了。

就这样,我跟着教程慢慢学。

后面就做出了我的第二个软件,因为第一个是 HelloWorld。

我做的这个软件很简单,就是界面上一个输入框,一个按钮,输入文字后,点击按钮,就把输入的内容,拼上一段写死的文字,再显示出来。

非常简单,但是我当时真的很开心。

我觉得,我有希望可以做出一款游戏了。

再后来,我学到了横屏竖屏,图片控件等等。我更加觉得,我可以做出一款游戏。

我心里想,软件横屏过来,放上背景图,人物图片,点击按钮,就调整人物所在控件的位置,这不就是游戏了吗?

然而实际上我到了大学才知道,游戏不是这么开发的,这个后面再说。

我继续跟着教程学习,有问题就去贴吧问,但是还是感觉很艰难,后面的内容,似乎不是背下来就行的。

后面在吧友的引导下,我知道了学 Aide,也就是学安卓开发,要先去学 Java。

原来我写的那些代码,是一个叫做 Java 的编程语言。

于是我不再学 Aide,而是打算先去学 Java。

学Java,差点去培训机构

当时我已经高三了。

既然知道了要学 Java,我就去网上搜 Java 教程,然后搜到了别人百度云的分享。

是一个培训机构在腾讯课堂上的视频,那个培训机构叫 “潭州学院”,然后我去看他们的视频,但是看不懂,并不是零基础的。

也下载了腾讯课堂,上他们的免费课,虽然一样也是听不懂,但是也了解到一些东西。

比如当时听老师说写支付宝源码,感觉很厉害,听他说程序员都月薪 3w,心里很向往。

当时他们的课程,我唯一听懂一点,且跟着学的,就是 html + css,我跟着他们的视频,用手机,当时是用 mt 管理器,写 html + css,然后用 qq 浏览器看效果。

Java 没学到,倒是学了一点网页开发。

后面我还是会时不时听他们的课,虽然都不太听得懂,但是还是感觉他们很厉害。

然后我又买了一本书,叫《Java入门到精通》,既然没有零基础的视频,那我就跟着书来学。

可惜的是,书虽然是从 0 到 1,但我还是看不懂,看了一部分,我也还是不理解,这些代码都是啥?怎么用 Java 做软件?

后面由于我实在是看不懂,书也没怎么看了。

再后来,因为看他们免费课程,他们经常在里面推销自己的付费课,说得天花乱坠,我当时萌生了不考大学,报他们培训班的想法。

幸好,最终我还是选择去读大学,不然我一定会后悔。

踏上编程之路

大学,正式开启编程之旅

16 年,高考结果出来后,我毫无意外没考上本科,只能去读专科。

于是我选了一个省内的二本院校,因为它虽是本科院校,但也招专科,而且有软件专业,并且我的分数也达到了分数线的要求。

进入大学后,大一第一学期,我们学的是 C 语言。

学了一些简单的控制台打印、输入、循环、判断、ASCII 编码、函数定义这些。

可能是因为我之前学编程的原因,也算是打下了一点基础吧,C 语言学起来还是比较轻松的。

对于编程语言,也算是入门了。

第一学期,除了 C 语言和高数(因为这个太难了),其他我已经没啥印象了。

哦对,还学了 PS,现在这点 PS 技术也全靠当时学了一些。

还有一件印象深刻的事就是,当时我还是个电脑小白,自己尝试给电脑重装系统,结果不小心把整个磁盘都给格式化了。

我的好多资料,学习时写的代码,全都没了。

在那之后我对于装系统就比较轻车熟路了,后面还给那台电脑装了三系统:win10、deepin、ubuntu。

Java 之父马士兵

应该是大一下学期的时候,那个时候还没教 Java,教的是 php。

当时还用 php 写爬虫,爬美女图片哈哈哈。

但是我还是想先学 Java,于是一个和我玩得比较好的同学,就给我了一份 Java 的视频。

那个视频正是马士兵老师的。

当时已经是 17 年,而那个视频是 06 年的,也就是说,是 11 年前的视频。

当时我却看得津津有味。

甚至我觉得,即使是放到现在,也不过时。

马士兵老师真的讲得非常好,听了他的课程,我终于理解了什么是类,什么是对象,什么是接口,什么是继承…等等。

以往感觉晦涩难懂的知识,在听完马士兵老师讲解后,我都能理解了。

就这样,我跟着课程,听完一节,就把课程里的所有代码都手敲一边,把 Java 基础都学完了。

学安卓

学完 Java 基础以后,我又开始自学安卓。

因为当时才大一,学校还没教安卓,到了大二才开始教。

当时是借同学的书,叫《第一行代码》,然后跟着书本来学。

或许也是因为之前学 Aide 加上学完了 Java 的原因,现在再学安卓,感觉比之前顺畅多了。

就这样,我把安卓四大组件那些都给学完了。

我后面还开发了一个 AI 聊天机器人,当时的 AI 还没这么智能,只能进行一些简单的回复,比较呆,我是对接的图灵机器人 api。

我还知道了慕课网这个网站,我又在慕课网上跟着课程继续学安卓。

转 JavaWeb

我本以为我会就这样在安卓编程的路上一直走下去,然后毕业后当一名安卓程序员。

直到有次我同学劝我转 Java Web。

一开始我还是打算继续学安卓的,因为我觉得这是我的兴趣所在。

后来或许是被他说动了,或许是认清了安卓开发现在确实不吃香了,最终经过一番考量,我还是选择了转 Java Web。

然后我便又开始学 Java Web,当时看得是韩顺平老师的视频,跟着视频学了 jsp、servlet 这些。

不过这些学的比较浅,主要是为了了解,当时也知道这些技术早就过时了,但是觉得还是有必要了解一下、学一下。

又学了 Spring、Hibernate、Struts、Mybatis 这些,也就是 ssh、ssm 框架。

后来学校也开始教 Java 和 Java Web,当时我的期末作业,就是用 ssh 框架开发的手机商城。

界面是直接复制的华为手机商城的源代码,然后做删减修改,后台就自己开发,具有完整的登录注册下单功能,就是没对接支付。

当时觉得自己可厉害了。

说实话,真的很感谢我同学,多亏他让我转 Java Web。

不然我可能毕业后连工作都找不到。

学习各种框架、中间件

转 JavaWeb 之后,除了上面那些,我还学习了很多东西,Linux、Spring Boot、Redis、MySQL、RabbitMQ、Docker 等等。

也学各种前端技术,js、vue、element-ui 这些,都是这时候学会的。

当时区块链很火,于是我又自学了区块链,就是 solidity,但是当时完全学不明白,感觉学了和没学一样。

还有就是学校课程,也终于开始教安卓了,不过我已经转 Java Web。

然后学校还教了 Unity 游戏开发,也就是这时我才明白,原来游戏是有专门的开发工具,开发过程也和开发 APP 不同,并非我当初想得那样。

还有 iOS 开发,不过这个只教了几节课。

17、18年 ,是我学习各种技术最多的时候。

参加工作

福州#1

19 年初,大三下学期,我们就都出去找工作了。

一开始我去了深圳,结果很丢脸,找不到,没有公司愿意要我。

后来又转去福州,这才找到一份 3.5k 的实习工作。

刚进去时,公司用的还是 jsp、servlet、struts2 这些技术。

当时的主流框架已经是 SpringBoot,并且我也是对 SpringBoot 比较熟悉一点。

不过好在这些东西我也会,所以工作也还算顺利,交给我的任务基本都能完成。

再后面,公司技术栈就转向 SpringCloud 微服务了。

说句真心话,挺感谢这家公司的,尤其是我当时的组长,他对我真的特别好。

在这里,我学到了很多东西,微服务相关的什么注册中心、网关、授权认证、分布式事物,还有 Jenkins、Nexus、K8S、手机 app 抓包、对接第三方服务等等,都是我以前从未接触过的。

最重要的是我有了实际工作经验了,而且这家公司,他从来不加班!

上了几个月班之后,我终于有钱把我那台电脑换掉了。

新电脑到手之后,试了一下 IDEA,打开速度很快,启动服务也很快,当时想着,又可以愉快的学各种新技术了。

可惜,买前生产力,买后爱奇艺。可能是我倦怠了,浮躁了,后面已经基本不怎么学习了,新电脑大多数时间都是用来看动漫。

几百个 G 的 Java 学习资料,全放百度云吃灰了。

不过还是学了一下微信小程序和 nodejs。

深圳#1

在福州这家公司,我待了两年多,后面在 21 年,因为个人原因,离开了福州,来到深圳,进入一家互联网公司。

在这家公司,一开始也是负责 Java 服务端开发。

并且这个是新项目,服务器环境、各种中间件、微服务框架,都是由自己搭建。

也算是把上个公司学到的技术用于实践了。

不过由于项目比较赶,所以我们也经常加班。

后面公司业务重心向区块链偏移,但是原来负责区块链的同事却离职了。

没办法,只好由我们几个 Java 开发,接手原来区块链的业务,一边学一边用。

可能是以前学过 solidity 的原因,也可能现在知识储备够了,毕竟编程语言都是相通的嘛。在区块链这方面,我比其他同事掌握的都快。

于是后面就由我单独负责区块链相关业务,主要就是编写和部署智能合约,并且负责区块链与中心化服务交互,比如 Java 调用智能合约、js 调用智能合约这些。

后面我因为各种原因:

1、我还是想做 Java,我觉得 Java 才会是我正确的职业道路。
2、怕区块链相关业务会涉及到违法的东西。
3、智能合约一旦发布到区块链,就无法再修改,如果出了 bug,那就是致命的。我自认为还做不到写的程序一点 bug 都没有。

于是,我离职了。

在这家公司差不多刚好干了一年。

深圳#2

再后来,就是现在这家公司了。

在这里,我继续做 Java 服务端开发。

由于没有专门的前端开发人员,像小程序、管理后台还有一些不算复杂的页面,都是需要我们自己做。

前不久我还负责把平台网站,由 Vue 客户端渲染改成了 Vue 服务端渲染,用的是 Nuxt 框架。主要是为了 SEO。

然后公司还有一些业务涉及到安卓,于是我又兼职安卓开发,因为有 AI,加上毕竟也工作这么久了,对 Java 也这么熟了,对于安卓,日常做点小功能调整,感觉还是没有什么难度的。

之前我们要给第三方平台提供服务,需要给 SDK,有些客户需要 php 版本的 SDK,于是我大学时期学的那点 php 又派上用场了,再加上 AI,很快把 SDK 搞出来了。

现在日常就是改改需求,修修 bug,看看日志,维护服务器这些,偶尔也要加加班。



这篇文章写的断断续续,花了不少时间,想到一点就写一点,有好多事情我都忘了,不太记得清了,可能时间记错了,写的有点乱。

如果你坚持看到这里,那我必须对你说句感谢,谢谢你愿意看完我写的这些乱七八糟。

十年前,一名高中生因为想做一款游戏而学习编程。十年后,他没能做出一款游戏,却成为了一名 Java 程序员。

这,就是我与编程,与 Java 的十年。