456手机浏览器 >> 软件 >> 浏览文章

Java和Javascript是什么关系呢?它们之间有什么差异?

2018-04-07 20:00 未知 admin 【字体:

写这篇文章是因为在知乎上看到有人问这个问题,在想怎么会有这种SB问题,不过想想当初SB的我貌似也搞不清两者的关系,认知还是需要一个过程。根据著名的开源项目分享网站统计,Java和Javascript是世界上最流行的编程语言,其次是Python,PHP,Ruby。不过,尽管它们的名字比较相似,但Java和Javascript基本上是没有什么关系的。

有的人可能会认为Javascript是Java语言的简化版本,实际上并不是。这两种语言的确有一些共同之处,但彼此之间分属不同的领域,两种语言很少有相同的用途。

Java和Javascript是什么关系呢?它们之间有什么差异?

 

一、什么是Java语言?

Java语言在诞生之初,曾经叫做“Oak”或者“Green”。1995年5月,Sun公司正式发布了Java语言。之所以叫这个名字,是因为在注册商标是,Oak已经被注册了,于是不得不重新取了一个名字。而Java这个名字是提议者在喝一杯爪洼咖啡时无意中提到的。

当时Sun公司宣称,Java语言作为C / C++语言的继承和进化,在提供类似语法的前提下,同时还引入了更安全的编码环境和更便捷的编码方式。但实际上,Java语言真正吸引人的地方,就是Sun公司提出的“一次编写,到处运行”理念。Java语言编写的程序并不是单独生成可执行文件到不同的目标平台,而是编译成一个JAR文件,以Java虚拟机(JVM)的方式运行在任何Java支持环境下。

JVM读取JAR文件,将其编译成特定平台运行时的指令,然后执行程序。这个过程被恰当地命名为即时编译。目前,Java语言已经发展了20多年,广泛应用于各个领域,比如:

1、安卓应用。Java语言是安卓应用开发的官方语言,尽管也有其它编程语言支持安卓应用的开发,但毫无疑问,使用Java语言开发安卓应用是最方便快捷的。

2、桌面应用。用Java语言创建桌面应用最大的优点就是可以跨平台运行,曾经在Java领域被普遍使用的Swing框架主要用来创建图形用户界面(GUI)。不过如果你是初学者,应该果断跳过Swing框架,而改学JavaFX或SWT框架这样更现代的成熟开发包。

3、企业应用。对于非历史遗留系统,采用Java语言来开发是最好的选择,特别是在银行和金融贸易等领域,Java语言被广泛采用。因为它速度快,部署方便,易于维护,且不易发生低级语言常见的灾难性错误。

4、嵌入式系统。在嵌入式系统领域,原来一直是C语言的天下。但随着硬件技术的发展,目前已经有大量的嵌入式设备开始使用Java语言来开发应用。包括数字手表、工厂控制器、交通信号灯、微控制器、混合动力汽车以及最近的物联网设备等等。

5、科学研究。在数据处理、计算、建模、仿真等领域,开发者一般会使用MATLAB和Python语言,但Java语言是自然语言处理和人工智能等更复杂的任务的最佳选择。

 

二、什么是Javascript?

Javascript源于HTML的巨大局限性,当网景公司(Netscape)预见到需要一个更动态的Web世界时,他们创建了一种新的语言,可以在HTML中编写。这种语言LiveScript起初叫做LiveScript,在短短的10天就设计完成,并借鉴了一些Java语法。由于当时Java语言非常流行,因此改名为Javascript。但Javascript从诞生之初就与Java语言分道扬镳,主要应用在网页开发领域。它和HTML及CSS一起,并称为Web开发的三大支柱。

与Java语言不同,在运行前需要编译代码,Javascript是解释执行的。当用户访问一个包含Javascript的网站时,浏览器首先会下载完整的Javascript源代码,然后调用Javascript引擎即时解析这些代码。不同的浏览器使用不同的Javascript引擎,比如谷歌浏览器(Chrome)的V8引擎,火狐(Firefox)浏览的蜘蛛猴(SpiderMonkey)引擎和微软最新推出的Edge浏览器所采用的脉轮(Chakra)引擎等等。

不过,随着技术的发展,在过去的十年中,Javascript已经成为世界上最灵活的语言之一,同时也是最受欢迎的编程语言。它不再仅仅是浏览器端的Web语言,还被应用在其他开发领域。目前Javascript的主要应用场合是:

1、Web应用程序。Javascript可用于前端和后端Web开发。前端主要是针对浏览器端的DOM(文档对象模型)操作,例如动画、数据插入、异步更新等等。而后端则负责服务器端逻辑,例如路由、数据处理、数据库交互等等。有些Javascript框架可以同时实现这两种功能,称为全栈Web开发模式。而可以同时进行前后端开发的程序员,则被称为全栈工程师。

2、桌面应用。现在,有些开发框架允许开发者用Javascript语言来编写桌面应用,比如Electron 和 NW.js 这样的开发包都是通过在内部捆绑Javascript引擎来实现的。开发者设计桌面应用时,就像在制作一个Web网站。同时,开发框架还提供了大量了访问接口,供开发者访问硬件和操作系统的相关资源,这些在传统Web应用开发时,通常是Javascript语言所不具备的。

3、手机应用。像React Native 和 PhoneGap这样的开发框架提供了丰富的功能可以让开发者直接用Javascript来编写移动端的应用。这些框架通常采用两种方式来工作,一种是将Javascript代码转换为Java代码(安卓平台)和Swift代码(苹果iOS平台),再编译成手机应用。另一种方式和桌面应用相类似,也是采用了内置Javascript引擎来实现的。

 

它们的相同之处包括:
 
它们的语法和 C 语言都很相似;
 
它们都是面向对象的(虽然实现的方式略有不同);
 
JavaScript 在设计时参照了 Java 的命名规则;   
 
它们的不同之处包括:       
 
JavaScript 是动态类型语言,而 Java 是静态类型语言;
 
JavaScript 是弱类型的,Java 属于强类型;
 
JavaScript 的面向对象是基于原型的(prototype-based)实现的,Java 是基于类(class-based)的;

Java和JavaScript各有所长各有专精,Java的舞台在编程领域,而JavaScript的得心之处是在Web页面中,它几乎无所不能。