提前道歉可能的火线,但这不是我要去的。
我只使用C和C ++在Linux中进行了认真的开发,而且我正在考虑进入Windows。 我一直在做一些阅读和问答,在我看来,使用C#的.NET是为Windows开发面向商业用户的业务应用程序的一种方式。
对我来说,一个重要的考虑是将用户界面集成到桌面,因为这是用户最终与之交互的内容。 例如,是否有可能在Java中重新创buildOffice 2007 GUI的外观,还是仅在.NET中才可能?
我也关心可移植性。 将来,我可能要将应用程序移植到Linux上。 我知道单声道项目,但我想知道是否会更好地使用Java。
简而言之,在开发主要面向Windows的商用,面向用户的业务应用程序时,Java和C#之间的平衡点是什么?
最重要的是“主要用于Windows”。
如果你只需要在Windows上工作,C#可能比Java更好。 有更好的各种视觉风格与Windows融合良好。 它也使得与本地代码(比如Win32 API或COM库)的互操作比Java更容易。 我个人更喜欢它作为一种语言,但这是另一回事。
如果你需要在其他平台上运行,我会认真考虑Java。 尽管Mono有很大的发展势头,但它并没有像Java那样支持.NET。
所以基本上,从我的角度来看,要非常仔细地考虑“可能要移植”的方面 – 这是决定的驱动因素。 一旦你决定做一个端口,如果你的客户有90%是在Windows上,那么这个问题并不重要,在剩下的10%的情况下,它仍然需要工作,并且工作得很好。
首先,不管你的GUI是否在Windows上看起来不错,都将取决于你在GUI设计方面的技能,而不是你选择的语言或工具包。
Windows窗体并不能真正让您使用记录的API完全访问Windows GUI功能。 您必须调用本地API函数,或者至少使用特定于Windows的消息来实现某些效果。 此外,我不认为有内置的方式来访问Office 2007样式的功能区控件。 你需要一个第三方组件。
许多.Net应用程序依靠第三方小部件集来实现漂亮的GUI。 被警告,这些频繁地依赖P / Invoke或其他特定于窗口的功能,因此不能在单声道上工作。 所以如果你真的想要一个跨平台的GUI,.Net不是最好的选择。
您也可以在Windows Presentation Foundation中执行.Net GUI,但单声道不支持。
GTK#在Unix和Windows上运行良好,虽然在Windows上看起来稍微少一些。
Java Swing是非常跨平台的,并且看起来相当不错,具有本地平台的外观和感觉。 你可以下载Netbeans来看看它的行动。
SWT是Java的替代工具包,与Swing相比,其跨平台兼容性略低,但仍然很受欢迎。 Eclipse使用这个工具包,所以下载它看看它在使用中。
既然你已经用C ++过期了,你可以用C ++加Qt来做GUI。 这是一个很好的跨平台GUI库,您可以重新编译代码,以一致的外观在Windows,Mac和Linux上工作。
当然你可以用它做出漂亮的界面,但也许不如MS Office界面(微软混合)那么酷。
您可以将其视为一种选择。 http://www.qtsoftware.com/products/
如果应用程序主要用于Windows – 使用.NET。 如果你对以后的移植很认真 – 避免使用P / Invoke,.NET 2.0以上的功能和第三方的工具包,这些工具包还有丰富的图形用户界面(这些工具不能在Mono上运行)。现在有很好的和商业的.NET跨平台的应用程序,包括很好http://www.codicesoftware.com/xpfront.aspx 塑料scm UI http://img.zgserver.com/c%23/brexplorer04.png和许多其他 – http://www.mono-project。 COM / Companies_Using_Mono
另外,许多开发人员更喜欢VS IDE,而不是Eclipse和C#over Java。 但是,如果你的应用程序主要是Windows – 我敢打赌,使用.NET更好。 特别是如果GUI集成是主要关注的话,因为使Java应用程序看起来像本地Windows仍然是痛苦的。 在.NET下,Ribbon接口的控件很多(包括原生的)。 尝试找适合的外观与Java相同,你会明白我的意思
随着单声道(如果你将保持主要规则)大部分时间你不会有一个移植和嵌入你的应用程序的单声道本身的问题。