看到很多文章说Node与Java相比有性能高,开发效率高,等等许多优势,那么Java与Node相比有什么优势呢?
首先我想说的是他们是针对不同场景而言的。相对而言比较有优势。具体场景具体用。不存在任何地方Node与Java相比有性能高,开发效率高。
1.毋庸置疑,java用了这么多年。又很多成熟的解决方案,所以比较稳定。
2.java是跨平台,底层一个虚拟机,所以兼容多个平台,效率相对而言低点。比不上ruby等动态语言。
Node巨大的优势是天生异步IO,另外开发异步比较好,不过有个致命的短板就是不支持多线程,所以导致CPU密集型的工作有缺陷;Java相对于新新语言来说很中庸,找不到缺点也找不出优点(貌似最大的优点就是经过很多年的发展,很稳定,宁外有大量的开源框架,社区庞大)。另外对于开发效率,这个我觉得项目大的都一样吧。如果只考虑开发,而不考虑维护的话,java没有优势
首先,JVM在计算密集任务的运行上要比V8快。
node解决的主要是io问题。即node适合处理但进程多用户的问题。而多用户单进程,或者多用户多进程,甚至单用户单进程都不推荐使用node实现。
其次,说到语言层面不谈性能的话,java和node各有优劣。(以下纯属个人见解)
javascript中,你可以选择编程风格。函数式风格?还是面向对象风格?
而java里面就没有这种选择。
所以实际上java是把人圈死了,这样可以防止程序员做傻事,犯一些不必要的错误。这在大型工程中,或者说“现代软件工程”中是很重要的。因为我们实际上没有那么多很少出错,并且能够驾驭函数式编程的程序员,所以我们需要一个框架来约束不那么有能力人,让编程成为体力劳动。就诞生了一个“代码工人”的概念。所以大企业他为什么使用java?一来当然是保险,业界传统。二来就是java的易于掌握和死开发的框架让普通人和天才的开发效率没什么两样。
javascript中函数是“一等公民”,这就导致虽然两门语言名字有一半是一样的,但写出来的东西肯定大不相同。在javascript中,完成工作更加自由。俗话说得好:“中国IT不发达,必须要有lambda”,看过《SICP》的人都知道。而java的流行,一方面是因为炒作,另一方面也确实看过《SICP》的人太少了。
所以,在一个人可以完成的项目中能用node就用node,node写出来都上线了java还在画ER图。
在一大帮人才能完成的项目中能用java就用java,java都开始盈利了node还在debug。
这个因人而异,主要看你对Java还是Node.js的开发流程更熟悉。
这个因项目情况而定,Node.js只在下面特定的情况下有优势。
主要在安全方面。新技术的诞生都会带来一些安全隐患。但是国外已有大量的程序员在做这方面的研究和弥补。参见Node.js Security Tips
楼上的前辈们说的都很全面了,我也随口吐槽一下。
性能什么的Node优势在异步IO上可谓得天独厚,加上V8这枚大火箭,Node效率提高了不少。
但是,单线程,硬伤,服务器的优势发挥不出来。而且,异步IO在高并发下是对磁盘IO瓶颈的极大考验。
就我而言,Node的开发成本以及调试成本要比Java高。
Java的优势在于老,老而不死,许多精华的框架也得以光大。连一直诟病的JVM也在历代的优化下直逼C(James Gosling说的)。
Java入门也较容易,安全易用
15 回答8.4k 阅读
5 回答4.8k 阅读✓ 已解决
8 回答6.2k 阅读
4 回答2.4k 阅读✓ 已解决
1 回答4k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答3.1k 阅读
纯粹从语言的运行效率,即对一些成熟算法的具体实现来说,node.js在运行时间上可以说毫无优势。
说node.js效率高,主要指的是I/O效率高,因为它在底层对所有I/O强制进行异步。
一般单机小网站在流量大到一定程度时,首先扛不住的是数据库,数据库性能差就是因为I/O。