我是一名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,而是来自终于开源了的微软。即便微软的开源还是那么扣扣索索。

总结

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

【Java二十周年】我的JAVA小时代相关推荐

  1. 【Java二十周年】爱上Java无法自拔

    林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka 一.写在前面的话 不知不觉之中,java都已经20岁了.刚好是一个正值青春的少年,回想当初他出 ...

  2. 【Java二十周年】回忆我与Java的点点滴滴

    借Java二十周年之际,静下心来思考自己与Java的故事,屡屡思绪,记忆深处关于Java的点滴回忆便一层层铺展开来. 本科--我的Java"启蒙老师" 对于计算机这个口水颇多的专业 ...

  3. 【Java二十周年】春风十里,不如你

    看到这个题材突然内心肿胀无限,有强烈的倾诉冲动.今夜我不关心人类,我只想你. 上中学时我还不认识你,java.初一时家里买了电脑,但是除了红警之外仅存的记忆就是163.169拨号的滴滴声再无其他:真正 ...

  4. delphi java 类似_【Java二十周年】Delphi转行java的一些小感触

    本文纯属1届小码农对java使用进程的体验感触 目录: 初遇java编程语言 与java的擦肩 深入java跨平台性 开源支持 web的支持 初遇java编程语言 刚上大学的时候,完全是个电脑盲.刚入 ...

  5. 聊聊高并发(二十九)解析java.util.concurrent各个组件(十一) 再看看ReentrantReadWriteLock可重入读-写锁

    上一篇聊聊高并发(二十八)解析java.util.concurrent各个组件(十) 理解ReentrantReadWriteLock可重入读-写锁 讲了可重入读写锁的基本情况和主要的方法,显示了如何 ...

  6. 聊聊高并发(二十五)解析java.util.concurrent各个组件(七) 理解Semaphore

    前几篇分析了一下AQS的原理和实现,这篇拿Semaphore信号量做例子看看AQS实际是如何使用的. Semaphore表示了一种可以同时有多个线程进入临界区的同步器,它维护了一个状态表示可用的票据, ...

  7. 聊聊高并发(二十九)解析java.util.concurrent各个组件(十一) 再看看ReentrantReadWriteLock可重入读-写锁...

    上一篇聊聊高并发(二十八)解析java.util.concurrent各个组件(十) 理解ReentrantReadWriteLock可重入读-写锁 讲了可重入读写锁的基本情况和基本的方法,显示了怎样 ...

  8. 教妹学Java(二十二):来吧,一文彻底搞懂Java命名约定

    你好呀,我是沉默王二,是<Web 全栈开发进阶之路>的作者,CSDN 博客之星.<教妹学 Java>是一套非常有趣的付费专栏,除了继续保持幽默风趣的行风风格,我还力求把每一个知 ...

  9. java二维数组的创建,java二维数组创建方法

    java动态创建二维数组,从零学java笔录-第31篇 图解二位数组在内存中存储,java二维数组动态赋值,java二维数组创建方法 二维数组的定义 type arrayName[ ][ ]; typ ...

最新文章

  1. thymeleaf+layui 展示table 报500
  2. 自动驾驶中常用的四类机器学习算法
  3. 回溯法实现n份作业分配给n个人完成的问题
  4. Python绘制简单函数曲线(包括坐标范围限制、刻度指定)
  5. mybatis自动扫描注解
  6. php post get content-type,content-type - java访问php接口问题,$_POST默认接收的contentType是?...
  7. C++ Bayes‘ theorem贝叶斯定理的实现算法(附完整源码)
  8. PC端设置每行固定三个元素多余换行
  9. leetcode436. 寻找右区间(二分法)
  10. IOS7的蛋疼各种收集
  11. nvidia-smi‘ 不是内部或外部命令,也不是可运行的程序 或批处理文件
  12. springCloud 搭建Eureka
  13. 电脑端音乐播放器html5,分享|5 个很酷的音乐播放器
  14. BZOJ2049[SDOI2008] 洞穴勘测
  15. Excel VBA 函数
  16. Android项目中的armeabi,armeabi-v7a和x86
  17. TIFF图像文件格式分析
  18. ARM开发(四)新手小白如何阅读芯片手册,裸机驱动开发步骤以及纯汇编实现点灯,汇编结合c点灯,c实现点灯
  19. Win7电池电量设置
  20. 家具销售管理系统/家具在线商城

热门文章

  1. 男人的终极品味是选妻
  2. scratch传说之下素材_《故事新编》:在古老传说和寓言故事上丰富情节和赋予意义...
  3. Python学习之路:关于列表(List)复制的那点事
  4. 时空旅行的可能性(无聊研究社)
  5. Circular-Circular 和 Circular-Linear Regression
  6. GraphSAGE论文阅读笔记
  7. 电脑只有飞行模式 不显示任何WiFi信号
  8. git 回退远端master/develop分支版本
  9. 图情论文笔记 | 图书情报档案机构如何助力乡村振兴?
  10. xxx is not a function