我们从言语特性、开发效率和本钱要素三个方面比较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并成为全栈工程师,那么他们能否也愿意用两种不同的言语完成同一个任务呢?正常来说,假设能用同一个任务分红神不同的方式来完成的必要性就会大打折扣。所以从这些角度来看,要让一家很成熟的公司切换言语是非常困难的。
固然交流技术栈很困难,但是无论如何都应该统一技术栈,特别是主流的网站树立业务开发,更应该运用统一的技术栈这就像秦始皇统一言语一样所带来的好处显而易见。
更多精彩请关注:http://www.jmseo.com.cn