哪些语言可用于开发跨平台、便携式应用程序?
哪些语言可用于开发跨平台、便携式应用程序?
(对于那些对问题的模糊性发表评论的人,我需要这个,因为我想为可能需要在没有运行时的大学系统(如 Air)上使用该工具的研究人员开发一个数据库驱动的语料库分析工具安装,并且还阻止用户安装任何东西。)
这似乎可以用 JAVA 实现,但说实话,我宁愿避免 JAVA,因为它太冗长了(我通常用 Perl 和 Python 编程)。
Adobe Air 看起来很有趣(还有 Silverlight?),但似乎只能将 Air 运行时安装程序与应用程序打包到一个包中进行部署。您可以使用分发工具为 Adobe Air 运行时创建静默安装,但我找不到使 Air 应用程序作为真正的便携式应用程序运行的方法(当尚未安装 Air Runtime 时)。
我尝试过 Python(使用 Qt)和 Perl(使用 Tk/Tkx),并且可以创建跨平台应用程序,这些应用程序可以打包成自解压可执行文件(在 Windows 上),将内容复制到某个临时文件夹并从那里运行应用程序。这些是我现在拥有的最佳选择,因为用户不需要知道发生了什么。他们只需双击可执行文件,程序就会运行(无需安装步骤)。但是,让 Qt 在 OS X 上运行相当困难,而且 Tk 对于现代 GUI 开发来说似乎限制太多。
我还尝试过 Real Studio(以前称为 Real Basic)和 Runrev Live Code(以前称为 Runtime Revolution)。 Real Studio 生成的正是我想要的,但该语言存在一些严重的错误,在我的情况下,这些错误使开发变得不可能。 Live Code 使用的语言对于任何普通开发人员来说都非常不直观(他们说它很容易学习!),而且它的功能也相当有限。
我已经研究这个问题很长时间了。任何建议都将非常受欢迎。
==更新==
我更多地研究了这个问题,现在已经弄清楚如何使用 7zip SFX 包 包含我的代码和 Java JRE。
在 Python 方面,Qt 和 Pyside 现在可以更轻松地让 Python + Qt 应用程序在 Windows、Linux 和 OS X 上运行。这些可以用 PyInstaller 工具也适用于所有三个平台。
What languages can be used to develop cross-platform, portable apps?
(For those who commented on the vagueness of the question, I need this because I want to develop a database-driven corpus analysis tool for researchers who might need to use the tool on a university system which doesn't have runtimes (like Air) installed, and also prevent users from installing anything at all.)
It seems possible with JAVA, but to be honest, I'd prefer to avoid JAVA because it is so verbose (I usually program in Perl and Python).
Adobe Air looks very interesting (and Silverlight?), but it seems that you can only wrap up the Air runtime installer into a package with the app for deployment. You can create a silent install for the Adobe Air runtime with the distribution tools, but I can't find a way to make an Air app run as a truly portable app (when the Air Runtime is not already installed).
I have tried Python (with Qt) and Perl (with Tk/Tkx) and can create cross platform apps that can be packaged into a self-extracting executable (on Windows) that copies the contents to some temporary folder and runs the app from there. These are the best options I have now, because the user doesn't need to know what's going on. They just double click the executable and the program runs (with no install step). But, getting Qt working on OS X is quite difficult, and Tk seems too limiting for modern GUI development.
I have also tried Real Studio (previously called Real Basic) and Runrev Live Code (previously called Runtime Revolution). Real Studio produces exactly what I want, but the language has some critical bugs that make development, in my case, impossible. Live Code uses a quite unintuitive language for any regular developer (they say it's easy to learn!), and it's also rather limited in functions.
I have been investigating this problem for a long time. Any advice would be very welcome.
==Update==
I've looked into the problem more and I have now figured out how to generate completely standalone (portable) apps using a 7zip SFX package containing my code and the Java JRE.
On the Python front, rapid developments on Qt and Pyside now make it easier to get Python + Qt applications working on Windows, Linux, and OS X. These can be wrapped with the PyInstaller tool that also works on all three platforms.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
如果 JVM 对您有吸引力(例如,因为跨平台 UI),那么除了 Java 之外您还有其他选择,包括:
上述所有内容都可以与现有的 Java 库很好地互操作。所有这些都将允许您直接使用 Swing UI 组件。所有这些都将在有 JVM 的地方运行。
If the JVM is appealing to you (e.g., because of the cross-platform UI), then you have other choices besides Java, including:
All of the above will interoperate nicely with existing Java libraries. All will allow you to use Swing UI components directly. All will run anywhere there's a JVM.
C 用于开发可移植应用程序。
在GCC(GNU编译器集合)中,C可用于多种平台,并且GCC还支持交叉编译。
C is used for developing portable applications.
In GCC, the GNU Compiler Collection, C is available for a variety of platforms, and GCC also supports cross compiling.
JavaScript。 :) 当然,然后浏览器依赖性代替平台依赖性......
JavaScript. :) Of course, then browser-dependency comes instead of platform-dependency...