Java和C#以及.NET之间的差异[已关闭]

2022-09-04 08:40:31

提前为可能的火焰线道歉,但这不是我想要的。

我只使用C和C++在Linux中做过认真的开发,我希望冒险进入Windows。我一直在阅读和询问,在我看来,使用C#的.NET是为Windows开发面向用户的商业业务应用程序的方法。

对我来说,一个重要的考虑因素是将用户界面集成到桌面中,因为这是用户最终与之交互的内容。例如,是否可以在 Java 中重新创建 Office 2007 GUI 的外观,或者这仅适用于 .NET?

我也担心可移植性。将来,我可能希望将应用程序移植到Linux。我知道mono项目,但我想知道使用Java是否更好。

简而言之,在开发主要针对 Windows 的商业、面向用户的业务应用程序时,Java 和 C# 之间有哪些权衡?


答案 1

最重要的一点是“主要用于Windows”。

如果你只需要在Windows上工作,C#可能比Java好得多。有更好的各种视觉样式,可以与Windows很好地融合在一起。它还使与本机代码(例如Win32 API或COM库的位)的互操作比Java更容易。就个人而言,我更喜欢它作为一种语言,但这是另一回事。

如果你需要在其他平台上运行,我会认真考虑Java。虽然Mono有很大的发展势头,但它与.NET的兼容性不如Java在它支持的各种平台上的兼容性。

因此,基本上,请非常仔细地权衡“可能想要移植”方面 - 从我的角度来看,这是决策的驱动因素。一旦你决定做一个移植,如果你的90%的客户在Windows上,这并不重要 - 对于剩下的10%,它仍然需要工作,并且工作得很好。


答案 2

首先,您的GUI在Windows上是否看起来不错将更多地取决于您的GUI设计技能,而不是您选择的语言或工具包。

Windows Forms并没有真正允许您使用记录的API访问Windows GUI功能。您必须调用本机 API 函数,或者至少使用特定于 Windows 的消息来实现某些效果。另外,我不认为有一种内置的方式来访问 Office 2007 样式的功能区控件。为此,您需要一个第三方组件。

许多 .Net 应用都依赖于第三方小部件集来实现美观的 GUI。请注意,这些经常依赖于P / Invoke或其他特定于Windows的功能,因此不适用于mono。因此,如果您真的想要跨平台GUI,.Net不是最佳选择。

您也可以在 Windows Presentation Foundation 中执行 .Net GUI,但 mono 中同样不支持此功能。

GTK#在Unix和Windows上运行良好,尽管它在Windows上看起来不那么原生。

Java Swing非常跨平台,看起来相当不错,具有平台原生的外观和感觉。您可以下载 Netbeans 以查看其实际效果。

SWT是Java的替代工具包,其跨平台兼容性略低于Swing,但仍然很受欢迎。Eclipse 使用此工具包,因此请下载该工具包以查看其使用情况。


推荐