我是一名非常熟练的java程序员,曾涉足网络开发,但我发现我在做基于桌面的东西方面要比在Web开发方面做得更好。我一直试图找到一种 easy 方式来移植我的桌面应用程序,以便在浏览器中运行,但似乎找不到任何东西。我想我正在寻找的东西类似于小程序,但它们在很大程度上没有得到支持,并且在白天变得越来越多。是否有类似的东西可以让我保持我的桌面风格思维并仍然在浏览器中运行,或者我应该分解并重写整个东西在rails或其他常见的Web平台。
答案 0 :(得分:2)
Applet是一种可以直接嵌入到网页中的旧技术。它们没有错误,但它们有几个安全限制。此外,由于技术中发现的严重错误数量,支持率正在稳步下降。但是,想要applet支持的桌面用户通常无法确保它。目前,Chrome和Java平台本身都会在允许运行applet之前发出警告 - 并且假设已经安装了Java运行时环境。
Google Web Toolkit是一个允许用Java创建单页面应用程序的框架,然后将其编译为Javascript。 GWT处理幕后的多件事,包括服务器 - 客户端通信,本地化和国际化,以及自己的布局引擎。
将现有应用程序翻译为GWT时,您需要:
java.util.
的很大一部分但不支持javax.
(截至2014年1月)。 GWT站点托管list of supported Java classes。此外,Javascript的正则表达式不如Java强大。特别是Lookbehinds不受支持。服务器端是一个成熟的Java环境,但请记住 - 您希望将服务器 - 客户端通信降至最低。 但是,最常见的策略是直接在 Javascript 中对客户端进行编码。
Javascript是一种与C / C ++和Java语法非常相似的语言。它使用花括号来表示代码块,它使用分号来分隔语句(尽管Javascript具有自动分号插入功能,如果第一行没有以分号结束,有时它会将两行理解为单个语句。其数据类型包括数字(双精度浮点数),字符串,布尔值,两种类型的null
,普通对象(基本上是散列映射[string - > x]),数组(无类型和动态可扩展),正则表达式和函数(命名或匿名),所有这些都有自己的文字语法。
使用Javascript编码时,您的心态应该是:
http://
或https://
)。桌面通知?地理位置?先请求权限。 Java applet具有可比较的安全限制,原因完全相同。canvas
,但它没有内置的布局引擎 - 它最接近的Java相对是JCanvas
- 只是一个空白区域,你可以绘制图形基元 - 或WebGL画布 - 你可以放置三维空间中的三角形。除this
变量外,Javascript的功能范围和词法作用域都有闭包。如果一个变量存在于周围的作用域中,它可以被读取和写入 - 甚至可以从仅在该作用域中定义并稍后调用的函数中读取。在Java中,您不能关闭非final
函数局部变量。
但是,您需要注意时间安排 - 不要认为您可以在回调中分配变量并在外部使用它。当您尝试使用它时,它还没有被分配给它。许多人试图以这种方式欺骗时间,但都失败了。
localStorage
(相当大的空间,不是很老的浏览器都支持)或服务器(很多空间,但在关闭页面时与服务器通话很棘手)。答案 1 :(得分:1)
我认为java web start可以帮助你
答案 2 :(得分:1)
我建议你看看Java Web Start
。它使您可以使用Web浏览器直接从Internet启动Java平台的应用程序软件。
有关详细信息,请参阅:Java Web Start
答案 3 :(得分:1)
现在Web Start并不是一个好的选择,因为用户需要安装JVM,并且围绕Java的所有漏洞都很难说服用户下载它。 JDK 1.8+的最新版本包括仅在一个安装程序中将应用程序打包到jvm运行时的脚本:https://docs.oracle.com/javase/8/docs/technotes/guides/deploy/
为了在像applet这样的浏览器中使用你的应用程序,可以使用Bck2Brwsr或TeaVM两者都可以在没有Java插件的浏览器中运行java应用程序。如果可用,Bck2Brwsr也会使用Java Plug。
您还可以使用GWT将Java应用程序编译为JavaScript。注意:不支持Swing。
此致