繁体   English   中英

简单Java程序的JavaScript包装器

[英]Javascript wrapper for simple java program

我想安排一个计算机模拟,使用超级简单的IO(仅打印语句),而不是在浏览器中运行。 我可以用Java编程,但是对Java知之甚少。 我有一种感觉(如果我错了,请纠正我),可能可以安排一些HTML / Javascript,使其可以整齐地包装单独的纯Java块-可以单独存储在文件中,也可以存储在较大的文件中带有标记为...的区域的文件

**从这里开始**

**在这里结束**

...这样,只要IO仅限于简单的打印语句,只知道Java的人就可以在那里编写Java程序并在浏览器中查看它。

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

编辑:多一些背景...我写了一个计算机模拟的现实世界的现象,我希望学者能够玩和修改。 与JavaScript相比,学者更可能了解Java-因此,我想隐藏所有JavaScript内容,让用户只看到Java。

可能可以安排一些html / javascript,以便它可以整齐地包装纯Java的单独块

不会。Java就像Java语言一样,汽车就像地毯一样。 无论浏览器对Javascript的支持程度如何,都不能保证它们包含Java运行时。 他们可能会这样做,但是支持Java与支持Flash的机会几乎相同(并赢得Flash)。 这只是一个插件。

除非您将整个Java编译器解释器都用javascript包装(将它们编译为javascript),否则不能完全在客户端执行此操作。 即使那样,它仍然会很慢。 可以做什么:

选项1:

  1. 让用户编写一段Java代码
  2. 将块发送到服务器
  3. 添加一堆Java代码,并将其存储到文件中。 即:包括,类头,方法头,两个右花括号
  4. 调用服务器上的Java编译器。 这要求您在服务器上安装JDK。
  5. 编译完类后,将其与其他一系列静态类和清单文件一起打包到jar文件中。
  6. 使用此JAR文件的URL响应客户端。
  7. 客户端创建一个引用此JAR的新appletobject标记,然后服务器将其馈送到客户端。
  8. 如果用户的计算机上有一个JRE,并且允许Java插件 applet本身运行,那么您就完成了。

这是最简单的方法,但是它次优(尤其是客户端必须确认的所有安全警告)。 您可以改为:

选项2:

  • 向客户端提供完全静态的小程序
  • 不要在已编译的类中再打包几个类
  • 而不是在运行时创建新的applet元素,而是将URL传递给现有的applet
  • 然后,小程序加载已编译的类,然后使用新的实现重新启动仿真。

也:

  • Jars会占用很多空间(尤其是如果您不进行类加载),因此,如果上传的源代码没有被明显地保存,则您可能还希望在投放时自动删除Jars。

选项3:

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

一个这样的编译器是Google Web Toolkit的组成部分,该工具包旨在从Java编写整个网站。 用户不需要在其计算机上安装Java Runtime Environment,而是需要将自己限制为可有效地编译为Javascript的Java子集(如果我没记错的话,您需要擦除Java.util的一半) 。


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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM