我有一个带有基于Web的UI的Java应用程序(使用Vaadin框架)。 我希望用户获取应用程序并在本地计算机上运行。有些用户可能不是很技术,所以需要尽可能简单和万无一失。
可能的解决方案:
使用webapp + Jetty +批处理和shell脚本创建分发版以启动应用程序。 也许包括JRE。 用户故事将是:下载一些ZIP文件,解压缩并运行“start.bat”或“start.sh”。该脚本将启动Jetty,并可能启动带有“http:// localhost:8080 / myapp”URL的Web浏览器。 “安装JRE”或“你的Java主页是什么”或“你的JRE太旧”等等应该没有什么魔力......这会吓到很多非技术人员。 困难在于:如果机器没有JRE怎么办?我想避免使用JRE创建3个不同的分发版(对于Win / Linux / MacOS)。将所有3个JRE打包到同一个分配中似乎是一种过度杀伤。
我看到的另一种方法是使用Java Web Start。我的应用程序将通过JWS下载,Jetty JAR作为依赖项,并在这种情况下启动嵌入式Jetty。 用户故事:单击某个网站上的按钮可在本地启动该应用程序。 我记得5年前在代理服务器后面使用JWS时遇到了问题:无法加载依赖项。不确定它是否还是个问题。从那时起我就没有使用过JWS,所以我对它非常熟悉。 JWS的另一个问题是,它需要人们通过互联网连接来启动应用程序(至少第一次或者每次都是这样),这并不总是可行的(某些组织无法连接到Internet)。 AFAIK,最后一个JWS建议安装JRE,如果它还没有,那么对于最终用户来说这应该很容易。 这可能是因为JWS(?)的潜在问题。
最后,最后一种方法是使用launch4j或InstallShield之类的东西打包所有东西。希望这些程序能够安装JRE,它还没有出现,也可以在无头模式下运行(对于服务器)。
到目前为止,对于大多数用户来说,选项2看起来最简单,假设JWS可以满足我的需要。
所以,我的问题是:
答案 0 :(得分:0)
我更喜欢解决方案1和3的组合。我的意思是:
java -jar myEmbeddedWebApp.jar
”。