简单java程序的Javascript包装器

时间:2013-05-25 10:55:37

标签: java javascript

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

**在这里开始JAVA **

**结束JAVA在这里**

...只有知道java的人才能在那里编写java程序并在浏览器中查看它 - 只要IO仅限于简单的打印语句。

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

编辑:更多背景......我写了一个现实世界现象的计算机模拟,我希望学者能够玩和修改。学者们比javascript更有可能了解java - 所以我想隐藏所有的javascript东西,让用户只看java。

1 个答案:

答案 0 :(得分:1)

  

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

没有。 Java是Javascript,因为汽车是地毯。无论多么好的浏览器都支持Javascript,浏览器都不能保证包含Java运行时。他们可能会,但是支持Flash的机会大致相同(Flash获胜)。它只是一个插件。

除非您将整个Java编译器解释器包装在javascript中(将它们编译为javascript),否则您无法完全在客户端执行此操作。即使这样,它也会很慢。您可以做什么:

选项1:

  1. 让用户编写一大堆Java代码
  2. 将块发送到服务器
  3. 添加一堆Java代码,然后存储到文件中。即:包括,类标题,方法标题,两个结束括号
  4. 在服务器上调用java编译器。这要求您在服务器上安装JDK。
  5. 编译完类后,将其打包到一个包含其他静态类和清单文件的jar文件中。
  6. 使用此JAR文件的URL回复客户端。
  7. 客户端创建一个新的appletobject标记,引用此JAR,然后服务器将其提供给客户端。
  8. 如果用户的计算机上有JRE并且允许Java插件运行applet本身,那么就完成了。
  9. 这是最简单的方法,但它非常不理想(尤其是客户必须确认的所有安全警告)。你可以这样做:

    选项2:

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

    此外:

    • 罐子可占用大量空间(特别是如果你没有加载),所以如果上传的源代码没有明显保存,你可能也希望在服务时自动删除罐子。

    选项3:

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

    一个这样的编译器是Google Web Toolkit的组成部分,旨在从Java编写整个网站。用户不需要在他的机器上安装Java Runtime Environment,但是需要将自己限制为可以有效编译为Javascript的Java子集(如果我没记错的话,你需要划掉java.util的一半) 。


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