我们从语言特性、开发效率和成本因素三个方面比较Java与作为后来者的Node。
1.语言特性
JavaScript作为Node上运行的语言,和Java相比,优缺点很明显。JavaScript 语法简单,很容易编写基于事件的驱动的实现,但是JavaScript 基于面向对象的描述能力偏弱,不像Java是真正的面向对象语言,同时JavaScript对数据类型的定义也比较单一,要么是数值类型要么是字符类型。很明显,Java 更擅长构建复杂逻辑的大型应用程序。在语言运行效率上,JavaScript 原本是解释执行,Java是编译执行,但由于Node做了优化,所以两者运行效率差别不大。
2.开发效率
开发效率可以从语言的复杂度、程序员培养、开发工具包的丰富性以及编码效率几个方面比较。
●语言的复杂度。从开发角度来看,Java和JavaScript都不需要关心内存的管理,都是基于虚拟机来管理内存;从并发角度来看, JavaScript是基于事件触发的,而Java是基于线程的,因此JavaScript更占优势;此外,JavaScript是无阻塞IO的,在I/O效率上比Java有优势(尽管Java8也将更好地支持异步I/O)。
●程序员培养。目前Java 语言仍然是仅次于C语言的第二大编程语言,而JavaScript排在第10位,Java 程序员队伍要比JavaScript大很多,很显然招聘Java程序员要比招聘JavaScript程序员更容易。
●开发工具包。很多时候-个语言的开发效率要看这个语言的支持工具包和组件的丰富性,Java 经过这么多年的发展,工具类库已经非常丰富,几乎任何你想要的工具类库都能在网上找到。JavaScript 虽然也发展了很长时间,但是基于JavaScript的工具类库主要集中在前端,能够直接用于Node的仍然很少。当然Node的社区非常活跃,可以预见Node的工具类库增长也会非常迅速。但是要达到Java的规模尚需时日。
●编码效率。Java 语言的运行基于JVM,但是Java的部署效率稍差; JavaScript使测试更加简单,但是debug机制仍然不完善。
3.成本因素
前面主要是从技术角度考虑,但是如果要从成熟的Java体系迁移到Node,成本也是一个重要的考虑因素。
首先是学习成本。如果公司大部分是Java程序员,现在要迁住Node,很明显这个学习成本会非常巨大,即使这个迁移是渐进式的,长期来看仍然是要将一部分Java程序员替换成 Javascript程序员。先不管程序员是公司内部培养的还是从外部招聘的我们都可以算一下公司招聘一名程序员的成本有多大:一名普通工程师的年薪假定为10万元,猎头费一般是年薪的20%以上,也就是2万元、再加上一个月的实习成本1万元,加在一起约3万元。这对于有1万名以上开发人员的大公司而言,人力成本可想而知。如果招聘应届生,由于应届生的培养周期更长,学习成本会更高。
其次是环境成本。公司的基础服务产品如中间件是基于Java开发的,如果要替换成 Javascript,必然要再另外开发,还得开发配套的运维工具等,这个成本也可想而知。最后是维护成本。Java和 Javascript i都是基于容器运行的,和V8引擘相比,程序员显然对JVM更熟悉。另外,从排查问题的难易程度来看,针对JM的工具显然更完善。
4.人的因素
对于一家成熟的公司而言,假如现有的Web系统都改用Node实现、必然会有很多Java工程师要从事Node的开发,因为已有的前端工程师人数肯定支撑不了现有业务的发展。我们假定一部分Java工程师愿意学习 Javascript并成为全栈工程师,那么他们是否也愿意用两种不同的语言完成同一个任务呢?正常来说,如果能用同一个任务分成神不同的方式来完成的必要性就会大打折扣。所以从这些角度来看,要让一家很成熟的公司切换语言是非常困难的。
尽管替换技术栈很困难,但是无论如何都应该统一技术栈,尤其是主流的网站建设业务开发,更应该使用统一的技术栈这就像秦始皇统一语言一样所带来的好处显而易见。
本文地址://www.xrqsnxx.com//article/4463.html