桌面应用程序使用Java Swing还是Windows Forms?

12

我正在编写一个客户端应用程序,希望实现跨平台,但基于以下原因可能会选择仅支持Windows:

  • 我在C#方面比Java更强(尽管我有几年的企业级Java经验)
  • 我没有使用过Windows Forms或Java Swing,只是为每个应用编写了一些玩具应用程序,但我更熟悉Windows Forms而不是Swing。
  • 我对Swing应用程序的性能(与Windows Forms相比)表示担忧,但我想知道在过去的几年中情况是否有所改善。
  • 我完全开放地开发任何平台......没有MS或Java傲慢态度。事实上,如果您想告诉我在Qt、wxWidgets或其他某些东西中进行开发,我也会听取意见!

如果你从Windows Forms转到Swing,最大的障碍是什么?

最初的跨平台吸引力最终是否值得,或者一个更快、不太灵活的仅支持Windows的应用程序会更好?

如果你使用Java Swing,哪个IDE适合拖放表单布局?


2
这可能有助于回答“如果你们中的任何人从Windows Forms转换到Swing,最大的障碍是什么?”问题:https://dev59.com/YnRB5IYBdhLWcg3wCjgV - SwDevMan81
1
Swing性能差的说法是一个谬论。当一个开发者不懂Swing时,他所编写的Swing GUI才会有性能问题。至于你的问题,Swing需要很长时间来适应(即了解所有Swing陷阱及如何绕过它们)。 - jfpoilpret
@jfpoilpret 老帖子,但这绝对不是一个神话,每当您调整甚至是空的JFrame大小时,CPU使用率会飙升。 - FINDarkside
8个回答

14

看起来你想听的是:“不要使用Swing,继续使用Winforms”,所以这里是:不要使用Swing。如果你感觉用C#更舒服,那我认为这就是你选择它的唯一原因。

Swing应用程序很快,整个平台也足够好,但需要一些时间来学习它。

如果你决定尝试一下,我建议使用Netbeas或IntellJ Idea,两者都有出色的GUI构建器。

但是确实,还是继续使用C#吧。


6

下载Netbeans并尝试在其中制作一个简单的Swing应用程序。GUI编辑器非常好用和强大,使得避免手动设计变得容易。然后,您可以在Netbeans指示您放置代码片段的位置添加功能。

我在一天内从头开始制作了一个简单的“将Excel表格读入JTable并将JTable上传到数据库”的GUI应用程序。我原本计划只在Netbeans中做GUI,然后将其导入Eclipse并在那里完成繁重的工作,但是保持在Netbeans中要容易得多。

试试吧,您可能会喜欢它。

编辑:关于Swing的速度:已经有很多改进,基本上它可以非常快速和流畅。通常问题在于程序员创建响应式的代码供Swing调用以执行其任务,并且如果遇到该问题,则需要解决一些技术问题(基本上在后台线程上执行繁重的任务)。


5
我在银行使用Netbeans RCP平台开发复杂的低延迟GUI。有很多人们使用Netbeans。我也与WinForm开发人员合作。
WinForm团队拥有一些极其丰富和高性能/低资源占用的网格和小部件,特别是商业产品如Infragistics。Netbeans应用程序可能具有较大的资源占用量,因此它确实需要成为客户计算资源的主要消耗对象。
如果需要精简、界面丰富或快速,则Winforms是最好的选择。
如果您想要一个大型API库来构建和维护大型复杂的GUI代码库,并拥有完全可移植技术堆栈的自由,那么我会每次都选择Java。
话虽如此,Netbeans IDE令人震惊!如果您决定使用它,建议您访问Geertjan's博客。
在使用Matisse Graphics编辑器时,请定期将代码签入分支,它经常出现问题并破坏布局,无法撤消。底层RCP平台依赖项处理-如果让你陷入困境-可能具有挑战性,但仍然比OSGi更好!

祝你好运,GUI开发并不像人们说的那么容易!


2

1

当然,这是一个品味问题,但对于仅限于Windows环境的应用程序我更喜欢使用Windows Forms(理论上可以通过Mono尝试在其他平台上运行)或WPF(在我看来,这是针对丰富客户端应用程序的最佳选择)。 我看到了很多非常丑陋的Swing应用程序,它们是跨平台的。 实际上,通过一些额外的工作,您可以在每个平台上获得几乎本地的外观。 您可以使用NetBeans进行Swing的拖放。


1

其他答案没有涉及的一个问题是,应用程序的最终用户期望什么?他们需要跨平台应用程序吗?

我快速查看了Swing组件视觉指南(Windows外观),所有组件似乎都具有Windows XP样式,如果您的软件将在Windows Vista / 7上运行,则可能会出现问题(也就是说,当在Vista / 7下运行时,Swing库可能会重新主题化自己,但我找不到任何说明)。


0

C# 真的很厉害...如果你想快速开发应用程序,C# (.NET) 是毋庸置疑的选择。例如,你可以将 datagrid 的选项(灵活性)与 JTable 的贫弱相比较,我确信你不会感到意外。


-1

我看到有人说使用WinForms可以快速开发,但许多人可能没有意识到的是,您无法将模型视图控制设计模式或任何设计模式应用于WinForms。Netbeans也不允许使用设计模式并且它隐藏了代码。如果您使用Java,请不要使用GUI构建器,手动输入。我使用过这两种语言,喜欢Swing更多,因为我可以按照自己的方式对GUI代码进行建模。Winforms不会给你这种自由。而且,Java拥有更多的库。我花了一个月的时间通过我购买的Udemy视频以专业水平学习Swing开发,建议看视频。


我喜欢使用带有Windowsbuilder的Eclipse,对Swing来说非常好。 - John Cableur

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接