Fuck me on GayHub

漫谈Java及其框架

这几天因为要将视频点播直播的功能加入到体育局的项目中,所以必须与十分喜欢使用SSH框架的同事们协作。我会使用Java,例如视频转发功能的纯Java程序Rtsp2Rtmp就是我开发出来的,但是对于SSH框架,我就只算作了解了,我这里说的了解是指能跑个HelloWorld的程序而已或者稍微多点而已。

读了前面的话,你已经可能知道了我的观点了。但是请不要给我定论。因为我一向对于这些问题保持开放的态度,实践出真知,哪个使我的活干的快,干的好,我就支持哪一个。

我的Java历史

编程是我大学以后开始的,而Java第一次接触则是在大二的计算机课程中,由我们院的一个管理着据说很牛逼的集群的女老师授课。因为我们是数学院的计算科学专业,所以基本上是兼顾数学和计算机。直到老师上了一段时间的课程后,后知后觉的我才感觉到十分愤怒。为什么呢,因为这老师上课从不给我们演示程序是怎样书写的,只是照着网上下载下来的PPT课件宣读,顺便夹杂着讲她负责管理维护的集群有多牛逼。后来调查了她的履历以及所专注的事情,感觉要是突然要求这个老师写一个Java的HelloWorld程序,估计她还得上百度复制粘帖。就这经历我还没完,到大三的时候,她又继续带我们数据库,软件工程等计算机相关课程。哎,史书说明朝的内阁首府严嵩误国,而我觉得这老师在误人子弟。

大学本科从大一结束开始,我就开始了纠结,思考着在中国的大学里究竟应该如何学习?

哦,因为从学校规定的课堂上,我感觉我就没有学到有用的东西,所以从大二后半期开始,我就不以课堂为正统,什么狗屁教学计划,大学的人才培养,老师点到,我不陪你们玩耍了。学习是自己的事,是一个主动过程,不是你刀架到我脖子上,我就能搞好。不信你看看建国以后辛辛苦苦扶植培养的民族工业。不信你看看百度之于谷歌,谁好谁坏,一用便知。

既然Java课堂上就没有学会,那我就开始自己从图书馆借书,如《Java基础教程 基础版》,《Java基础教程 高阶版》《Java网络变成》等等,一本一本的看,实践理解书上的例子。使用Java写爬虫,如我的Project Google

本科的时候,Android刚刚兴起,好多人都学习Android平台下的编程,我也去了解了下,但不是很深入,写个测试某个功能的Android APP,我是没有问题的。

后来到了研究生阶段,因为方向是数据处理,所以就使用Java作为一部分的处理语言。

在本科的时候,指导我们的老师使用Java做事情,恩,应该主要是使用SSH做东西,但因为我是十分喜欢Linux平台下工作,感觉那一套与Linux的极简主义不符,也就没跟着倒是混的太深。他看了尚学堂的SSH开发系列视频,然后做了一个网站,后来就对其它老师说他非常精通SSH框架。后来我又了解到,因为大数据在中国火热,又因为他是数学老师,会点Java编程,就在导师介绍主页里面说大数据,数据挖掘,机器学习,人工智能,语音识别是他的研究领域。据了解,他每天忙着请客吃饭,申请论文,专利等一些能评职称的东西,真正没有在他所声称的研究领域投入资源精力。恩,我突然觉得以后千万不能相信没有经过自己验证的东西,人类的灵魂工程师尚且如此,令人大跌眼镜。

高校的这种成长氛围,学术氛围,不停的打破着我的梦想。现实真的是如此的惨不忍睹。成长看起来毫无希望。

于是乎,我顶着巨大的压力,去外面的公司实习。进入公司,参与到项目中,一个问题接着一个问题,层出不穷,从实践中迅速的成长着,做过后台开发,做过协议实现,做过路由器功能开发,做过大数据的搜索服务,管理服务器等等。之前出来的时候,老师说你们现在什么都不会,出去学不到什么东西,成长会很挫折。可是事实胜于一切。老师们觉得我们出来就是不好好学习,在外面浪迹,或者灯红酒绿。哎,我哪有资本灯红酒绿,再者说了,学生出来,不是出去整天嫖娼去了,里面学不到真东西,那就得去外面学习啊,再说,外面明显成长进步很快。

因为公司的一个视频流技术设计两个协议之间的转发,所以先后使用Java和C语言实现了两遍。这就是我之前的Java经历。

从Java到框架

如果你经常编程,那么你应该知道现在Java已经走到了8.0版本,从95年至今,不停的完善着Java的功能,使得现在的Java成为了一门无所不能的语言,从传统的软件编程,到WEB服务器,到数据处理方向,到嵌入式,到Android等等。因为NodeJs的异步概念,Java中也加入的异步的概念。哎,我这里例举不完。

一个人在成长的过程中,也渐渐的老去。Java因为不断的完善而慢慢变的臃肿。所以人们开始转移视线了,如偏向动态语言的Python,NodeJs等。但是Java依然庞大,所以折中的办法是后续的基于JVM的Groovy,Scala,Clojure等等。

还有就是Java的各种框架,struts, spring, hibenate, JSF, play,等等不胜枚举。

这么多的选择,这不是Java的错,关键是我们要能合理做出选择。在做体育局的项目中,发现他们效率极低,这个东西要是让我使用NodeJs,感觉能飞快的实现出来。例如,为了实现一个接口,我得写一个Action class, 然后到数据库层里实现Interface等等,最后整出来的URL接口还是个这http://localhost:8080/SportEx/camer/updateVideoRecord.action?parameterConditions.ID=11111&parameterConditions.DTIME=%22321313131%22,这东西看起来就不简洁。

SSH框架是好东西,但它有它的适用环境,小小一个体育局项目,貌似衣服有点大。

哦,《黑客与画家》的作者说一个语言要是不简洁,对使用者不友好,那么它就最终要消亡。我估计Java在走向这个方向。例如,打开个文件,需要用StreamInput, BufferReadered, IOException等一系列东西,创建一个socket链接还要使用stream, buffer, exceptions等概念。为了读取一个文件,我的HelloWorld程序写了一页纸。

因为我自己的Project的需求,经过一番调查,决定选取Java 框架Ninja, 一个轻量快速简单的MVC框架。且是RESTful API格式的。

Coworkers

再讲一起共事的人。作为程序员,一定要思维开阔,不能局限。不能因为自己大学毕业后去了培训机构培训了SSH框架,以后所做的每件事情都用SSH。要博览群书,时刻观察新技术,注意技术界的动态。

我是因为在视频功能集成的过程中,发现与他们交流,半天反应不上来,战前顾后,左右考虑为难,一个功能老久才能做出来。这种团队必须得逃离。