Java技术诞生于1995年的5月23日,这样一个在程序设计领域长时间占据统治地位并且拥有最好的生态系统的语言起初只是太阳微系统公司(Sun Microsystems)一个失败的机顶盒项目的附产品。Java的第一个正式版本发布于1996年1月23日,在这个最原始的Java版本中,类和接口加起来总共只有211个,那时候的Java并不完美也不强大,但是由于它紧紧的抓住了当时最时髦的两样东西——互联网和浏览器,并拥有完美的平台可移植性,再加上计算机领域的全能奇才James Gosling(Java技术的创始人之一,被誉为Java之父)对它的炒作和推广,这个语言用了大约5年的时间就在TIOBE发布的编程语言排行榜上坐上了头把交椅,达到了它的人生最巅峰。盛开得再绚烂的花也免不了有凋谢的时候,日中则昃月满则亏,Java这朵程序设计语言中的奇葩也摆脱不了自然的规律,从下面的图中你可以发现,Java语言在经历了它的人生巅峰以后已经走了很长时间的下坡路,尤其是在甲骨文公司(Oracle)收购了太阳微系统公司以后,虽然Java的生态系统依然良好,但是语言本身已经江河日下。今年是Java诞生的第20年,写这样的一篇文章纪念那个曾经让我执着和疯狂的Java,也纪念那个从单纯到复杂再回归单纯的我。 这里写图片描述

Java的编年史

1995年

  • Java诞生

1996年

  • Java版本:JDK 1.0
  • 发布时间:1996年1月23日
  • 开发代号:Oak
  • 类和接口的数量:211
  • 新特性或功能:初始版本
  • 我的故事:1996年我以全校第二的成绩考入了我们当地的省重点高中,在小地方即便是重点中学,硬件条件也是没办法跟大城市比的,但是值得庆幸的是学校还是为我们高一学生开设了计算机课。那时候上计算课纯粹是好奇和好玩(能在DOS系统下玩拷贝在3.5寸软盘中的五子棋和足球游戏),说实在的连打字都没有怎么练好,但是那一年我第一次接触到了程序设计的概念,知道可以用命令或代码控制计算机做我想让它做的事情。还记得有一次上课的时候,老师出了一个BASIC的编程题让大家写代码,用穷举法找出一个问题的答案,当时全班就我和我的同桌(此君大学选择的专业以及现在从事的工作都和计算机相关,目前是深圳卫视做后期制作的负责人,这也算是三岁看老)写出了正确的代码。在期末的计算机考试中,我和同桌都获得了A级(好像有ABCD四等,A当然是最好的),这个A成为了我后来填写高考自愿时选择了计算机专业的原因之一。

1997年

  • Java版本:JDK 1.1
  • 发布时间:1997年2月19日
  • 开发代号:无
  • 类和接口的数量:477
  • 新特性或功能:
    • 改进AWT事件模型
    • JavaBean
    • JDBC(Java数据库连接)
    • 内部类
    • RMI(远程方法调用)
    • 反射(只支持内省)

1998年

  • Java 2企业平台发布
  • Java版本:JDK 1.2 (Java 2)
  • 发布时间:1998年12月8日
  • 开发代号:Playground
  • 类和接口数量:1524
  • 新特性或功能:
    • 集合框架
    • JIT编译器
    • JFC(Java基础类库)
    • JDBC可滚动结果集、BLOB、CLOB、批处理

1999年

  • SUN公司发布Java的三个版本:标准版(J2SE)、企业版(J2EE)、微缩版(J2ME)
  • 我的故事:这一年,我参加了在中国几乎算得上是人生分水岭的高考。那年对个别老师的反感,对填鸭式教学的叛逆以及其他种种原因让我的内心非常的浮躁,在这种状态下必然性的错过了第一志愿,最终被四川大学录取,专业是计算机科学与技术。高考结束后,为了度过这个漫长的没有作业的假期,在朋友介绍下去了一家计算机培训学校学习,学费100元。说是学校,其实就是一个老师两个房间的环境。那时候,计算机对我以及周围的很多人仍然是神秘的,不会经常触碰到的东西,在那里学习的东西基本上就是五笔打字而已。那是一段愉快的经历,因为我很快和那家培训学校的唯一的老师“王哥”成为了朋友,因为我去了两天后基本上就能解决其他学员的所有问题,成了他最好的助手并经常帮他看店。“王哥”是个非常聪明的人,逻辑思维能力极强,这一点从他的象棋水平就能看出来。他用一年的时间自学了七门计算机课程,然后就在这家学校当了老师。一个月后,当我离开家到成都上大学的时候,我从他那里学到了如何用程序控制计算机发出声音。

2000年

  • Java版本:JDK 1.3
  • 发布时间:2000年5月8日
  • 产品代号:Kestrel
  • 类和接口的数量:1840
  • 新特性或功能:
    • 内置HotSpot JVM
    • 改进RMI对CORBA的兼容性
    • 动态代理相关类
    • Sound API
    • JNDI
    • JPDA(Java平台调试器体系)
  • 我的故事:2000年,我在大学里面学习了第一个有生产力的编程语言也是我迄今为止最钟爱的编程语言——C语言。学习C语言的过程并不轻松愉快,原因一:以前学到的一点点BASIC对学习C语言基本没有帮助,原因二:教C语言的老师的水平实在不敢恭维,很多时候我们有问题都更愿意请教我们班的高手(他现在在国家安全局工作,在我眼中他算得上是一名真正的黑客)。我现在都清楚的记得最后一次C语言课的时候,老师直接从教材的85页讲到了216页,这一百多页中包括了二维数组、函数、编译预处理、指针、结构体等重要内容,是的,他就用了一节课把这些东西强加给我们。当时我们用的教材是谭浩强老师的《C程序设计》,很多高校都选择了这本书,当然我个人对这本书的评价是比较低的,因为这本书确实没有教给我任何有用的东西,当然最可恨的是它有一本配套的习题集,上面的很多题目其实都没有所谓的标准答案(因为在不同的开发平台和操作系统上会得到不同的答案),但是谭浩强老师假定了我们一定会使用Turbo C(一个古老的16位环境下的C程序集成开发环境)。在这一年的下半年,我开始了我的初恋,她希望我好好学习编程并把我学会的东西教给她,于是有一次逛书店的时候,我找到了一本叫《Java 2傻瓜书》的书,就是这本书带着我步入了Java的殿堂。那个年代,周围的同学们关注更多的是VC++(微软的Visual Studio for C++)以及MFC(微软基础类库)的东西,认为那是在我们毕业的时能够给我们带来高薪的技术,但是我只看了半天就被那些丑陋的API和恶心的Macro给搞晕了,于是我下定决心不走寻常路(直到现在,我都认为当时的决定非常正确)。那时候我对Java的了解其实很少很少,但是那本傻瓜书中一些精美的Java代码却深深的吸引了我。

2001年

  • Nokia宣布到2003年将出售1亿部支持Java的手机
  • 9月24日,J2EE 1.3发布

2002年

  • Java版本:JDK 1.4
  • 发布时间:2002年2月26日
  • 产品代号:Merlin
  • 类和接口的数量:2723
  • 新特性或功能:

    • 计算能力提升
    • XML处理
    • Logging API
    • JDBC 3.0 API
    • 断言
    • 支持正则表达式
    • NIO
    • 支持IPv6
    • 图形I/O API
    • Java Web Start
    • Preference API
  • 我的故事:这一年我和初恋分手了,痛定思痛,我告诉自己不应该再浪费时间去做那些没有结果的事情,于是我结识了我们年级的编程第一人“阿牟”,那时候他对Java已经有很深的认识和研究了,他带着我把我之前了解过的Java知识在一个项目中实践了一遍,这时我才算真正感受到了程序的魅力,真正学会用程序去解决问题并在代码中表达自己的精神和情感,这是我大学生涯最重要的事情之一。这一年的10月,“阿牟”邀我一起作为创始人在四川大学成立了Java技术俱乐部,成立伊始我们就接纳了400名以上的会员,此后我们几个负责人轮流为大家讲解如何用Java技术进行软件开发,同时也为会员提供SCJP(SUN认证的Java程序员)和SCJD(SUN认证的Java开发者)考试的培训和辅导,做这件事情不仅提升了自己也帮助了别人,很有意义。

2003年

  • 我的故事:这一年我被保送到西南交通大学读硕士研究生,本来是一件挺高兴的事情,但是由于家里的经济状况出现了严重的问题,让我怎么也高兴不起来。于是我开始寻思着出去做点事情来赚一些外快。这一年的暑假,我接下了人生的第一个私单,为一家公司写一个做数据处理的程序,用的是J2ME中的kXML API在手机上用XML对语音数据进行编码和解码。至始至终我都没有和这家公司的任何人见过面,以至于我其实并不能准确的叫出这家公司的名字,所有的需求和代码都是通过邮箱来传递的,在邮件中,这家公司的名字叫“Li-Tong Communication”。遗憾的是当时用的邮箱以及当时写的代码已经再也找不回来,不然还能留下一些美好的回忆。那一年,我结交了第二位女友,她把她的电脑和PDA都给了我,让我有了谋生的工具,并且帮助我度过了经济上最困难的时候,谢谢她。

