返回 登录
0

为什么java如此经久不衰

其实这种老生常谈的话题,没必要说来说去的,只是看到网络上有很多误导人的观点,觉得很不爽

我先澄清这些观点,再来谈谈我的见解。

观点一:“同样的代码java写的更多,而C#写的更少。那么C#的门槛更低,竞争更激烈” 我觉得能说出这种话的人,基本上还停留在普通专科院校没毕业的水平,基本没什么思考,笑笑就好。软件开发过程中多敲几行少敲几行都不是事。关键是能理解清楚需求,理解目标,用最适合的方式解决。不管C#的语法糖多么优秀,在java同样也能找到差不多的解决方案,实现效果在产品侧不会出现巨大差异。
观点二:“java是一门跨平台开发的语言,跨平台无压力” 这确实在java语言开发的初期是个优势点,但是现在早就不是了。其次,java面向的场景都是大型企业应用的场景,只要在linux或者windows server下能稳定运行即可,是不是跨平台收益不大(但也不是没有)
如果你想学习Java可以来这个群,首先是二二零,中间是一四二,最后是九零六,里面有大量的学习资料可以下载。
观点三:“现在android开发很火啊,学好了很赚钱” 这个观点和观点二有点类似。在早几年是这样的,当然现在H5也没有大规模应用。但是现在的app大多数都稳定了,而且android上很多技术都很成熟了,很多能力可以固化下来,让一些技能水平不是很高的开发人员就可以上手。现在的趋势是:一个团队有若干个,甚至只要一个移动端的开发大牛即可,大牛攻克难题,其他人打打下手,很多业务就能满足了。java现在的主要场景还是后端,尤其是大型系统。
还有其他观点暂时没想到,大家可以帮忙补充,我可以解答

那么应该怎么去看待“java如此经久不衰”这个现象呢。答:从企业的利益和生态的利益去思考这个现象你就明白了。因为个人程序员的得失短时间内是不会影响一款编程语言产品的发展的,你们再怎么难受,再怎么不愿意,企业掏钱了,轮到你说话吗?

java初期因为入门门槛低,面向对象符合当时软件工程各方面的优秀特性(在当时是算优秀的)累积了很多软件,以及开发人员。强大的基础为以后发展打下了非常夯实的基础。因为还有很多老系统是java开发的,对于企业最大的利益当然是能不动则不动,因为创新对于企业的风险是很大的。有些人会问了:现在技术发展这么快,不做改变能行吗?确实不行,2000后几年内那时候发展肯定没现在这么快。当时只要会个MVC就是大牛了。现在,呵呵。那么java如何应对技术大潮呢。
好在java的生态圈积累了大量优秀的软件。现在大型应用系统都是大规模集群、分布式的软件。想要完成这些系统,那么一些优秀的中间件是分不开的。从基础的SSH(或者SSM)/Guava等编程框架,到各种MQ组件/zookeeper/hadoop软件群/spark等大数据处理软件,都有java身影。有人会问了:这些软件不能用其他语言实现吗?当然可以!而且有可能实现的比他们还好。但是。时间是不等人的,在较短的时间内,需要开发出最适合的软件来解决企业面临的瓶颈和痛点,这批优秀的程序员选择了java,这是生态的胜利,也是相互的成就。
有了优秀前辈们的开源贡献,企业们的业务处理能力肯定是直线上升。终有一个时间点,上面说的那些优秀组件已经无法满足某个企业的需求了,那怎么办呢?答:自己造!前面说过,企业创新是要承担很大的风险的,那怎么办呢?改现有的优秀组件,让它突破我的瓶颈点就好了嘛,基于开源组件修改无疑风险最小的。
再来说说java虚拟机(当然,现在很多语言也都有这种虚拟机机制了,或者是复用jvm,想scala,groovy)。虚拟机就意味着,程序员有机会观察程序运行的很多细节——内存使用情况/分配情况,堆栈运行情况(哪个线程运行时间长,当前哪个线程活跃),这些都看得清清楚楚,对于定位问题,尤其是大型系统的一些典型问题——性能,死锁,还有性能优化工作,都是非常方便的。JVM还提供了很多安全机制,blablabla。总之有了虚拟机很多东西就玩得转。
总而言之,软件开发最后都会面临同样的问题:测试;持续集成/交付;快速定位;分布式处理;性能优化;安全;集群管理等等等等

当然现代软件还有:大数据分析/处理;人工智能

这些java都能满足,且门槛已经被前辈们磨平了,所以企业都愿意选择java——企业发展初期成本低,业务大了之后易扩展,难题易解决。就这样。

如果有其他语言也能解决这些问题,那么有一天当java不再进步了,生态不再活跃了,企业不再愿意付钱了,也会很快被超越了

评论