irockytan
V2EX  ›  Java

怎么用人话说明 Java 和 JavaScript 的区别?

  •  
  •   irockytan · Nov 25, 2015 · 10522 views
    This topic created in 4007 days ago, the information mentioned may be changed or developed.

    我和媳妇在讨论妇产科妇科产科的区别...我说就和别人不理解 Java 和 JavaScript 的区别一样,我也不知道妇科产科妇产科的区别...然后她就问我了, Java 和 JavaScript 有什么区别?
    我就不知道该怎么和她说了....
    她是人事...

    70 replies  •  2015-12-06 14:48:13 +08:00
    lyragosa
    lyragosa
    Nov 25, 2015❤️7
    1
    卡巴斯基和巴基斯坦

    雷锋和雷锋塔
    b821025551b
    b821025551b
    Nov 25, 2015
    2
    老婆和老婆饼
    kokutou
    kokutou
    Nov 25, 2015
    3
    屎。。。和。。。屎蛋?
    muzuiget
    muzuiget
    Nov 25, 2015
    4
    我也是想到雷锋和雷峰塔
    omengye
    omengye
    Nov 25, 2015 via Android
    5
    东方,东方不败
    vajaja
    vajaja
    Nov 25, 2015 via Android❤️1
    6
    周杰和周杰伦
    Mireas
    Mireas
    Nov 25, 2015
    7
    菠萝和菠萝包
    XiaoXiaoNiWa
    XiaoXiaoNiWa
    Nov 25, 2015 via Android❤️21
    8
    周杰伦在周杰家被周杰轮,范玮琪在范玮家被范玮骑。
    irockytan
    irockytan
    OP
    Nov 25, 2015 via iPhone
    9
    @lyragosa 前面这个也会糊涂的...后面这个她说说了有什么不一样,但是没回答为什么不一样,那它们是什么?
    tcdw
    tcdw
    Nov 25, 2015 via Android
    10
    原版手机,山寨手机
    RoshanWu
    RoshanWu
    Nov 26, 2015
    11
    雷锋和雷峰塔的区别
    vzch
    vzch
    Nov 26, 2015
    12
    松花江与松花蛋
    rayps
    rayps
    Nov 26, 2015
    13
    苹果与苹果公司
    Tiande
    Tiande
    Nov 26, 2015
    14
    @XiaoXiaoNiWa
    丧 ! 心 ! 病 ! 狂 !
    Zzzzzzzzz
    Zzzzzzzzz
    Nov 26, 2015
    15
    拿名词举例太抽象了。

    比如一个富 UI 的基于浏览器的应用必须兼顾前后端, 就像生小孩必须同时具备男女一样, 同时用到这两个构建就必须一个做前端, 一个做后端。






    拿 nodejs 做后端提供服务, 拿 java applet 做前端渲染界面就很不错呀。
    incompatible
    incompatible
    Nov 26, 2015❤️1
    16
    @Zzzzzzzzz 真是惊天大反串!
    xiandao7997
    xiandao7997
    Nov 26, 2015 via Android
    17
    小鲜肉和鲜肉月饼的区别
    SonicY
    SonicY
    Nov 26, 2015
    18
    @XiaoXiaoNiWa 人才.......
    br00k
    br00k
    Nov 26, 2015 via Android
    19
    java 脚本语言
    adexbn
    adexbn
    Nov 26, 2015 via iPhone❤️1
    20
    你叫张三,他叫张三丰,除了张三两个字一样,别的基本上都不一样
    SoloCompany
    SoloCompany
    Nov 26, 2015
    21
    1. 它们都是 C 语法体系 (运算符体系,分支及循环语句体系)
    对于有 C 语言基础的人来说,都比较容易掌握
    而另一个宇宙第一大语言,虽然函数名子抄了 C ,但满屏的 $,还居然不支持字符串用加号串接, 真看不出哪里长的像 C 了
    2. 诞生时间很接近,一个是 94 年,一个是 95 年
    3. 没了
    msg7086
    msg7086
    Nov 26, 2015
    22
    @SoloCompany 原来 C 可以用加号串接字符串啊
    ryrubyy
    ryrubyy
    Nov 26, 2015
    23
    Java to Javascript, is like car to carpet.
    irockytan
    irockytan
    OP
    Nov 26, 2015 via iPhone
    24
    @SoloCompany 我要这么说问题更多了....人力资源专业,没有 C 语言基础....
    levon
    levon
    Nov 26, 2015 via Android
    25
    简单说了还不理解是智商问题,无需过多解释
    irockytan
    irockytan
    OP
    Nov 26, 2015 via iPhone
    26
    @levon 不想和你多说,你和你老婆会这么说么,你会说她是智商有问题么
    bluefox
    bluefox
    Nov 26, 2015
    27
    java 和 javascript 对人士来说没区别,都是一门计算机语言
    bk201
    bk201
    Nov 26, 2015
    28
    我只有我的关注点在于他的老婆是 hr 吗。
    ---
    话说你不能人话解释清楚的原因在于你也不是很清楚区别,所以就搜索一下呗
    kalman03
    kalman03
    Nov 26, 2015
    29
    独立开设妇科和产科的,一般是三级医院
    而只有妇产科的,一般属二级医院

    医院的级别划分是看是否有能力对科室的细分研究
    xzl
    xzl
    Nov 26, 2015
    30
    大熊猫、小熊猫
    auin
    auin
    Nov 26, 2015
    31
    虽然意思上之于 雷峰和雷峰塔 一样两者无关系,但是 javascript 的名字由来确实是有 java 的影响
    SilentDepth
    SilentDepth
    Nov 26, 2015
    32
    它们是两种编程语言,只是名字相似
    davin
    davin
    Nov 26, 2015
    33
    有空可以读一读《软件故事:谁发明了那些经典的编程语言》,还是很有意思的~
    wxl1380610
    wxl1380610
    Nov 26, 2015
    34
    @XiaoXiaoNiWa 人才啊
    a4e9y47
    a4e9y47
    Nov 26, 2015❤️4
    35
    V2trip
    V2trip
    Nov 26, 2015
    36
    可能有点不文明了 如果不舒服就隐藏了吧
    鸡和鸡巴的关系
    amon
    amon
    Nov 26, 2015
    37
    以前 Java 是个大明星(周杰),
    后来有个家伙也想出名,
    然后它就借着 Java (周杰) 的名气,把自己叫成 Javascript (周杰伦).
    再后来它也成了大明星了。

    它们没有一毛钱关系,只是 Javascript (周杰伦)借着 Java (周杰)的名字想火而已。
    就这样。
    (周杰伦粉丝别打我,我想解释的形象点 Q_Q )
    kindjeff
    kindjeff
    Nov 26, 2015
    38
    @Zzzzzzzzz 惊天大逆转
    liujianwei
    liujianwei
    Nov 26, 2015
    39
    猕猴和猕猴桃的关系
    freeandeasy
    freeandeasy
    Nov 26, 2015
    40
    我来试试

    许三多和许四多的区别

    当时许三多的形象脍炙人口,就有个哥们给自己起名叫许四多,也成了当时小有名气的网络名人
    当年 java 名声大噪,一个叫 livescript 的语言为了吸引更多人注意改名成了 javascript

    许三多和许四多共同点都是-->人,而且都是男人
    人和人不一样,
    不是所有男人都是你媳妇的老公。。。

    java 和 javascript ,此处省略 1w 字。
    xmoiduts
    xmoiduts
    Nov 26, 2015 via Android
    41
    loli 和 lolipop 的区别。
    HentaiMew
    HentaiMew
    Nov 26, 2015
    42
    说没关系也可以,一个是编译型语言,一个是解释型脚本,一静一动。
    不过 Java 在 Java7 以后,内置了脚本引擎,可以直接运行编写 javascript 代码,可以内存交互,所以可以认为也有那么一点关系。当然名称相似,只是为了更好的推广而已。
    LancerComet
    LancerComet
    Nov 26, 2015
    43
    中国和美国的区别
    lizhenda
    lizhenda
    Nov 26, 2015
    45
    笑死了啊 hhh
    joyee
    joyee
    Nov 26, 2015
    46
    @HentaiMew 说 JavaScript 是解释型脚本,你让 V8 这种只有编译器没有字节码的引擎情何以堪……
    HentaiMew
    HentaiMew
    Nov 26, 2015
    47
    @joyee 这只是脚本引擎的优化技能,改变不了也没必要改变 JS 无需编译成字节码即可被执行的本质。
    fwrq41251
    fwrq41251
    Nov 26, 2015
    48
    静态语言和动态语言的区别
    ibolee
    ibolee
    Nov 26, 2015
    49
    git 和 github 的区别~
    MurphyL
    MurphyL
    Nov 26, 2015
    50
    印度和印度尼西亚的区别
    1000copy
    1000copy
    Nov 26, 2015
    51
    你们得多闲啊。
    Technetiumer
    Technetiumer
    Nov 26, 2015 via Android
    52
    在 1995 年时,由 Netscape 公司的 Brendan Eich ,在网景导航者浏览器上首次设计实现而成。因为 Netscape 与 Sun 合作, Netscape 管理层希望它外观看起来像 Java ,因此取名为 JavaScript 。但实际上它的语法风格与 Self 及 Scheme 较为接近。

    以上来自百科

    js 的发明公司因为和 java 的发明公司合作所以就叫 js 了,实际上没什么关系。
    zythum
    zythum
    Nov 26, 2015
    53
    从历史的角度是有点关系的。当时出 javascript 的时候正式 java 流行的时候,为了蹭点关系,使得自己洋气一点。所以改名叫的 javascript.

    摘自维基百科:

    Netscape 在最初将其脚本语言命名为 LiveScript ,后来 Netscape 在与 Sun 合作之后将其改名为 JavaScript 。 JavaScript 最初受 Java 启发而开始设计的,目的之一就是“看上去像 Java ”,因此语法上有类似之处,一些名称和命名规范也借自 Java 。但 JavaScript 的主要设计原则源自 Self 和 Scheme 。 JavaScript 与 Java 名称上的近似,是当时 Netscape 为了营销考虑与 Sun 微系统达成协议的结果。为了取得技术优势,微软推出了 JScript 来迎战 JavaScript 的脚本语言。为了互用性, Ecma 国际(前身为欧洲计算机制造商协会)创建了 ECMA-262 标准( ECMAScript )。两者都属于 ECMAScript 的实现。尽管 JavaScript 作为给非程序人员的脚本语言,而非作为给程序人员的脚本语言来推广和宣传,但是 JavaScript 具有非常丰富的特性
    traceLee
    traceLee
    Nov 26, 2015
    54
    JavaScript 的名字沾了 java 一点光而已, java 当时号称要全平台,想不到现在让当时默默无闻 JavaScript 现在做到了
    irockytan
    irockytan
    OP
    Nov 26, 2015
    55
    @traceLee
    @zythum
    @Technetiumer
    @ibolee
    @fwrq41251
    @HentaiMew
    @joyee
    虽然你们说的都很有道理,但是可能不在一般人的理解范围内....所以这个问题需要再斟酌一下....
    irockytan
    irockytan
    OP
    Nov 26, 2015
    56
    @bk201 我最喜欢 HR 了.....
    我觉得要用把一个概念用不在一个领域的人能听明白的词语说明白了,还真是有些难度....
    KyleMeow
    KyleMeow
    Nov 26, 2015
    57
    @ibolee 这个类比还真不恰当。至少 GitHub 还是用 Git 的
    weizhiyao008
    weizhiyao008
    Nov 27, 2015
    58
    @dtdnqsb 抓住
    Tiande
    Tiande
    Nov 27, 2015
    59
    @weizhiyao008 😯U caught me.
    bibicall
    bibicall
    Nov 27, 2015
    60
    景山 石景山,
    七彩翔 七彩翔云
    clifftts
    clifftts
    Nov 27, 2015
    61
    就是没有关系 ,还用解释这么复杂
    brucefeng
    brucefeng
    Nov 27, 2015
    62
    一个妹子跟你说“你真傻”和“你真傻逼”的关系
    Cathy0571
    Cathy0571
    Dec 4, 2015
    63
    作为一个 HR 表示,我能从技术说两者是干嘛的,但是我不会说人话啊
    joyee
    joyee
    Dec 5, 2015
    64
    @HentaiMew V8 没有解释器,只有编译器。没有解释执行,只有源代码->机器码->执行,而不是源代码->执行。即使不优化,也照样编译成机器码,然后执行机器码,也就是说跟 C/C++编译器是一个路子。

    ECMAScript 完全没有要求过 JS 需要怎样被运行,所以并不存在什么 “ JS 无需编译成字节码即可被执行的本质”……那些都是“实现细节”……
    HentaiMew
    HentaiMew
    Dec 5, 2015
    65
    @joyee 脚本语言的最基本的本质之一就是无需编译成二进制文件,直接执行源代码,不然就不能算脚本。
    告诉你吧,所有 JS 引擎全部都有“解释器”和“编译器”。只有执行的步骤和内部细节区别。 JS 是脚本语言,无需编译即可执行,这门语言诞生就是如此,不需要改变。任何 JS 运行时都需要保证这个最基本的条件,任何 JS 运行时在执行时最终都会将程序解释成机器码, V8 只是在执行前解释成了机器码并且缓存起来。
    wxcwater
    wxcwater
    Dec 5, 2015
    66
    老婆跟老婆饼,雷锋跟雷峰塔,或者说他俩都姓 ja ?
    joyee
    joyee
    Dec 6, 2015❤️1
    67
    @HentaiMew “所有 JS 引擎全部都有“解释器”和“编译器””这种论调是哪里来的, V8 就没有解释器,真的没有,不信你看 https://channel9.msdn.com/Shows/Going+Deep/Lars-Bak-and-Steve-Lucco-Chakra-V8-JavaScript-Open-Source , Lars Bak 还表示了对解释器的不屑…… V8 是开源的,你完全可以去看他的源代码,看过你就知道了,他只有编译器,区别只在于 baseline compiler 编译出的是没有优化的机器码, crankshaft 编译出的是优化过的机器码,从来没有解释执行一说……那照你这么说他非得编译成机器码才能执行 JS 引擎, V8 就不算 JS 运行时了么= =
    joyee
    joyee
    Dec 6, 2015
    68
    @HentaiMew 另外编译和解释这种不都算实现细节么,和语言无关,除了 Java 这种自带 JVM Spec 的,没有什么本质之说……你要想解释, C/C++也是能直接解释执行的啊,大把人写 C/C++ 的解释器做 toy project 玩儿呢……那 C/C++ 就变成脚本语言了?
    HentaiMew
    HentaiMew
    Dec 6, 2015
    69
    @joyee 例如 Java 这种执行平台无需解释源代码,因为 JVM 有字节码规范,无论源码是怎样的,只需要编译成遵守规范的 JVM 字节码都可以执行。哪怕源代码不是 Java 语言,例如 scala 或者 clojure 或者 groovy 。但是 JS 是靠源代码执行的,无论任何 JS 的运行时都要读懂源码,况且 V8 不是唯一一个及时编译的 JS 引擎,火狐的 JS 引擎也可以。 JS 是不是脚本语言怎么能跟运行时扯上关系呢,无论它在那个平台执行,它就是脚本语言,改变不了
    joyee
    joyee
    Dec 6, 2015 via Android
    70
    @HentaiMew 不我的意思是。。即使没有 JIT , V8 也是编译成机器码再执行的,你看过那个对谈就知道了,如今其他所有主流 JS 引擎确实都是解释器+JIT 编译器的架构,但 V8 还真不是,也毫无意愿加解释器。我纠结的点是,人家明明不需要解释器啊, ES 里啥都没规定,那些属于实现细节。。你真要做 AOT ,也不是不可以(不过 eval 和 with 需要 workaround )。。 JS 当然是脚本语言了,名字里都摆着。。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1993 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 135ms · UTC 15:03 · PVG 23:03 · LAX 07:03 · JFK 10:03
    ♥ Do have faith in what you're doing.