蓦然回首,Java 已经 24 岁了!
01、蓦然
真没想到,Java 竟然 24 岁了(算是 90 后)!
提起 Java,印象最深刻的当然就是:
class Cmower {
  public static void main(String [] args) {
    System.out.println("Hello Word");
  }
}
我闭着眼睛敲了一遍,感觉指尖与键盘又呼应到了:还是那种熟悉的感觉!
02、回首
我是 2008 年上的大学,专业是计算机网络,被调剂的——这间接地证明了:
第一,我当年压根就不知道报考的学校还有计算机网络专业,在这之前根本不懂互联网,唯一挂得上勾的就是用过 QQ。
第二,计算机网络专业是最不被学校重视的专业,所以才能调剂到。那时候,建筑专业、电力专业是最被看好的专业。
第三,我的高考成绩不很理想。
既然高考成绩不理想,自然对未来也就很迷茫。那时候,完全不知道自己未来能做什么,更预料不到自己会成为一名 Java 程序员,一干就干到现在。
当时教我们 Java 的老师姓冯,一个文质彬彬的中年人,带着一副金丝边框的眼镜。冯老师最引以为傲的是在大学期间建了一个个人的门户网站,网址是 www.justdojava.com。
虽然已经过去了十余年,但回想起冯老师上的第一堂课,记忆依然清晰如画,触手可摸:几乎每个同学都是懵逼的状态——Java 到底是什么玩意?我当时实在是听不懂,就和同桌一起玩起了贪吃蛇。
第二堂课直接去了机房,冯老师要求我们在电脑上安装 JDK,并配置环境变量。好几个同学直到下课也没有搞定,在命令行中敲 javac -version,一直报下面这个错。
'javac' 不是内部或外部命令,也不是可运行的程序或批处理文件。
没办法,第三堂课继续搞。班里面幸好有三四个对编程感兴趣的同学,在他们和冯老师手把手教导下,班里只剩下两三个搞不定的同学了——这几个同学对 Java 彻底死心了,于是下半学期主动转去了电力专业。
03、Java
大学的日子过得很快,快到很多人来不及谈个恋爱就到了分手的季节。
对编程没有兴趣的同学大多数进了工厂,还有一些回了老家。剩下的十几个同学,包括我,南下苏州进了培训班,据说培训结束后能轻轻松松地找到工作(就在金鸡湖附近)。软件园里还有一批人在做淘宝,门牌上挂着“桃花岛”、“光明顶”之类的。
培训的内容依然是和《Java 编程思想》差不多的内容,我没有多大兴趣,上课的时候就玩 NBA 2006(最喜欢的球队就是火箭了)。
大概两个月后,面试上了一家日企(富士通)。当时中日关系很紧张,父母都劝我不要去。但那时候觉得有人要就不错了,就硬着头皮去了,实习工资一个月 1200 元(有宿舍)。
面试官当时问我会不会日语,显然会啊,五十音图背得溜溜的。为啥,因为培训班培训了呗。
进了公司后,做的第一个项目竟然是计算器(用 Java 实现)。做完后就上传到了 CSDN,收获不少积分。
来来来,再欣赏一下我当时的介绍语:
能够完成 win7 计算器的基本功能,让你轻松看到自己 Java 代码实现的计算器,充满对 Java 的热爱。
“充满对 Java 的热爱”?没错啊,那时候凭借 Java 找到了一份可以养活自己的工作,从此以后,再也不用伸手向面朝黄土背朝天的父母要钱了,如何能不热爱呢?
04、编程
我当时在富士通主要从事于 Flex 编程,我想大多数人已经忘记了这项技术。来一波回忆杀吧,Flex 是一个高效、免费的开源框架,可以构建表现力十足的 Web 应用程序。
当然了,服务器端依然用的是 Java,数据库用的 PostgreSQL,数据库映射框架用的 Hibernate。
由于公司不允许上外网,内部通讯工具 Spark 又被监控,我就私底下用 Flex 和 Java 开发了一个简易版的即时通讯工具(当时上传到了 51CTO,后来 51CTO 改版后资源就被删除了,好可惜)。
每天早上到办公室,第一件事就是在我电脑上启动服务器端。有四五个一起打魔兽的小伙伴要通过这个工具交流心得呢。
2014 年我离开富士通的时候,这款聊天工具已经从 0.1 版升级到 4.3 版了,不仅支持 Emoji 表情,还支持图片传送呢。
比较遗憾的是,那段时间里写 Flex 的 ActionScript 代码要远超 Java 代码。以致于编写 Java 代码的能力也没有随着年纪的增长而提高。
05、不离不弃
2014 年回到洛阳后,公司要开发一款大宗期货交易平台,客户端用的 C#,服务器端用的 Java,我终于又重新干起了老本行。
交易平台对性能要求非常高,所以我在网络编程、并发编程、性能优化等方面下了足够多的功夫,Java 的编程水平终于有了显著的提高。
列宁说得对,“要学会游泳,就必须下水。”经过这几年来的锤炼,我终于可以拍着胸脯,自豪地说:“王二是一名称职的 Java 工程师了!”
近一两年,坊间已经开始议论纷纷,说什么 Java 堕落了,Python 崛起了。甚至很多朋友都劝我转行学 Python,不要再写 Java 方面的文章了!
但据我所知,从整体互联网开发的大环境来看,Java 语言依然在三个应用方向优势巨大:
1)大中型的企业应用中,包括复杂的大型企业软件系统、各种类型的网站;
2)桌面应用,即 C/S 应用,主要用来开发运行于不同的操作系统上的桌面应用程序;
3)移动开发应用,如 Android 开发、游戏开发等。
未来几年里,其他语言的兴起对 Java 这门老牌语言绝对会有影响,但是想要撼动 Java 的霸主位置也绝非易事。
Java 24 岁了,在日新月异的互联网世界里,算是老人了,但老而弥坚。无论这个世界如何变化,Java 依然会流淌在我的血液里,不离不弃。
蓦然回首,Java 已经 24 岁了!的更多相关文章
- 今天是 Java 诞生日,Java 24 岁了!
		今天是 Java 诞生日,Java 今年 24 岁了,比栈长还年轻..还有得搞,别慌!作为一名Java语言的学习者,对Java的起源和发展有个大概的了解应是必要的. 1991年,Sun公司成立Gree ... 
- Fans同学已死,终年24岁
		亲爱的同学们,朋友们,QQ好友. 告诉大家一个悲剧:Fans同学已死,终年24岁. 马甲变迁 正式告诉大家一个消息,我的ID"Fans同学"正在退出"历史舞台" ... 
- Java(20~24)
		1.Collection中的集合称为单列集合,Map中的集合称为双列集合(键值对集合). 2.Map常用方法:map.put() map.get() map.remove() map.ke ... 
- java实现24点游戏代码
		import java.util.Arrays;import java.util.Scanner; public class Test07 { public static void main(S ... 
- PAT(B) 1050 螺旋矩阵(Java:24分)
		题目链接:1050 螺旋矩阵 (25 point(s)) 题目描述 本题要求将给定的 N 个正整数按非递增的顺序,填入"螺旋矩阵".所谓"螺旋矩阵",是指从左上 ... 
- Java Hour 24 JDBC
		有句名言,叫做10000小时成为某一个领域的专家.姑且不辩论这句话是否正确,让我们到达10000小时的时候再回头来看吧. 虽然现在都不会直接写JDBC 了,但是了解毕竟是需要的.当然这个和ADO.Ne ... 
- java 多线程 24 : 线程组
		线程组 可以把线程归属到某一个线程组中,线程组中可以有线程对象,也可以有线程组,组中还可以有线程,这样的组织结构有点类似于树的形式,如图所示: 线程组的作用是:可以批量管理线程或线程组对象,有效地对线 ... 
- java基础24 线程、多线程及线程的生命周期(Thread)
		1.1.进程 正在执行的程序称作为一个进程.进程负责了内存空间的划分 疑问1:windows电脑称之为多任务的操作系统,那么Windows是同时运行多个应用程序呢? 从宏观的角度:windows确实在 ... 
- 24岁菜鸟,能一个人撑起App开发吗
		 "疲惫吾心.怎样躲藏.四处荒芜,怎话忧伤?"临近中秋,看到艾瑞斯的QQ签名,无尽的伤感.这个年仅24的青年.连续3年没有回家了,近期一个月总是失眠,没有家人的陪伴,就连女朋友 ... 
随机推荐
- Android(java)学习笔记167:横竖屏切换时Activity的生命周期
			1.横竖屏切换的生命周期 默认情况下横竖屏切换,先销毁再创建 2.有的时候,默认情况下的横竖屏切换(先销毁再创建),对应用户体验是不好的,比如是手机游戏横竖屏切换对游戏体验非常不好,下面两种方 ... 
- docker 深入理解之namespace
			namespace 名称空间 docker容器主要通过资源隔离来实现的,应该具有的6种资源隔 namespace 的六项隔离 namespace 系统调用参数 隔离的内容 UTS CLONE_NEWU ... 
- Open Cascade:如何从AIS_Shape导出TopoDS_Shape?
			Open Cascade:如何从AIS_Shape导出TopoDS_Shape? 实现代码如下: if( !myAISContext->HasOpenedContext()) { wxMessa ... 
- 最短路 || Codeforces 938D Buy a Ticket
			题意:从城市u到v(双向)要花w钱,每个城市看演唱会要花不同的门票钱,求每个城市的人要看一场演唱会花费最少多少(可以在这个城市看,也可以坐车到别的城市看,然后再坐车回来) 思路:本来以为是多源..实际 ... 
- Spring框架针对dao层的jdbcTemplate操作crud之update修改数据库操作
			使用jdbcTemplate 原理是把加载驱动Class.forName("com.mysql.jdbc.Driver"); 和连接数据库Connection conn=Drive ... 
- luogu 5月月赛 #A
			T29693 取石子 题目描述 Alice 和 Bob 在玩游戏 他们有 n 堆石子,第 i 堆石子有ai 个,保证初始时 ai≤ai+1(1≤i<n) . 现在他们轮流对这些石子进行操作 ... 
- 7. 配置undo表空间
			7. 配置undo表空间 undo日志可以存储在一个或多个undo表空间中,无需存储在系统表空间中. 要为MySQL实例配置单独的undo表空间,请执行以下步骤 [重要]: 只能在初始化新MySQL实 ... 
- CSS3---box-shadow设置
			1.box-shadow是向盒子添加阴影.支持添加一个或者多个. 2.box-shadow: X轴偏移量 Y轴偏移量 [阴影模糊半径] [阴影扩展半径] [阴影颜色] [投影方式]; 3.注意:ins ... 
- Tiny4412 U-BOOT移植(转)
			http://blog.csdn.net/eshing/article/details/37520291(转) 一.移植前说明: 1. 特别声明:此文档是我的学习文档,里面肯定有错误地方,仅供参考! ... 
- 南邮CTF--md5_碰撞
			南邮CTF--难题笔记 题目:md5 collision (md5 碰撞) 解析: 经过阅读源码后,发现其代码是要求 a !=b 且 md5(a) == md5(b) 才会显示flag,利用PHP语言 ... 
