网站开发语言的选择
若何将Node与现有的架构融会以面临新的无线场景,并更好地晋升开辟效力,我们重要论述了在当前成熟的系统下向Node演进的一个思绪,当然这并不是唯-路径。也有许多法式员评论辩论是否要将后端的Java系统全体调换为Node系统,这就涉及Java技巧栈和Node技巧栈的比拟,以下是笔者关于该问题的思虑。
我们从说话特征、开辟效力和成本身分三个方面比拟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并成为全栈工程师,那么他们是否也愿意用两种分歧的说话完成统一个义务呢?正常来说,假如能用统一个义务分成神分歧的方法来完成的需要性就会年夜打扣头。所以从这些角度来看,要让一家很成熟的公司切换说话长短常艰苦的。
尽管调换技巧栈很艰苦,然则无论若何都应当同一技巧栈,尤其是主流的网站扶植营业开辟,更应当应用同一的技巧栈这就像秦始皇同一说话一样所带来的利益显而易见。