【问题标题】:How to create large deployable programs with multiple languages?如何创建具有多种语言的大型可部署程序?
【发布时间】:2011-03-19 09:49:24
【问题描述】:

大家好,这是我在 stackoverflow 上的帖子。

我通常是一个潜伏者,在不发布的情况下找到我需要的一切,但在试图描绘它是如何工作的时候画了一些空白。如果有人能提供一些见解,我将不胜感激。

所以我了解软件开发周期并且对代码有相当的了解 (c++和Java,还有visual basic,我是CIS专业的,去年辅修了CS)。我可以使用 Java 在 elipse 中编写一些程序,甚至可以使用 Java 在 eclipse 中制作一些基本的 GUI 组件。

现在到我的 3 部分问题:我知道可以从几个 .java 文件制作一个 .jar 并分发它,但是在考虑一个常见的程序时,比如说 yahoo messenger(仅作为一个例子),我来到了以下三个部分问题:

首先,您是否可以使用 Java 在 Eclipse 中编写类似 yahoo messenger 的程序,或者您是否需要其他工具(如其他语言和其他开发环境),该项目从头到尾是如何进行的? (我想我有点迷失在这里,因为我只写了命令行和简单的 GUI 应用程序)。

第二,如果说使用另一种语言在 yahoo messenger 中创建功能更容易,那么如何用一种以上的语言编写一个程序?例如,假设您想用 python 或 c++ 编写一些代码,而您的大部分代码都是用 Java 编写的,即您的主要方法是 java 并且您正在使用 JVM 进行编译。 (假设你不能只在 java 程序中粘贴 python 或 c++ 代码)我做了一些谷歌搜索,看到了一些关于链接编译器和包含本机代码以在 Java 项目中包含其他语言代码的事情。如果解释太长,也可以接受其他阅读材料的链接。

第三 - 部署如何工作?假设我已经完成了为我的程序编写代码并希望将其转换为 .exe(适用于 Windows 用户)并将其粘贴在我的网站上供人们下载。我知道windows内置了一个iexpress实用程序来创建.exe。除了分发 .jar 之外,如何将源代码转换为 exe?再次感谢您的所有投入和时间。我是一个初学者,并试图围绕这些概念来思考。答案可以在技术领域提供,或者只是概念性的,非常感谢。

-马克

【问题讨论】:

  • 这个问题太宽泛了。尝试提出更具体的问题。至少分别提出单独的问题。
  • 我知道它很宽泛而且很笼统。我只是希望得到概念性的答案,如“应用程序用一种以上的语言编写并且有标准程序是很常见的。___ 是一个更详细解释它的链接。

标签: java eclipse deployment executable


【解决方案1】:

1) 在大多数情况下,您可以在不需要任何其他编程语言的情况下用 java 编写程序。在极少数情况下,您需要从 java 调用 dll 以与某些专有程序交互,为此您需要使用 JNI 和 C 或 C++。使用多种语言的一个可能更常见的情况是为您的应用程序添加脚本功能。例如,我的公司提供了一个服务器/客户端应用程序,用户可以使用 Groovy 编写脚本,但服务器和富客户端本身仅用 Java 编写。

2) java 与另一种编程语言的集成依赖于另一种语言。集成 Groovy 很容易,我认为集成 Python(使用 JPython)或 Ruby(使用 JRuby)相当容易。但这是一种努力(更不用说用不同语言编程的精神压力了),除非有特定要求,否则我不建议这样做。

3) 与往常一样,有多种选择。请参阅how-can-i-convert-my-java-program-to-an-exe-file 以创建 Windows 可执行文件。或者您可以使用例如创建 Windows 安装程序。国家安全情报局。或者使用 Java Web Start。

如果这个问题背后的意图是了解一些大型 Java 富客户端(桌面)应用程序是如何编写和部署的,我推荐Eclipse RCP book。本书将引导您使用 Eclipse RCP 框架开发和部署 XMPP/Jabber Messenger 客户端。请注意,虽然没有一种真正的方法可以创建大型应用程序,并且其他 java 应用程序框架会以不同的方式做事。

【讨论】:

  • 詹斯,感谢您的澄清。您使其中一些主题更容易理解。如何将java程序转换为exe的线程非常好。我在 google 上找到了一篇关于它的好文章,但在发布之前应该查看论坛中的确切主题。如果我想这样做,NSIS 看起来像是一个很好的实用程序,可以在 exe 中部署。我在亚马逊上找到了这本书并购买了它。再次感谢您回答我的问题。
【解决方案2】:
  1. 有几个 IM 客户端是用 Java 编写的,不过我猜测主流客户端主要是用 C、C++ 或(在 Mac 上)Objective-C 编写的。
  2. 用多种语言编写一个程序有许多挑战,挑战的性质因您要使用的语言组合而异。在许多情况下,结合两种以上的语言可能不会有太多的运气。一组阻抗问题已经够糟糕了,三组几乎是必然的灾难。
    • 您可以通过将单个应用程序拆分到多个程序中来避免这些问题,每个程序都用一种语言编写并通过某种 IPC 机制与其他程序进行通信。
  3. 创建“exe”也是一个非常特定于语言的问题。例如,Java、C#、C/C++ 和 Python 都有完全不同的部署故事。

【讨论】:

  • 马塞洛,感谢您的洞察力。这有助于解决我在查看大型应用程序时遇到的一些问题。就“跨多个程序的单个应用程序”而言,这是否意味着说 yahoo messenger 中的聊天功能是用 c 编写的,而 avatar 的东西是用 java 编写的,它们是不同的程序或 yahoo messenger 的一部分,但仍然是一部分相同的应用程序。我阅读了 IPC 的 wiki,并了解到有一些工具旨在交错或连接以不同语言编写的应用程序的各个部分。谢谢。
  • @Kram:是的,就是这个想法。直到最近它才成为一种常见的方法,像谷歌浏览器这样的应用程序将每个 http 域分成自己的进程(出于安全和稳定性的原因,在这种情况下,不是语言互操作)。
【解决方案3】:

假设我已经完成了我的程序代码并希望将其转换为 .exe(适用于 Windows 用户)并将其粘贴在我的网站上供人们下载。

在那种情况下,我会说你很愚蠢。 ;)

Java Web Start 是部署基于 Java 的富客户端应用程序的更好选择。从一个网站。 JWS 适用于任何使用 Java 的平台。

【讨论】:

  • 安德鲁,哈哈,我想我有点傻。我在 google 上找到了一篇关于通过 Web 或作为可执行 .jar 部署 Java 应用程序的各种不同方法的好文章,这些似乎是首选方法。我还问了我的一位教授,他同意你的网络启动方法。谢谢。
猜你喜欢
  • 2012-09-17
  • 1970-01-01
  • 2021-10-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多