微信号:infoqchina

介绍:有内容的技术社区媒体

Java项目从“迷信”趋于“理性”

2013-06-13 17:44 InfoQ

2013年,在云计算、大数据、移动互联网等话题占据了人们所有的注意力的时候,Java的状态到底如何?近期,InfoQ中文站将对业内几位资深Java项目作者与书籍作者进行采访,了解他们眼中Java的现状,以及他们对Java未来的看法。


今天受邀参与采访的嘉宾是远光软件开发部总经理,《深入理解Java虚拟机》、《深入理解OSGi》的作者周志明(@Iam周志明)。


InfoQ:Java语言给您留下的最初印象是什么?您最初的Java项目是什么样的?


周志明:我在大学以及刚开始工作时,并不使用Java语言。第一次接触Java,是参与一个MIS项目,采用JDK 1.4,EJB 2、JSF 1作为技术平台,IBM WSAD作为开发平台。


那时候对Java的感受很矛盾,一方面感觉Java,准确的说是Java EE确实很规范、完善,框架和容器了提供很多功能,使用者大部分的技术性需求确实都考虑到了。另一方面,感受是Java EE很烦很繁,经常怀疑是不是必须把事情搞得那么复杂,最简单一个SessionBean至少要写3个类还要做一番配置,WSAD虽然能帮忙做很多工作,但是又慢得一塌糊涂。"理想很丰满,现实很骨感",相信这就是那时候很多人的感受。


InfoQ:您现在接触的Java项目跟那时相比,有怎样的变化?


周志明:现在的Java项目普遍从“迷信”趋于“理性”,以前的Java项目从迷信EJB为代表重容器服务时代,到后来迷信without EJB为代表的SSH时代,再到现在各种技术、框架都趋于成熟后,理性选择的时代。现在我接触的很多项目,除了Spring还被普遍采用之外,已经没有什么必然的技术存在了。


另外一个变化是现在的项目已经把非交付代码的需求提升到很重要的位置,单元测试、CI、Maven等几乎成为项目必不可少的一部分。


InfoQ:您是否会推荐您在Java项目中的年轻程序员去掌握其他编程语言?您的首选推荐语言是什么?


周志明:我认为“掌握其他语言”不是推荐不推荐的问题,Java程序员应该、必须学习掌握至少一门Java以外的语言。从互联网到企业应用,从手机、移动设备到分布式服务、从界面到后端,目前Java都有涉猎。使用一门语言包办绝大部分需求,对这门语言本身来说是一件好事;但对于人来说,这何尝不是一个单调的世界。熟练掌握一门语言的语法、框架、工具之后,要更进一步,或者说要精通这门语言,那会遇到很多问题,不得不站在语言之外去看去思考,才能避免“只缘身在此山中”的困境。


举一些例子,譬如去年发布的Java 7中,其中一个新增的特性是加入了invokedynamic指令和java.lang.invoke包(JSR-292)。仅在Java语言范围内,很难理解为什么需要添加invokedynamic指令?java.lang.invoke和java.lang.reflect有什么区别?再譬如为什么有许多JIT的代码优化,尤其是激进优化,JIT编译器能做,而GCC这些静态编译器不能做?没有其他语言的对比,这些问题都不容易想清楚理透彻。


InfoQ:对于一些从新锐编程语言开始入行的年轻程序员,比如Ruby程序员,您是否会推荐他们了解Java?为什么?


周志明:如果主要使用的是JRuby,那学习Java还是很有必要和价值的。否则,是否要学习Java,我认为首先要取决于个人兴趣。若没有足够动力,仅仅从语法层面了解Java,简单写几个DEMO,那Java并没有什么可取之处,甚至可以说Java的语法已经落后于许多新生代的语言,也落后于它的竞争对手C#(随着Project Coin和Lambda的加入,Java的语言能力会改善一些),以至于让人产生Java语言非常啰嗦的误解。我认为Java最值得学习的是它极为完善成熟的生态系统,几乎所有你感兴趣的领域,都能找到对应的开源项目,而且在不少的技术领域中,存在着经过长期验证,蕴含精妙思想,值得学习阅读的项目。


点击“阅读原文”查看全文并吐槽吧~

 
InfoQ 更多文章 Facebook如何实现PB级别数据库自动化备份 学术派Google软件工程师Matt Welsh谈移动开发趋势 Spotify为什么要使用一些“无聊”的技术? 妹纸们放假了,汉纸们做啥? 大多数重构可以避免
猜您喜欢 理清 Activity、View 及 Window 之间关系 2015 – 2016 最新 Sublime Text 主题 滴滴WebApp实践经验分享 美丽的数据 :数据可视化与信息可视化浅谈 saltstack之salt-ssh的细枝末节