【问题标题】:A beginner's question in ScalaScala中的初学者问题
【发布时间】:2009-10-11 19:57:02
【问题描述】:

scala 程序能否在禁用了 java 插件的浏览器上运行(因为 scala 被编译为 jvm 字节码)?换句话说:如果 java 浏览器插件被禁用,jvm 是否被禁用?

还是 Scala 运行在服务器端,我很困惑?

【问题讨论】:

  • 如果您看到要回答的问题,请考虑单击绿色勾号答案之一以关闭问题。问候
  • 问题的标题很糟糕,因为它根本没有描述所讨论的主题。

标签: java scala


【解决方案1】:

如果我估计正确,您可以同时拥有:服务器端和客户端。

如果您想在服务器上使用它,它被称为 Servlet 并编译为 JSP 应用程序。

如果您想在客户端上使用它,它是一个 Applet 并在 JVM 中运行。这就是用户在浏览器设置中禁用的功能。

据我所知,java 和 scala 编译为由 JVM 执行的相同类型的字节码。

因此,如果用户禁用了插件,您将无法使用 Scala 或 Java。浏览器无法区分这两者。

【讨论】:

  • 编译后,Scala 代码与 Java 代码没有区别——“它只是字节码”。 (好吧,你可以从类名中看出它可能是从什么编译而来的,但 JVM 并不关心这一点)。
  • 我不知道scala,但你说的是我的假设。
【解决方案2】:

“在浏览器中运行”的唯一 java 程序applet;任何扩展java.applet.Applet 的类都将用于此目的。由于 scala 类可以扩展 java 类,因此完全可以在 scala 中编写小程序。

但是,如果 java 在浏览器中被禁用,因为 scala 在 Java 虚拟机上运行,​​这将无法运行。 (事实上​​,编译后的 scala 程序和编译后的 Java 程序没有区别——它们都是 bytecode,运行在 JVM 上)

不过,Applet 并不是特别常见,实际上大多数 scala 代码都是服务器端的。当你看到人们谈论 scala 和 web 时,他们很可能在谈论 Lift,这是 Scala 的(服务器端)web 框架。

【讨论】:

    【解决方案3】:

    Scala 几乎总是在服务器上运行或作为普通桌面“java”应用程序运行。

    如果它不会给安全模型带来任何混乱,我想它作为一个小程序可以很好地工作,但如果小程序被禁用,我认为你根本无法运行任何 JVM 代码。

    【讨论】:

      【解决方案4】:

      关于Lift,服务器端运行Scala,而客户端运行自动生成的Javascript,不需要jvm。

      【讨论】:

        猜你喜欢
        • 2019-05-16
        • 2020-01-04
        • 2020-11-23
        • 2015-03-16
        • 2012-04-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多