前言
昨天在刷LeetCode时,在对之前的一道简单题(13.罗马数字转整数)进行二刷时,由于之前在学校学的是Java,所以之前已经用Java做过一遍了,而最近在学JS,我就尝试着用JS去做,也很快的做出来了。但当我发现同样的代码JS花费的时间为116ms,而Java仅仅花费2ms,这使得我对这两门语言产生了浓厚的兴趣,我尝试着去网上查找资料,最终写下这篇文章。
JavaScript(耗时116ms):
Java(耗时2ms):
为什么会有如此大的差别呢?
之所以会有如此大的差别,主要是由于这两门语言在设计和执行环境上的差异导致的,主要分为以下因素:
编译与解释
-
Java:编译型语言,Java代码首先会被编译成字节码,然后在Java虚拟机(JVM)上运行。Java的这种编译方式可以进行很多优化,从而提高代码的执行速度。
-
JavaScript:解释性语言,代码在运行时,会由浏览器的JavaScript解释器逐行进行解释,然后再交给V8引擎去执行。然而,正是因为这种解释性质,会使得JavaScript的执行速度通常较慢。
这就相当于在JavaScript执行代码时存在一个中间商,将解释器类比为中间商,最终到客户手里商品的价格自然就会更高。所以JavaScript耗时会比Java长。
执行环境不同
-
Java:执行环境为Java虚拟机(JVM),它是一种高度优化的运行时环境,专门设计用于执行Java字节码。由于JVM具有即时编译器(Just-In-Time Compiler),它可以将字节码编译成的字节码转换为本机机器代码,这将大大提高代码的执行速度。
-
JavaScript:执行环境为浏览器或者Node.js等运行时环境。而这些环境都缺少了像Java的执行环境JVM那种强大的编译和优化工具,因此执行代码时性能较差,执行速度慢。
JVM就相当于游戏加速器,而JS没有,这使得Java的执行性能要远高于JavaScript.
既然Java比JavaScript快,为什么JavaScript没被淘汰呢?
你别看两门语言名字差不多,但是他们相同之处却非常少,运用的领域也各不相同。Java和JavaScript这两种语言没有直接关系,尽管它们的名称相似。其中Java是由Sun公司(现在是Oracle Corporation)开发的,而JavaScript最初由Netscape Communications Corporation开发,后来被标准化为ECMAScript。
用途不同
-
Java:通常用于开发大型、高性能的应用程序,包括企业级应用、桌面应用、游戏等,我们熟知的编译软件IDEA、Eclipse、netbean都是Java做的。游戏方面,曾爆火的游戏《我的世界》就是用Java开发的。Android的核心系统也是采用Java语言编写的,尤其采用Java的核心库,如Apache Harmony来实现JVM。因此,它在执行速度和性能方面进行了很多优化。
-
JavaScript:主要用于前端网页的开发,市面上现今大部分网站,以及微信小程序都是在JS结合其他后端语言,比如Node.js等语言进行开发的,其主要实现的目的是与用户交互,因此它的执行速度通常不是关键问题。
语言类型不同
- Java:静态类型语言,类型检查在编译时进行,这有助于检测和预防很多错误,但也增加了编程的复杂性。
- JavaScript:动态类型语言,类型检查发生在运行时,这使得代码更加灵活,但也可能导致在运行时出现类型相关的错误。
其他不同之处
对象模型不同
- Java:一种严格面向对象的编程语言,所有代码都必须包含在类中,支持继承、封装、多态等面向对象编程概念。
- JavaScript:虽然也可以支持面向对象编程,但其对象模型不同于Java。JavaScript的对象是动态的,可以随时添加或删除属性和方法。
类型系统不同
- Java:一种强类型语言,需要在编写代码时明确定义变量的类型,同时在编译时进行类型检查。
- JavaScript:是一种弱类型语言,变量的类型可以在运行时动态更改,不需要明确指定类型。
总结
Java的执行速度确实高于JavaScript,但Java和JavaScript也是两种完全不同的编程语言,它们在用途上以及语法上存在很多不同之处,开发者需要根据具体项目需求来选择使用哪种语言。尽管它们有相似的名称,但它们没有直接关联。
作者留言
如果以上内容对你有些许帮助,还请劳烦给博主送一个小心心♥(ˆ◡ˆԅ)
本人Gitee仓库链接(也要♥(ˆ◡ˆԅ)):codeSpace: 记录coding中的点点滴滴 (gitee.com)