Pre*_*mbo 6 .net c# c++ java desktop-application
面对您可以自由设计的新应用程序的挑战,组建团队进行开发和管理:
背景:桌面应用程序将控制硬件设备并执行计算,分析和显示它返回的数据.
要求 :(重要性:10 =最重要)
假设:
候选名单(可以添加到):
期待听到您的想法!
Jai*_*ime 11
我的第一选择是C++
pax*_*blo 11
说实话,我会根据您的要求选择Java(带有C的一小部分),原因如下.
Lifetime of language/API/platform/framework- i.e., how future-proof will the investment in this application be?... the product has a long life-cycle (10).这真的取决于你的意思.我真的无法想象Java会消失,仅仅是因为它庞大的安装基础.C或C++也没有消失,但在考虑C#的未来时,我总是想到VB6-to-VB.net迁移问题.
Will need to communicate with devices using USB and/or ethernet (9).虽然Java不是直接理想的,但它有JNI来完成这项艰苦的工作.你仍然需要一个C组件才能做到这一点(并且它会针对每个平台进行更改,但最好是将大部分代码写入一次 - 使用C,您可能会为每个平台更改大部分代码,并且使用C#,它是否真的支持Windows以外的其他平台?).另一个替代方案是JNA,它看起来像"Python ctypes"Java(访问共享库和没有JNI接口层的DLL).
Availability of resources, tutorials, support (9). 所有语言在网络上都有巨大的资源横截面.
Richness and breadth of libraries available (9). 你有Boost for C++和跨平台的GUI,但它们是必须添加的东西 - 没有像Eclipse/Java那样内置于开发环境中.
Unit testing (9). 与下面的工具可用性相同 - 有大量(免费)Eclipse插件可自动执行单元测试.
Availability of engineers with relevant skills (8). 你提到的所有语言都有很多能够胜任工作的人(我喜欢用这个词).
Availability of quality IDE/tools (8).这是Eclipse.在我看来,没有两种方式.它的插件数量确实很大.NetBeans的可能外观漂亮,但我宁愿比外观的功能(等会我的妻子,所以这是幸运:-).
Cost of IDE/tools (7). Eclipse是免费的.
The application will need to be able to interpret a scripting language (6). 最后我听说,Java现在包含JavaScript作为内置函数以及开发人员添加自己的脚本引擎的能力.
Cross-platform (3). C#,没有(尽管单的存在,我依然看到它会下降相抵触的MS1天风险,不会有很多是开源软件世界将在它的工作,因为它MS协会).
我会用C#来解决这个问题,原因如下:
unsafe块需要,可直接访问内存;老实说,我认为C++桌面应用程序的时代已经过去了.在开发过程中,它们太容易出错并且价格昂贵(相比之下).
C#/ .Net解决方案唯一缺少的是跨平台(Mono尽管如此).我不知道你有多大的优惠,但你只把它列为3.