tags:

views:

695

answers:

7

There is a group here using Java, server-side and client-side, with Swing for the client UIs. I plan to suggest that they change the front end to C# and WinForms or WPF, but I want to come prepared with:

  1. A list of benefits to be had from moving to Winforms / WPF from Swing,
  2. A list of Swing benefits that might get thrown back at me over using WinForms / WPF (the only one I can think of off the top of my head is the ability to share more code across server and client due to being the same language - given the fact that the server side will stay Java).
+1  A: 
  1. Performace & startup time. You just can't compare Swing to Winforms/WPF in the performace/startup time aspect.

  2. Really don't know... if you have a high qualified Java team that does not know .Net APIs, stick to Swing, otherwise, don't think twice... Use Winforms. About "the ability to share more code across server and client due to being the same language", don't bother... there is zillions of ways to make two different applications from different languages that each other.

razenha
+1  A: 

1) Swing stinks. (Almost just kidding, but really, in my opinion, it's pretty awful.) Even if you're going to develop in Java, use SWT or some other decent looking/behaving toolkit. Moving to Windows Forms or WPF will (potentially) give you a lot more powerful user interface options on Windows, but only on Windows.

2) You're tying yourself to Windows, and losing the cross platform nature of Java+Swing. You're potentially losing some ability for shared code. You're having to redevelop in non-java, which may mean a lack of experience/training/knowledge on the part of other developers on your team.

Reed Copsey
A: 

The performance of the GUI should be faster with a .NET winform app compared to a Swing app running on Windows. It's not really a huge difference at this point for most apps though, computers these days can run Java pretty fast.

Either way you would still be talking to the Java backend code. Depending on what they've done you may be better off just sticking with the Swing front end.

If it's an option you should think about a web front end. If it can be made in XHTML/Javascript/CSS, you would retain the cross platform benefits that the Java GUI gives you.

But really, you need to think about why you want to change to Winforms instead of Java. Is there something about the existing Java app that you don't like that would be better and worth the cost of redeveloping in another language? Is it something that can be fixed without a full rewrite?

A: 

Do you have any custom components which would be a pain to migrate from Swing to .net? Do you have staff that are expert at developing custom Swing components (Java2D expertise, familiarity with Swings input subsystem etc.) who know little about WinForm custom development?

If the answer either to these questions is yes then you should probably stick with Swing.

Tom Martin
A: 

1) It is easier to make a Winforms app feel like a Windows app. Java applications usually feel "funny" if you aren't careful.

2) Everything you are programming is using Java. Having one component that is not Java means that the project is harder to work with. Overall maintenance will also be more annoying. Currently, everyone on your project team needs to know Java only in order to be able to work with anyone else on your project team. From a recruiting and maintainability perspective, this is convenient. Personally, I be against switching the GUI unless you were getting some other benefit out of it.

You have not provided any reasons why you plan to make your proposal.

Brian
A: 

If using windows .net is the better choice because yo have: 1. Good designer in Visual studio, good documentation and examples 2. Better startup, CPU and memory usage at runtime: see http://www.codeproject.com/KB/dotnet/RuntimePerformance.aspx

If using Linux, you have Mono versus Java, but it is more complicated to make a comparison there due to the large number of distros.

dmihailescu
A: 

I'll preface this by saying I'm a .net developer so the following might be heretical.

It sounds like your company already has a significant investment in java. People, software licenses, and code base.

If my company (or group) was primarily java and we were successful in meeting business demands, then quite frankly there would be no way I'd switch.

The only way I'd consider switching technology stacks is if the stack we were on was truly dead. Meaning that it was very difficult to find programmers for, it could no longer meet business needs, we had a high number of failed projects, and/or the language itself was no longer evolving.

Switching just because someone prefers one language over another is non-starter and ultimately wouldn't make any business sense. The very act of a change like that will mean that the company is going to lose those people who are still committed to the old stack. Replacing people is extremely expensive just in terms of knowledge lost.

Another thing, if you don't already know what the hard reasons are for switching platforms then you shouldn't even try to encourage it. Take the accountants point of view, what really would this provide?

Chris Lively