scala程序是否可以在具有禁用java插件的浏览器上运行(因为scala被编译为jvm字节码)?换句话说:如果java浏览器插件被禁用,jvm是否被禁用?
或者Scala是否运行服务器端,我很困惑?
答案 0 :(得分:3)
如果我估算得当,你可以同时拥有:服务器端和客户端。
如果您想在服务器上使用它,它被称为Servlet并编译为JSP应用程序。
如果您想在客户端上使用它,它是一个Applet并在JVM中运行。这就是用户在浏览器设置中禁用的内容。
据我所知,java和scala编译为由JVM执行的相同类型的字节码。
因此,如果用户禁用了插件,则既不能使用Scala也不能使用Java。浏览器无法区分这两者。
答案 1 :(得分:3)
“在浏览器中运行”的唯一java程序是 applet ;任何延长java.applet.Applet
的班级都将达到此目的。由于scala类可以扩展java,因此完全可以在scala中编写applet。
但是,如果在Java虚拟机上运行scala时在浏览器中禁用了java,则无法运行。 (事实上,编译的scala程序和编译的Java程序之间没有区别 - 它们都是字节码,它运行在JVM
)
然而,Applet并不是特别常见,并且大多数scala代码在实践中都是服务器端的。当你看到人们谈论scala和网络时,他们很可能正在讨论Lift,它是Scala的(服务器端)Web框架。
答案 2 :(得分:2)
Scala几乎总是在服务器上运行,或者作为普通桌面“java”应用程序运行。
我认为它可以很好地作为applet工作,如果它不会给安全模型增加任何混淆,但是如果applet被禁用,我认为你根本不能运行任何JVM代码。
答案 3 :(得分:1)
关于Lift,服务器端运行Scala,但客户端运行自动生成的Javascript,不需要jvm。