用于简单java程序的Javascript包装器

Javascript wrapper for simple java program

本文关键字:Javascript 包装 程序 简单 java 用于      更新时间:2023-09-26

我想安排一个计算机模拟与超级简单的IO(只是打印语句),比可以在浏览器中运行。我会用java编程,但对Javascript知之甚少。我有一种感觉(如果我错了,请纠正我),可能有可能安排一些HTML/Javascript,这样它就可以整齐地包装一个分离的纯java块-无论是在一个文件中,还是在一个更大的文件中,一个区域标记为…

** START JAVA HERE **

** END JAVA HERE **

…这样一个只懂java的人就可以在那里编写java程序并在浏览器中查看它——只要IO被限制为简单的打印语句。

这可能吗?已经完成了吗?

EDIT:多一点背景…我已经写了一个真实世界现象的计算机模拟,我希望学者们能够玩和修改。学者们更可能了解java而不是javascript -所以我想隐藏所有javascript的东西,让用户只看到java。

可能会安排一些html/javascript,这样它就可以整齐地包装一个单独的纯java块

。Java之于Javascript就像汽车之于地毯。无论浏览器对Javascript的支持有多好,都不能保证包含Java运行时。可能会,但是Java被支持的几率和Flash被支持的几率是一样的(Flash获胜)。这只是一个插件。

除非将整个Java编译器解释器包装在javascript中(将它们编译为javascript),否则无法完全在客户端完成此操作。即便如此,它也会相当缓慢。你做什么:

选项1:

  1. 让用户编写一段Java代码
  2. 发送数据块到服务器
  3. 添加一堆Java代码,并存储到文件中。即:包含,类头,方法头,两个闭括号
  4. 在服务器上调用java编译器。这需要在服务器上安装JDK。类编译完成后,将它与其他静态类和manifest文件一起打包到一个jar文件中。
  5. 用这个JAR文件的URL响应客户机。
  6. 客户端创建一个新的appletobject标记来引用这个JAR,然后服务器将其提供给客户端。
  7. 如果用户的机器上有JRE,并且允许Java插件 applet本身运行,那么就完成了。

这是最简单的方法,但是它不是最优的(特别是在客户端必须确认所有安全警告的情况下)。你可以这样做:

选项2:

  • 为客户端提供一个完全静态的applet
  • 不要在编译后的类中打包更多的类
  • 不是在运行时创建一个新的applet元素,而是将URL传递给现有的applet
  • applet只加载编译后的类,然后用新的实现重新启动模拟。

:

  • jar会占用大量的空间(特别是如果你不进行类加载),所以如果上传的源代码没有被可见地保存,你可能希望在服务时自动删除jar。

选项3:

您可以将Java编译成Javascript,但只支持非常有限的Java子集。

一个这样的编译器是Google Web Toolkit的一个组成部分,旨在用Java编写整个网站。用户不需要在他的机器上有Java运行时环境,但需要将自己限制在可有效编译为Javascript的Java子集(您需要删除一半的Java)。如果我没记错的话,直到。


底线:您可以让用户编写Java,然后让他观察结果,但是繁重的Java编译工作应该由服务器来完成。如果用户没有Java插件,那么他就不能编写任何Java代码并期望它运行。此外,您最好知道如何用Java编写代码,包括类加载和javascript -> applet通信。