首先JS(JavaScript)和Java之间没有什么太大的关系,甚至可以说是八竿子都打不着。
JavaScript(简称“JS”) 是一种具有函数优先的轻量级,解释型或即时编译型的编程语言。虽然它是作为开发Web页面的脚本语言而出名,但是它也被用到了很多非浏览器环境中,JavaScript 基于原型编程、多范式的动态脚本语言,并且支持面向对象、命令式、声明式、函数式编程范式。
JavaScript在1995年由Netscape公司的Brendan Eich,在网景导航者浏览器上首次设计实现而成。因为Netscape与Sun合作,Netscape管理层希望它外观看起来像Java,因此取名为JavaScript。但实际上它的语法风格与Self及Scheme较为接近。
简单的理解一下呢,JS就是一种用于前端的编程语言,多用于页面开发和跨平台(跨越不同物理设备)。主要的作用呢,就是页面显示和页面的一些操作处理的功能。主要是服务于浏览器。
(1)那么JS 和浏览器之间的关系又是什么呢?浏览器的核心要分为两个部分,一个是JS引擎,一个是渲染引擎,JS引擎就是处理页面中我们插入的JS逻辑代码了,渲染引擎自然就是将html编写的页面按照约定放到我们的窗口上。这就组成了我们的浏览器。
(2)那么nodeJS又是个什么东西呢?是一个能够在服务器端运行JavaScript的开放源代码、跨平台Javascript运行环境。node采用Google v8运行js代码使用事件驱动、非阻塞,异步io来提高性能node js是单线程的;
抓住关键词,运行在服务端(后端),运行环境(给js提供了一个引擎)。这不就是一个在后端运行的服务器软件嘛,为了更好地和前端进行交互。
(3)nodeJS服务器和Java服务器又有何不同呢?
- JS 运行快,开发快,弱类型的语言。适合小型项目的快速开发。
- java强类型语言,开发慢,代码开发难度大,适合搞大项目。
这波就是浅层理解了。至于更深层次的理解,我还没体会过。
(4)关于进程和线程呢?
进程是给程序提供必备的运行环境。
线程就相当于在进程的基础之上进行工作。(计算机中最小的调度单位)
不管是进程还是线程,都是在电脑上跑的软件。但是很多软件都是一起运行的,不是等你执行完在执行下一个软件,这也就是所谓的并行和串行。串行就是排队,qq运行完,再去运行微信,再去查资料...;并行就是我们在挂着qq的同时,还可以边用微信和浏览器。大多数情况下,我们希望的是并行。
以windows为例,理论上来讲,Windows OS 是一个与硬件交互的操作系统。所有的软件都在这个操作系统上运行,但是我们的硬件只有一套(也称之为资源),所有的软件都是公用这一套资源,例如CPU,屏幕,打印机等。如果所有的软件都同时使用这一套资源的话,就会乱套,打印机上句是word打印的,下一句是wps打印的。这显然是不对的。这里就涉及到了任务的调度,也就是OS作为大佬,我来做主给你们分配资源,这就产生了进程和线程。下面是他们之间的包含关系
【1】 OS(windows / ios / android / linux / ....)
【2】 进程(QQ / Wechat / Word / Excel / IE browser ...)
【3】线程(QQ的语音通话程序,浏览器的新标签页等)
OS下有多个进程,一个进程下有多个线程。线程是最小的调度单位。线程使用的资源是他所在进程所分配的资源。
这下就应该浅浅的解释清楚了吧。