2004年

  • Java版本:Java 5
  • 发布时间:2004年9月30日
  • 开发代号:Tiger
  • 类和接口的数量:3279
  • 新特性或功能:

    • 泛型
    • for-each循环
    • 自动装箱和拆箱
    • 枚举
    • 可变参数
    • 静态导入
    • 注解
    • java.util.concurrent
  • 我的故事:为了在学习和科研之余不荒废Java,我自己做了一个数据库的GUI(图形用户界面)工具,能够以可视化的方式操作数据库中的表和视图等,也能够执行SQL(结构化查询语言)语句并显示执行结果。虽然没有不是什么有技术含量的作品,但是里面却包含了我对Java的热爱。后来这个作品代码还我被当作研究生中期遴选的作业提交了,不过它并没有获得什么好评,因为那时候从老师到学生根本不关注Java技术,Java在行业中已经火了但是在高校中还没有火,等到Java在高校中火了,Java在行业中已经显得有些明日黄花了(这算是从某个方面折射出中国高等教育的失败)。于是,这一年我最好的作品就被忽略掉了,后来我也没有继续去改进和维护它。这一年我找到两家软件公司做兼职程序员的工作,一家培训公司做兼职讲师的工作,生活状况得到了改善。这一年,我遇到了我现在的妻子,初次的印象是美丽、勤谨、善良。

2005年

  • SUN公司宣布,Java三个版本更名为Java SE、Java EE和Java ME
  • 我的故事:这一年我被保送继续攻读博士研究生,并希望在这个过程中找到我的Java程序和科研工作的交集。当时,我试图用Java为我们要做的一个路由器测试系统开发一套测试配置和管理平台,但是老板否决了我的方案,因为他更信任有效率的C语言以及平台无关的测试语言TTCN-3。现在想起来,当时我并不应该放弃我的想法,我应该做一个快速原型然后展示给老板看,并说服他接受我的方案。无数的事实证明,很多时候我们缺少的并不是idea,我们缺少的是行动力(执行力)。这一年我继续着学习、科研和兼职工作,并从中获益良多。当然,给我启发最多的是我的室友“小胖子”,当时他的专业是密码学,我的专业是计算机网络,我们经常“秉烛夜谈”,交换我们在自己研究领域的一些研究心得,同时也谈人生、谈理想、谈情感、谈国家大事,我们都期望着自己做的事情对国家和社会有所贡献,就如同很多知识分子那样“位卑未敢忘忧国”,那是一段非常美好的时光。“小胖子”现在是中科院研究生院的老师,我想他现在应该不经常写代码了,但他仍然是我很佩服的科研工作者和程序员。他的乒乓球技术一直都没有超过我,就如同我的编程技术从来没有超过他。

2006年

  • Java版本:Java 6
  • 发布时间:2006年12月11日
  • 产品代号:Mustang
  • 类和接口的数量:3793
  • 新特性或功能:

    • 支持脚本语言
    • Compiler API
    • JDBC 4.0 API
    • 逃逸分析
    • WebService增强
    • 安全相关增强
  • 我的故事:这一年因为一些原因我去了广西,广西省会南宁的软件产业在那个时候应该是不怎么景气的,没有几家专业的软件公司(现在什么情况我就不知道了)。当时我的想法是做一家专业的软件公司并让这家公司走进大学,或者让大学生走进这家公司来参与软件项目,把公司的项目经验传授给计算机相关专业的大学生,帮助他们成为更优秀的职业人。第二年我的另一个朋友也有这样的想法,于是邀我去他们公司做项目经理同时也担任技术顾问。但是我们的想法在操作上有着重重障碍,到我离开广西的时候,理想仍然没有照进现实,留下了一堆的遗憾。但是,这一年我清楚的感觉到我能够做一名优秀的职业培训师,我觉得我有能力传道、授业、解惑。当然,这可能只是当时的一种错觉。接下来的很长一段时间,我在成都和南宁这两个城市之间无数次的往返,为了学业、工作和将来。那段时间,我在乘坐各种交通工具的过程中结实了几位朋友,其中有两位后来还介绍了项目给我做,这也让我的经济状况一直保持良好。

