V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
irockytan
V2EX  ›  Java

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

  •  
  •   irockytan · 2015-11-25 23:20:13 +08:00 · 8862 次点击
    这是一个创建于 3296 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    70 条回复    2015-12-06 14:48:13 +08:00
    lyragosa
        1
    lyragosa  
       2015-11-25 23:22:39 +08:00   ❤️ 7
    卡巴斯基和巴基斯坦

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

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






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

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

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

    许三多和许四多的区别

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

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

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

    以上来自百科

    js 的发明公司因为和 java 的发明公司合作所以就叫 js 了,实际上没什么关系。
    zythum
        53
    zythum  
       2015-11-26 16:11:07 +08:00
    从历史的角度是有点关系的。当时出 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
        54
    traceLee  
       2015-11-26 18:24:26 +08:00
    JavaScript 的名字沾了 java 一点光而已, java 当时号称要全平台,想不到现在让当时默默无闻 JavaScript 现在做到了
    irockytan
        55
    irockytan  
    OP
       2015-11-26 19:06:57 +08:00
    @traceLee
    @zythum
    @Technetiumer
    @ibolee
    @fwrq41251
    @HentaiMew
    @joyee
    虽然你们说的都很有道理,但是可能不在一般人的理解范围内....所以这个问题需要再斟酌一下....
    irockytan
        56
    irockytan  
    OP
       2015-11-26 19:08:14 +08:00
    @bk201 我最喜欢 HR 了.....
    我觉得要用把一个概念用不在一个领域的人能听明白的词语说明白了,还真是有些难度....
    KyleMeow
        57
    KyleMeow  
       2015-11-26 22:40:10 +08:00
    @ibolee 这个类比还真不恰当。至少 GitHub 还是用 Git 的
    weizhiyao008
        58
    weizhiyao008  
       2015-11-27 10:39:25 +08:00
    @dtdnqsb 抓住
    Tiande
        59
    Tiande  
       2015-11-27 11:44:36 +08:00
    @weizhiyao008 😯U caught me.
    bibicall
        60
    bibicall  
       2015-11-27 13:02:30 +08:00
    景山 石景山,
    七彩翔 七彩翔云
    clifftts
        61
    clifftts  
       2015-11-27 15:31:39 +08:00
    就是没有关系 ,还用解释这么复杂
    brucefeng
        62
    brucefeng  
       2015-11-27 17:32:55 +08:00
    一个妹子跟你说“你真傻”和“你真傻逼”的关系
    Cathy0571
        63
    Cathy0571  
       2015-12-04 09:29:00 +08:00
    作为一个 HR 表示,我能从技术说两者是干嘛的,但是我不会说人话啊
    joyee
        64
    joyee  
       2015-12-05 02:50:21 +08:00
    @HentaiMew V8 没有解释器,只有编译器。没有解释执行,只有源代码->机器码->执行,而不是源代码->执行。即使不优化,也照样编译成机器码,然后执行机器码,也就是说跟 C/C++编译器是一个路子。

    ECMAScript 完全没有要求过 JS 需要怎样被运行,所以并不存在什么 “ JS 无需编译成字节码即可被执行的本质”……那些都是“实现细节”……
    HentaiMew
        65
    HentaiMew  
       2015-12-05 09:15:07 +08:00
    @joyee 脚本语言的最基本的本质之一就是无需编译成二进制文件,直接执行源代码,不然就不能算脚本。
    告诉你吧,所有 JS 引擎全部都有“解释器”和“编译器”。只有执行的步骤和内部细节区别。 JS 是脚本语言,无需编译即可执行,这门语言诞生就是如此,不需要改变。任何 JS 运行时都需要保证这个最基本的条件,任何 JS 运行时在执行时最终都会将程序解释成机器码, V8 只是在执行前解释成了机器码并且缓存起来。
    wxcwater
        66
    wxcwater  
       2015-12-05 14:21:39 +08:00
    老婆跟老婆饼,雷锋跟雷峰塔,或者说他俩都姓 ja ?
    joyee
        67
    joyee  
       2015-12-06 05:33:45 +08:00   ❤️ 1
    @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
        68
    joyee  
       2015-12-06 05:36:40 +08:00
    @HentaiMew 另外编译和解释这种不都算实现细节么,和语言无关,除了 Java 这种自带 JVM Spec 的,没有什么本质之说……你要想解释, C/C++也是能直接解释执行的啊,大把人写 C/C++ 的解释器做 toy project 玩儿呢……那 C/C++ 就变成脚本语言了?
    HentaiMew
        69
    HentaiMew  
       2015-12-06 14:33:49 +08:00
    @joyee 例如 Java 这种执行平台无需解释源代码,因为 JVM 有字节码规范,无论源码是怎样的,只需要编译成遵守规范的 JVM 字节码都可以执行。哪怕源代码不是 Java 语言,例如 scala 或者 clojure 或者 groovy 。但是 JS 是靠源代码执行的,无论任何 JS 的运行时都要读懂源码,况且 V8 不是唯一一个及时编译的 JS 引擎,火狐的 JS 引擎也可以。 JS 是不是脚本语言怎么能跟运行时扯上关系呢,无论它在那个平台执行,它就是脚本语言,改变不了
    joyee
        70
    joyee  
       2015-12-06 14:48:13 +08:00 via Android
    @HentaiMew 不我的意思是。。即使没有 JIT , V8 也是编译成机器码再执行的,你看过那个对谈就知道了,如今其他所有主流 JS 引擎确实都是解释器+JIT 编译器的架构,但 V8 还真不是,也毫无意愿加解释器。我纠结的点是,人家明明不需要解释器啊, ES 里啥都没规定,那些属于实现细节。。你真要做 AOT ,也不是不可以(不过 eval 和 with 需要 workaround )。。 JS 当然是脚本语言了,名字里都摆着。。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1097 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 19:03 · PVG 03:03 · LAX 11:03 · JFK 14:03
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.