我是个Java程序员。

然而几个月之前,我一直在因为这个身份,或者说标签,感觉到那样沉重的惆怅和惭愧。

从第一次接触Java到现在,已经9年。

大学时,我一直认为C++才是我的归宿,而且也是如很多人一样,看不起Java、PHP、Python等等一切依赖于虚拟机、解释器的语言,觉得C++的复杂多变是锻炼程序员才能的手段,这门语言就是程序员的hard模式,必须足够优秀才能过这一关,过不了的全是业余票友,顶多做个ASP的级别的人。以《C++ Primer》第三版入门,Visual Studio .NET 2003是用的时间最久的IDE,自娱自乐了很久,收获也还不错。很多大学课程的作业都是可以用C或者C++做的,班上大部分人都选择用C,我还是那样沾沾自喜地用一大堆C++类搞定。如果当初看出某些端倪的话,也许现在的生活会大不相同吧,但是当时只是固执地认为,不懂C++这样复杂的语言的人只可能是不适合做程序员的人。

当然,并不是想说Java比C++简单很多。

其实接触Java是个很偶然的事情。记得似乎是大二期末后的暑假前夕,@远路高山 和班上几个对计算机应用方面比较感兴趣的人提议成立一个兴趣小组,大家也都赞同。这个小组的第一个课题就是找一门上学期间已经“学过”的C、C++以外的语言,自学一个暑假,大家下学期开学时交换学习心得。当时微软的.NET框架刚刚崭露头角,我也是自C# 1.0开始就关注了这门语言,又因为平时用的几乎都是Visual Studio,所以也自然和大家推荐C#这个触手可及的语言,不过@远路高山 觉得应该学Java。现在我只大概记得可能是因为J2EE当时风头很盛,而.NET框架刚刚摆脱Next Generation Windows Services这么个让人担心没有前途的名字,核心类库乏善可陈,看名字就很像是Win32 API的简单包装,企业应用方面更是毫无建树,C#看上去顶多是个比MFC做Win32 GUI应用程序更方便的玩具。于是虽然我能体验到C# 1.0那已经比Java更舒服的语法(糖),还是同意了@远路高山 和大家的想法,Java就Java吧。因为当时大家都很喜欢用IBM中心的一个很强悍的FTP服务器(xxx.yyy.12.21),我的目标就是一个暑假做一个简单的FTP客户端。

现在想想,@远路高山 可能是我遇到的第一个*nix爱好者,而我当年还是不折不扣的微软控,乐此不疲地钻研自己机器上装的Windows 2000 Server,自学了很多Win32编程,还有MCSE 2000那种东西,啃了那本巨厚的书以后就觉得不要从众去背题库考认证了,直到今天还觉得自己管理Windows服务器的能力不在一般IT人员之下 🙂

很无趣吧?用Google搜索但是不知道Google背后的技术,骂百度搜索结果太垃圾但是不了解百度的技术在国内也是很牛的,用着腾讯QQ但是觉得不就是个破聊天工具嘛,不知道Amazon推荐系统,看到初生的淘宝的第一反应是“这什么破烂儿啊”;没有《浪潮之巅》,满目之中没有任何一家仰仗算法打天下的公司让我憧憬;没有Web 2.0,更没有Twitter、Facebook。每天上网去CSDN、VC知识库、大富翁论坛时,只觉得囊括世间最强大开发技术的领域就是企业应用,那些做网站的都是小打小闹,比个人主页强不了多少,而企业应用好像冰山一样,平时身居500强企业的实验室一般的机房,偶尔对大众露出一个角来也能撑起一个电子商务网站;看到有网站的URL里面有.jsp、.do就觉得这家网站一定在技术上很牛很牛,竟然用了企业应用的技术。看了《Borland传奇》也热血沸腾,觉得那些IT大鳄企业们争夺的也都是企业应用的市场;看到JBoss后起之秀挑战BEA WebLogic也是摩拳擦掌,觉得这才是未来。当时总是认为,算法当然重要无疑,参加ACM光耀门楣,但是请看,我们折腾了半天的那些算法都是最基本的,所有的企业应用涉及的语言和平台都已经把它们封装好了可以拿来就用,你自己还纠结个什么O(N)还是O(logN)啊,但是你要是不懂架构设计,你的算法再好也是散沙一片,你也还是做不了企业应用的啊!

这些想法虽然幼稚,不过现在来看也还是说对了一些的,比如说架构设计在一个应用中还是很重要。

于是开始了我的Java生涯。最初只是玩票性的,真的不觉得以后是会用Java实习和找工作的,因为当时也仅仅是觉得,这么个跑起来慢吞吞的语言,别的优势没看出来,反正是省了析构、delete什么的了,可是… 随便一个IDE怎么都这么慢呢?好不容易做了个GUI的应用,怎么能这么难看呢?这UI上容器一层套一层最后还要个Layout Manager才到真正干活的控件上到底烦不烦啊?不说IDE,就是自己做了个比“Hello, World!”麻烦点儿的应用程序,跑起来怎么还这么慢呢?怎么还时不时就僵死没响应只能等一会儿了呢?这玩意儿真能做牛气的企业应用么?

我还是会时不时关掉刚用熟的盗版IntelliJ IDEA,调出Visual Studio .NET 2003做几个win32的小程序,心里却很是焦急:人家用Delphi的圈圈点点就一个MIS出来了,用VC++要怎么做啊?我离企业应用到底是有多远?

——————–

本来没想写太多的,后来发现差不多能拆成3段了……干脆就别写到一起了,这个wp也没做静态化。