用于简单java程序的Javascript包装器
Javascript wrapper for simple java program
我想安排一个计算机模拟与超级简单的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:
- 让用户编写一段Java代码
- 发送数据块到服务器
- 添加一堆Java代码,并存储到文件中。即:包含,类头,方法头,两个闭括号 在服务器上调用java编译器。这需要在服务器上安装JDK。类编译完成后,将它与其他静态类和manifest文件一起打包到一个jar文件中。
- 用这个JAR文件的URL响应客户机。
- 客户端创建一个新的
applet
或object
标记来引用这个JAR,然后服务器将其提供给客户端。 - 如果用户的机器上有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通信。
- 用类javascript包装span标记中字符串中的字符索引
- 在jquery$({})中包装纯javascript对象
- 使用Javascript设置库中图像包装器的宽度
- 将angular javascript文件包装为“;(function(){..[js-code here]…})()&
- 我如何才能使数组中的按钮只对其作出响应'使用javascript的自己的包装器
- 如何使用带包装器的Javascript/jQuery动态修改CSS类
- 如何使用javascript将任何手机号码包装到锚标签中
- 如何在 ajax 调用后更改包装器 JavaScript 函数中的全局变量
- 用Javascript包装HTML字符串中未包装的部分
- jquery+调用来自另一个Javascript包装器的函数
- 用javascript包装大的降价段落
- 返回一个用JavaScript包装的对象
- 有没有针对Tumblr API的JavaScript包装器可用
- 用于简单java程序的Javascript包装器
- 使用JavaScript包装HTML5视频元素会破坏iOS中的视频播放器
- 如何创建一个JavaScript包装与JavaFx WebView使用?JSNI是一种选择吗?
- 在javascript包装的php语句上循环使用php
- 创建可导出的对象或模块,用CommonJS/NodeJS javascript包装第三方库
- Asp.net web服务javascript包装器异步问题
- 如何在保持相同API的同时将此JavaScript包装在立即调用的函数表达式(IIFE)中?