Java 和 JavaScript 是两门不同的编程语言。

  一般认为,当时 Netscape 之所以将 LiveScript 命名为 JavaScript,是因为 Java 是当时最流行的编程语言,带有 "Java" 的名字有助于这门新生语言的传播。

  它们的相同之处包括:

  它们的语法和 C 语言都很相似;

  它们都是面向对象的(虽然实现的方式略有不同);

  JavaScript 在设计时参照了 Java 的命名规则;

  它们的不同之处包括:

  JavaScript 是动态类型语言,而 Java 是静态类型语言;

  JavaScript 是弱类型的,Java 属于强类型;

  JavaScript 的面向对象是基于原型的(prototype-based)实现的,Java 是基于类(class-based)的;

  JavaScript 除了长得和 Java 比较像之外,语言风格相去甚远。JavaScript 在设计时所参考的对象不包括 Java,而包括了像 Self 和 Scheme 这样的语言。

  相同点:

  1. 内存管理,两者都采用GC来对内存进行回收。因此Java与javascript的内存泄露情况十分相似。

  2. 代码编译为机器码后由中间件执行:Java使用前会编译为字节码后由JVM执行,V8引擎采用JIT将js编译为机器码后由引擎执行。

  3. 内存申请,对象(Object)与数组(Array)引用申请自栈(stack),其本身空间申请自堆(heap)。

  4. hash处理,对数组与对象来说,数字类型键值的hashCode为其本身,字符串类型键需要计算hashCode来找到对应的值,因此属性名字的长度决定了其类型在hash类容器中的性能,Java中也有这样的问题。