闲扯Java和Javascript关系


在我刚学Javascript的时候,舍友看到了我的犀牛书,然后弱弱问了我一句:Java和Javascript有啥关系?

我记得自己好像是知道来着,怎么就说不清楚呢?于是为了扳回面子,我就这个问题仔细查阅了一圈,终于觉得自己搞清楚了,写在这长个记性。

先上图

刚开始,我看到这个答案的时候,觉得我终于看到了背后的关系,但是,看了多年柯南的直觉告诉我并没有这么简单,我都不服。

其实,他们的孽缘,从Javascript诞生那天就发生了。

历史

1995年Sun公司将Oak语言改名为Java,正式向市场推出。Sun公司大肆宣传,许诺这种语言可以"一次编写,到处运行"(Write Once, Run Anywhere),它看上去很可能成为未来的主宰。

网景公司动了心,决定与Sun公司结成联盟。它不仅允许Java程序以applet(小程序)的形式,直接在浏览器中运行;甚至还考虑直接将Java作为脚本语言嵌入网页,只是因为这样会使HTML网页过于复杂,后来才不得不放弃。

总之,当时的形势就是,网景公司的整个管理层,都是Java语言的信徒,Sun公司完全介入网页脚本语言的决策。因此,Javascript后来就是网景和Sun两家公司一起携手推向市场的,这种语言被命名为"Java+script"并不是偶然的。

1995年5月,网景公司做出决策,未来的网页脚本语言必须"看上去与Java足够相似",但是比Java简单,使得非专业的网页作者也能很快上手。Brendan Eich被指定为这种"简化版Java语言"的设计师。

区别于共性

相同之处:

  • 它们的语法和 C 语言都很相似;
  • 它们都是面向对象的(虽然实现的方式略有不同);
  • JavaScript 在设计时参照了 Java 的命名规则;
  • 都是解释型语言(非编译型)

不同之处:

  • JavaScript 是动态类型语言,而 Java 是静态类型语言;
  • JavaScript 是弱类型的,Java 属于强类型;
  • JavaScript 的面向对象是基于原型的(prototype-based)实现的,Java 是基于类(class-based)的;
  • 语言风格相去甚远。JavaScript 在设计时所参考的对象不包括 Java,而包括了像 Self 和 Scheme 这样的语言。

总结一下,他们既不是半毛钱关系没有,也不是有几毛钱的关系,当然,他们最重要的联系就是总有人把它们两个放到一起。

当然,如果你懒得说,可以拿图去用

 

补充理解

关于动态语言和静态语言
  通常我们所说的动态语言、静态语言是指动态类型语言和静态类型语言。

记住:Static typing when possible, dynamic typing when needed。

动态类型语言:在用动态类型的语言编程时,永远也不用给任何变量指定数据类型

静态类型语言:写程序时要声明所有变量的数据类型.例如Java,C++,C#等

 

关于强类型定义语言和弱类型定义语言

(1)强类型定义语言:一旦一个变量被指定了某个数据类型,如果不经过强制转换,那么它就永远是这个数据类型了。强类型定义语言是类型安全的语言。

(2)弱类型定义语言:数据类型可以被忽略的语言。它与强类型定义语言相反, 一个变量可以赋不同数据类型的值。

强类型定义语言在速度上可能略逊色于弱类型定义语言,但是强类型定义语言带来的严谨性能够有效的避免许多错误。另外,“这门语言是不是动态语言”与“这门语言是否类型安全”之间是完全没有联系的!
例如:Python是动态语言,是强类型定义语言(类型安全的语言); VBScript是动态语言,是弱类型定义语言(类型不安全的语言); JAVA是静态语言,是强类型定义语言(类型安全的语言)。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM