使用Java Web Start部署JRuby应用 - 编程入门网
n_listener do |event|
...
end
这些是你使用JRuby开发Swing时需要掌握的基础。尽管JRuby使得用Swing开发GUI变得更方便,但是你还是需要手写很多代码,当需要复杂布局时更是如此。如果你希望能更简单地创建Swing UI时,请参考使用JRuby GUI APIs的三种方式 。 部署JRuby应用变得更简单 Ruby应用和库通常是通过RubyGems分发的,但是为了利用其优势,你需要安装好Ruby和RubyGems,而这对于一般的用户来说却并不实际。对于传统的(MRI / C-Ruby)程序,该问题已经通过RubyScript2Exe[1]的方式得到了解决,这是通过将脚本和一个Ruby解释器绑定到一个可运行在多个平台上的包里面来实现的。JRuby的用户也不必为此感到沮丧,相反,他们手头上已经有了一个更加强大的工具来快速部署应用:Java Web Start。 使用Java Web Start Java Web Start包含在Java运行时环境中,因此在大多数系统中都可以使用。使用Web Start部署应用相当简单,所需要的仅仅是一个包含所有文件和JNLP(Java Network Launching Protocol)描述文件的jar包。我们在ObjectSpace浏览器应用的基础上,来示范一下如何创建一个可以通过web-start进行部署的Ruby应用。 使用Web Start的前提是一个包含应用的jar包,我们首先从它开始。JRuby提供了两种不同的库:“最小的”jruby.jar和jruby-complete.jar,后者捆绑了整个Ruby标准库。如果你不使用标准库,那么你可以使用更小的jruby.jar,这样可以减少大约1M的下载量。 让你的脚本运行的最简单的方式就是将.rb文件添加到jruby.jar。下面的命令将我们例子中的rob.rb增加到压缩包中。
你可以通过java来启动应用,来检查上面的命令是否正确,而这需要我们的Ruby脚本。这个应用程序需要ObjectSpace,我们可以通过向Java传递jruby.objectspace.enabled=true属性来激活它。
-r选项自动寻找所需文件,然后运行我们的脚本。 使用Java Web Start部署JRuby应用(3)时间:2011-02-13提早编译 JRuby1.1的一个令人激动的新特性就是对提前(ahead of time,即AOT)编译的支持。现在JRuby中有2048个方法采用即时编译,而提前编译能减轻这一限制。JRuby编译器jrubyc目前仍处在开发中,所以我建议使用最新的JRuby版本。将普通的Ruby文件编译为class文件就像通过脚本参数调用编译器那样简单:
这会创建一个包含rob.class文件的ruby目录。这次不再需要像我们之前那样将ruby目录打包到jruby.jar中,而只需要创建一个单独的Jar来包含应用程序。毕竟修改现存的Jar看起来并不是一个优雅的方案。我们可以使用同名的工具来创建Jar:
这会创建一个包含我们的类的名为rob.jar的小的jar文件,并且在Manifest中指定ruby/rob.class为主类。这使得我们可以简化调用,因为我们现在可以很简单地指向类,而无需使用命令行。为了执行它,我们要确保rob.jar在classpath上:
Web Start 在我们继续编写JNLP文件前,我们需要对Jars进行签名。很不幸需要这么做,因为JRuby使用了反射,这样就需要更多的许可,你可以参阅JRuby Wiki来了解更多的细节。最简单的方法就是使用JDK自带的keytool来创建一个测试证书。
从现在开始,每次你修改Jars时,必须要更新签名,否则在运行时你就会得到一个SecurityException。
|
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |