可下载应用程序中的不同语言

时间:2014-06-11 06:31:40

标签: java c

我希望你对这个想法对你来说是否合适有意见,如果没有,你会做什么。

我的项目的目标是制作一个可下载的应用程序,让用户输入实验数据的文本文件,然后对数据进行计算,以找到统计值,如平均值,标准差,斜率和截距。线性回归线。这些显示在屏幕上,以及数据的散点图或直方图。

目前,我的计划是使用Swing库编写用户在Java中交互的接口,以及在C中执行计算的部分。我这样做的原因是Java适用于可以使用Java的GUI可以在任何机器上使用,C在执行大型计算时更快。我的项目中的一个关键步骤是使用MPICH库并行化代码,以便我的程序可以执行诸如制作多组随机数据并分析它们之类的事情。 Java和C代码将通过输入和输出文本文件相互通信,我被告知我需要做一些shell脚本来将两者连接在一起。通过这样做,我希望Java代码能够为C代码提供原始数据的文本文件,C代码将进行计算并以文本文件的形式报告统计值,然后Java代码将读取此文本文件以向用户呈现数据分析的结果。

此可下载应用程序的重要特征是:

  1. 有一个非常清晰,易于使用的界面
  2. 可以轻松下载和使用,最好是在各种计算机上(Windows,Mac,Linux)
  3. 利用并行化来更快地进行大计算
  4. 我对这些语言或环境不是很了解,我对我的计划有些怀疑。

    1. 我知道Java程序可以在jar文件中轻松下载,但是如果我使用Java和C,我的程序是否仍然可以轻松下载并且可以在所有使用shell脚本的机器上使用?
    2. 最好是用一种语言完成所有编码并保留上面列出的重要特征吗?如果是这样的话,与使用两种语言相比,我会失去什么呢?
    3. 感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

请再次阅读您自己帖子中的引文:

第一

  

我对这些语言知之甚少

可是:

  

Java适用于GUI

  

Java适用于GUI

所以,你并不真正了解Java和C,但你可以说Java对GUI有好处,而C则更快。但这两种说法都可能是错误的。

在过去的15年中,人们倾向于避免在java中实现SWING UI和桌面应用程序。他们通常尝试将计算移动到服务器并使用基于Web的UI控制流程。 (如果您确实有大量输入数据集,例如数十或数百GB,则这可能不适用于您的用例)。

在同一时期,JVM在性能方面得到了显着改善,因此假设C代码比用java编写的相同代码运行得更快可能是不正确的。

所以,可能你应该在java中实现all。

如果无法将计算移动到服务器,则可以实现Java应用程序并使用JNLP运行它。

然而,在您开始之前,我是否可以建议您询问其他设计/架构问题,其中包含有关输入/输出数据量和计算性质的更多详细信息?

答案 1 :(得分:0)

让我们先解决你的特点。

  1. 这是值得商榷的,但我会声称,虽然某些语言使得用户界面更加简洁,但可以通过适当的图书馆支持在任何流行语言中创建良好的用户界面。
  2. 可移植性 - 如果您计划以二进制形式分发而不是以源代码形式分发,那么Java将获胜。如果您计划以 source 形式分发,那么C是可能的,但您必须提供在每个平台上构建应用程序的方法,对于每个平台,这通常是不同的。< / LI>
  3. 通过并行计算实现性能。对于您的应用程序(CPU绑定),C可能会更快,但差异可能不足以让您关心。
  4. 现在让我们谈谈你的疑惑。

    1. 这在上面的(2)中提到。
    2. 单语言程序通常更易于维护和分发。不处理两种语言会让你失去很多头痛。如果您只选择Java,您可能也会失去一些性能,但如果您只选择C vs C和Java,则不会失去可移植性,因为C部分已经不可移植。