5

一个项目迫在眉睫,我将编写的一些代码可以部署在潜在客户碰巧拥有的任何硬件上。它是一个将 24/7 全天候运行的业务应用程序,因此我设想大多数主机将是服务器类型的机器,但较小的客户端可能,例如,只有一台简单的 PC。

关于我将要编写的代码的更多细节:

  1. 不会有图形用户界面。

  2. 它需要通过以太网与另一个定制的“黑匣子”设备进行通信。

  3. 它需要与网络上某处的 MySQL 数据库进行通信。

  4. 我没有任何性能问题,因为a)与黑匣子的通信次数很少,大约每秒1次,交换的数据量很小(每次大约1K),b)读取的次数与数据库的 /writes 将很小,大约每分钟 5 次,并且交换的数据量再次很小,并且 c) 需要执行的处理相当简单。

  5. 我所做的一切都不是非常“接近金属”,所以我不想使用太低级的语言。易于开发和易于部署是我的主要优先事项。

  6. 我不希望有一个完美的解决方案,所以我可以忍受这样的事情,例如,Windows 机器的配置文件与 Linux 机器的配置文件稍有不同等。我想避免为每个机器编译软件如果可能的话,主机。

对于您认为最适合哪种开发语言,我会重视您的想法。

干杯,

吉姆

4

8 回答 8

11

我个人会选择像 Python、Perl 或 Ruby 这样体面的脚本语言。所有这些都具有不错的库支持,可以轻松地与本地和远程 MySQL 数据库进行通信,并且非常独立于平台。

于 2009-05-28T09:30:34.037 回答
5

我们需要知道的第一件事是您已经具备哪些语言技能?这可能是您理想选择的一个相当大的决定因素。

如果我这样做,我建议使用 Java 有几个原因:

  1. 它几乎可以在任何地方运行并满足您概述的要求。
  2. 它不是一种深奥的语言,所以会有很多开发人员。
  3. 我已经知道如何编程了!
  4. 可能是所有开发平台中最广泛的库生态系统。

另请注意,如果您更熟悉 Ruby 或 Python,您可以在 JVM 上用另一种语言编写它。

于 2009-05-28T09:32:27.963 回答
3

关于脚本语言与 Java 的对比,我对使用 Java 开发命令行工具感到失望。你不能直接执行它们,你必须(1)编译它们和(2)编写一个shell脚本来执行jar文件,这个脚本可能因平台而异。我推荐 Python,因为它可以在任何地方运行,并且它有一个很棒的 SQL 库mysql-python。该库已准备好在 Windows 和 Linux 上使用。Python 的样板也少得多,您将编写更少的代码行来做同样的事情。

编辑:当我谈到 JAR 是否可执行时,我是在谈论它们是否可以直接在操作系统中执行。当然,如果您的文件管理器设置为这样做,您可以双击它们来运行它们。但是当您在终端窗口中并且想要运行 java 程序时,您必须使用“java -jar myapp.jar”而不是通常的“./myapp.jar”。在 Python 中,只需运行“./myapp.py”,不必担心编译或类路径。

于 2009-05-28T09:40:07.870 回答
3

听起来 Perl 或 Python 完全符合要求。您选择哪一个将取决于构建和支持系统的人员的专业知识。

于 2009-05-28T09:33:11.973 回答
1

Python 或 Java。它们都易于在您提到的服务器环境和桌面环境(即 Linux/Solaris 和 Windows)上部署。

Perl 也是一个不错的选择,但这取决于您对 Perl 的了解程度、维护您的代码的其他人对 Perl 的了解程度以及能够处理 Windows Perl 版本安装的桌面用户数量.

由于 Java 通过 Jython 支持 Python,我自己会使用 JVM 要求,但我个人会一直使用 Java 应用程序来满足您描述的这种系统。

于 2009-05-28T09:42:11.063 回答
1

如果所有平台都是标准 PC(或至少运行 Linux),则应考虑使用 Python 。如果您的版本不存在任何包,您可以自己编译它。此外,您可以轻松地将标准库从不可用和不需要的东西中剥离出来(例如,声音支持)。

Python 不需要大量资源,它易于学习和阅读。

如果你知道 Perl,你可以试试。如果你不是每天都使用 Perl,那就不要。Perl 语法很难记住,一周后,即使您自己编写代码,您也会想知道代码做了什么。

于 2009-05-28T09:30:40.183 回答
1

Perl 可能对您有所帮助,因为它可用于许多平台,您只需从CPAN安装模块即可获得几乎所有功能。

于 2009-05-28T09:32:30.927 回答
0

我会说使用 C 或 C++。它们与平台无关,但您必须针对每个平台进行编译。

或者使用 Java。它在虚拟机中运行,因此是真正的跨平台,而不是像 C 那样的慢级别。

于 2009-05-28T09:30:11.493 回答