2009年

  • SUN公司发布Java EE 6
  • SUN公司被Oracle公司收购
  • 我的故事:这一年是我从最好走向最糟糕的一年。由于上一年的努力,我的几篇科研论文被国际会议录用了,于是我有幸在一堆来自世界各地的科研工作者跟前用我不算标准和流利但也不影响交流的英语向他们讲述我的研究成果并接受他们的提问和质疑。本来一切都很顺利,但是生活却悄悄的发生了改变,我需要重新思考我要的到底是什么样的生活,我究竟要做一个什么样的人!?这一年我没有诚实的面对自己、朋友和亲人,所以苦难也就还没有结束。

2010年

  • Apache宣布退出JCP(Java执行委员会)
  • 我的故事:这一年生活给我的打击就如同Apache退出JCP给Java世界的打击一样,不过都是过去的事情了,过去的不愉快也是一种幸福!其实后来总结这一年的时候,我清楚的知道,不是生活给了我打击,而是我没有用正确的态度去面对生活。

2011年

  • Java版本:Java 7
  • 发布时间:2011年7月28日
  • 产品代号:Dolphin
  • 类和接口的数量:4042
  • 新特性或功能:

    • switch的增强
    • 钻石语法(泛型推断)
    • 异常的改进
    • JVM多语言支持
    • TWR(try-with-resources)
    • NIO.2
  • 我的故事:终于走出了阴霾,我开始向以前一样把自己的生活安排得满满的,但是我也清楚的知道自己已经过了而立之年,生活状态却仍然是随遇而安的,这是一个大问题。这一年我自己接了项目来做,也带了一些学生,教他们用Java写程序做软件,同时也在代码中表达自己的精神和情感,就如同我当年一样。 这一年,我结实了一位优秀的程序员“二万”,他对编程充满了热情,对代码有着近乎于苛刻的要求。除了写代码,其他时候他基本上都犯二,所以才有了“二万”这样一个光荣的绰号。我确信他是一位优秀的程序员是因为他有良好的编码习惯,我现在仍然坚信一个程序员是否优秀跟他做过什么样的项目没有必然联系(现在有很多面试官却经常拿这个说事),也就是说即便你参与开发过像12306那样牛逼的系统,也不能证明你的水平有多么厉害,你可能仍然是一只菜鸟。正所谓,善战者无赫赫之功。

2014年

  • 发布时间:2014年3月18日
  • 产品代号:无
  • 类和接口的数量:尚不清楚
  • 新特性或功能:
    • Lambda表达式
    • 集合的流式运算
    • 函数式编程
  • 我的故事:在2011年到2014年的两年多里面,Java一直都很沉寂,很多Java程序员也在千呼万唤中等待Java 8的出场。其实我对Java 8没有什么期待,因为我坚信像Oracle这样以利益为核心的公司不会在Java上面投入多少力量。我自己在这两年多里却是变化很多,2013年我结婚并有了小孩,妻子就是九年前遇见的她,她不再像当年初遇时那般年轻可爱,但是却依然美丽善良。我们女儿的名字是1和0的谐音,这一个比特的两种状态记录了每个程序员的艰辛与骄傲。

对Java技术的一些思考

(待续)

对自己的一些思考

(待续)

致谢

我觉得我必须要先感谢我的妻子,因为她给了我家的温暖,让我还能够有闲情逸致坐在这里用博客记录和总结过去,将自己的所想所感分享给大家。我必须感谢我的女儿,因为我把本该陪伴她的时间用来学习和写博客了,我会试着慢慢减少这些时间或者至少不占用陪女儿的时间,相信我。   感谢我读博士时的导师曾华燊教授,他是一位真正的学者,也是计算机网络领域真正的专家。他在英国伦敦大学和国家物理实验室学习和工作期间所获得的成就是很多所谓的专家学者永远也无法超越的。他从不随大流,对任何问题都有自己深入的分析和独到的见解,他也是一位敢于说实话讲真话的人,有知识分子的责任和担当。可惜因为各种原因,我读书的时候跟在他身边学习的时间太少太少,但学到的那些皮毛也让我受益良多。   感谢我的室友“路子”,他把他会的东西无私的分享给了我,他是个低调但是学习和科研能力都很强的牛人,希望他不管是当老师还是做科研都能够取得更好的成就。   感谢给我很多帮助和照顾的几位师兄。感谢所有帮助过我的人。

你可能感兴趣的内容
Java序列化与static 收藏,3253 浏览
0条评论

dexcoder

这家伙太懒了 <( ̄ ﹌  ̄)>
Owner