天天看点

【Java二十周年】我的JAVA小时代

我是一名80后码农,而且生在80后的尾巴。在我这个年龄说20年,是相当没有底气的一种状态。假如我活了100岁,那么我来说20年,就像抽一根香烟般轻松。即便如此,对于Java,80后是相当适逢其会的一代人。

混乱之治:Java是一个很好玩的语言,能放进书包

对80后而言,Win神是不可避免的。记得最开始接触Win神就是因为Microsoft Word。中学的计算机老师以传播它为生,而教学大纲认真地把Word写进了必考内容,因此造成的后果是,很多人对于电脑的想象力,大概就止于这货。真正难以避免的,是Win神对于年轻人探知未知世界的一种冷漠和贵气。

对于成长中的少年,乐趣永远是第一位的,于是就注定了要和游戏机结缘,也就注定要认识Java这个单词。在西西果和圣斗士版画横行的年代,Windows不能带上街,Java却可以塞进书包。即使再喜欢星际争霸,这也是一个很好的抗拒理由。

石器时代:Java是一个非常重的语言,讨厌XML

经过高中的奋战,进了不那么梦寐以求的大学。我依然雄心勃勃地要“学会编程”。那时候Java1.6很火,更火的各大编程论坛对于JSP的讨论。总是有人实现了一个功能,然后急切地发表到论坛中。我们做的事情就是把这些代码搬运下来,运行一遍,开心半天。你说编程?那时觉得就是IDE和度娘之间的事。

当时炒得最火的一个概念是SSH框架。有人会说,不会SSH框架你就会失去Java的就业资格。戏剧性的是,直到今天,我依然没有掌握SSH框架。终于,在那一天准备学SSH框架的时候,百度到了ssh的另一个意思(S-SHell),自此,开始与Linux结缘。

当一个编程爱好者遇上Linux,是一种命中注定。在把Linux的几个发行版重装了数十次以后,宣布Java实际上存在的一个问题是:服务应封装,框架是恶魔。它很重,不如C,只比C++好;对于Web的工作更倾向于PHP,因为它的语法和Shell很像,而Shell脚本是Linux用户的第三只手。专心于Linux代表一种分道扬镳:对微软说再见、对JSP说再见。

黄金时代:Java是一个OOP编程语言,还相当纯

2011年左右,安卓的概念在圈内已经很火了。当时已经适应了一年左右的C#,刚好面临择业问题,果断转了APK。有人会告诉你,C#有点像C++。其实C#从设计之初就旨在替代Java。

2011再用Java,有了比较扎实的面向对象编程的基础。至少类,对象,接口,继承,可访问性这些基本概念能用起来了。那时候意识到编程的概念很广,对于应用程序的目标部署、分析规划和调试封装都要有一定的理解。这些理解是在实践中言传身教,这种默许的流程论坛给不了,书籍给不了,因为文字本身能承载的东西有限。不仅需要一个彻底理解了编程的人做老师,而且还需要不断地独立完成许多应用程序并总结。

设计模式是优秀的实践。对于这类同行意见,不应该存在“吸收还是不吸收”的问题,只能允许“如何吸收”的问题。

在对“编程是在做什么”有了一定的认识以后,重新启用了Java。因此用起来有一种恰如其分的感觉。同时发现有一些对Java代码的处理违背了一些比较好的原则。比如说书籍上的HelloWorld示例,它在Main方法所在的类文件引入了java.io。对这样的“可能性污染”的细节也有了点追求。

即便是C也有CRT。Java比C#古董,然而古董并不代表功能缺失,相反,总是能以恰当的方式去实现。Java更好的是保留了用基本的OOP概念组装复杂逻辑的自由,而不是不断地给一些五彩斑斓的语法糖。

在语法糖和好封装之间,倾向于好封装。Java是一种魔法,有效地克服了C++的繁杂,把复杂问题有条不紊地降解、映射到OOP的基本概念。

白银时代:Java是一个为碎片而生的语言,短小精悍

2011-2014是APK爆炸式产生的年代。当然很少有人会告诉你的是,这同时也是JSP业务爆炸式增长的年代。VM或许比原生可靠,包括JVM。最关键的是VM维持长期可靠性所需要的成本比原生低。经历了风风雨雨之后,Java终于成了资本主义的代言人。

这一阶段,Java严重依赖xml的问题逐渐暴露出来。Ant不再胜任项目管理,海量的Java类需要签入、签出。当需要依靠一种语言来胜任整个业务的时候,仅仅依靠Java也有点力不从心。当然你可以高高兴兴地纯手工项目运维,这是一种选择,还有自动化运维的选择。

Java以难得的语言单一性维持着一朵云帝国。在这朵云中,全部是小水珠一样的Java类。

玄铁时代:Java不是一个人性化的编程语言,WTF

前期对于应用构建的理解是,应用构建是一个机械的过程。当UX成为一个分工出现后,对称地,人们开始考虑编程的人性化问题。

曾经的文学编程不仅属于文艺青,而且只属于文艺青当中的技术狂。随着越来越多可定制的选择出现,Java不人性化的一面被揭露了出来。

首先是没有一个完美的IDE(私以为最好的Java IDE是slickedit,,,)。Eclipse界面的丑陋性和偶尔在协作上出现的龟速,对于人性化编程是地狱。然后Eclipse快捷键是混乱的,最起码不如Vim或者Emacs这样有规律,前者的语法着色和字体渲染很丑。

真正的原因在于Java语言本身。语法糖是人性化编程大力吹捧的东西,而Java缺乏银弹。好封装比语法糖重要的观点需要修正:从来没有好封装,应该多用语法糖。

后Java时代:Java并不唯一,圈子只是亚文化,善建重行

在编程语言圣战中,力挺Java的人在改变。不仅仅是他们有可能不再力挺Java,更重要的原因是他们在变老。世界既是年轻人的,也是老年人的,归根结底是现在的年轻人的。一门编程语言的价值,更多地依赖于产业链来得到体现。

现在来讨论SSH框架,就像讨论STL。它重要吗?它曾经很重要,它曾经见证了一些人的神圣,和另一些人的冒失。它重要吗?它或许不再那么重要,重要而非必要。

很显然,面向money编程(Money-Oriented Programming)更为世故,也更为明智。可能会因为换一份工作的原因,而换一门编程语言。自己应该有一个喜欢的语言,力挺自己的项目/fork。更重要的是以应用为单位攒齐构建技术,而不是抱着一个词汇,乱射批评之箭。

Java即将经受的一个大冲击或许不会是Ruby,而是来自终于开源了的微软。即便微软的开源还是那么扣扣索索。

总结

或许从来就不是个技术问题,只是个单一的圈子问题。