2004年毕业的时候,听说Java程序员工作比较好找,就这样开始与Java结缘。一晃10几年过去了,做了很多项目,也发布了一些Java方面的技术性文章,总的来说,这10年时间一直都在与一个永恒的话题纠缠—“性能优化”。
回想一下,我的大多数时间都被花在了处理整个大型系统的性能提升方面,遇到的问题很多情况下是本可以使用O(log N)算法,结果我却使用了O(n2)算法,此外,一直在纠缠于GC性能优化、JVM编译器的性能优化、Java企业级API调用方法等等。
我的这些经历其实是大多数Java程序员在Java的15+年时间里的一个缩影,有个数据可能大家都知道,Java1.1.8的性能是Java1.0的8倍,并且Java1.1.8第一次正式引入了just-in-time编译器。在之后的十几年时间里,Sun公司及开源社区围绕着性能问题做了大规模的提升,主要集中在JVM垃圾回收机制及相应算法提升、编译器算法提升、各类API提升等等方面。但是这些优化、提升总是会存在瓶颈的,现在已经不可能像当初通过引入Just-in-time编译器、JVM垃圾回收引入并行算法这样的方式大幅度提升Java性能了,还是需要程序员自己通过对JVM的深入了解、代码的整体优化、合理的系统架构等来提升系统性能。
随着时间的推移,我们现在已经不用担心内存的问题了,我目前使用的服务器都是256GB以上内存的机器。此外,JVM也引入了新的垃圾回收器G1,G1较过去的垃圾回收器更加自动化,同时,云计算的兴起帮助我们解决了单机问题,现在已经完全可以通过向云计算服务商租用资源的方式解决资源瓶颈问题。Java8以及后续版本会通过引入Lambda项目继续致力于更好地利用多核处理器。此外,在JDK上设计和实施一个模块系统,然后将系统应用于JDK本身也会是一个趋势,这样可以令大块的代码更易于管理,促进应用和大型运算的代码重用。甲骨文公司表示,他们Java8的前景很看好,并且已经开始讨论Java
9发展的关键领域,比如加入一个self-tuning JVM,提高本地集成和大规模多核的可扩展性,通过新的元对象协议和资源管理器为云应用添加跨语言支持。预计Java9和10将加入大数据、多语言的互操作性、云计算和移动,预期分别于2015年和2017年发布。
无论自己的未来职位是什么,我都会继续深入研究Java及相关技术,继续坚持发布技术性文章。十几年过去了,我想对Java说:“我们是互相离不开了”。