WPF, the Windows Presentation Foundation, is a .NET API for building Windows applications. Much has been written about how WPF makes it easier than ever before to create visually impressive applications, but it has other talents which, although less eye catching, make WPF a powerful technology for building front ends. In particular, the .NET framework's strong support for connected systems combined with WPF's approach to data binding make it a compelling choice for presenting information from back-end services written in any technology, such as Java, Ruby, or .NET.
Read
Windows Presentation Foundation as a Rich Client Technology
In this latest InfoQ article we will compare WPF to alternatives such as Ajax/DHTML, Swing, and Flash; we will then look at some scenarios where you might usefully build a WPF front end as a rich client, using back-end services based on Java for example. For other examples of Java and .NET integration, see also infoq.com/j+n.
Community comments
What about the REAL alternative, Eclipse RCP?
by Neil Bartlett,
Re: What about the REAL alternative, Eclipse RCP?
by Przemyslaw Rudzki,
Re: What about the REAL alternative, Eclipse RCP?
by Gabe Cruz,
Re: What about the REAL alternative, Eclipse RCP?
by David Li,
Re: What about the REAL alternative, Eclipse RCP?
by Neil Bartlett,
Re: What about the REAL alternative, Eclipse RCP?
by David Li,
Re: Eclipse RCP vs WPF vs Flex vs Swing
by Scott Delap,
Re: What about the REAL alternative, Eclipse RCP?
by Ted Neward,
WPF/e
by colin bowern,
Re: WPF/e
by Todd Pre,
Macromedia Flex
by Mohsen Mollanoori,
Re: Macromedia Flex
by Todd Pre,
Unified technology alternatives...
by Peter Taps,
What about the REAL alternative, Eclipse RCP?
by Neil Bartlett,
Your message is awaiting moderation. Thank you for participating in the discussion.
Interesting article. But your comments on Swing are a little strange - and also you've ignored the single most obvious alternative to WPF, which is Eclipse RCP.
First off, Swing can do data binding, and so can SWT/JFace, which is the GUI technology used inside Eclipse RCP. In fact, since SWT uses native components, it avoids the problem you describe with Swing (i.e. the fact that Swing components are rendered in Java, so can't make use of the "full capabilities" of the PC - this is debatable about Swing, but definitely not true for SWT).
Also SWT (like Swing) is cross-platform, so you can run on more than just Windows, which as you point out yourself is a big limitation of WPF.
I know that this is an advocacy article, but if you're going to make a comparison with competitive technologies, then you shouldn't list every competitor _except_ the strongest.
Re: What about the REAL alternative, Eclipse RCP?
by Przemyslaw Rudzki,
Your message is awaiting moderation. Thank you for participating in the discussion.
An obvious questions one should ask is "how will the world split between those two i.e. Eclipse RCP and WPF?".
I believe, that we are approaching the moment in which enterprise desktop will be totally ruled by the Eclipse based solutions. This is not only because soon to be released Lotus Hannover - actually not at all. This is because open source products that can be used in the office work have almost reached the level of stability and number of features that are typical to their closed source counterparts. Most of the business apps today run in the browser anyway and I cant really think of any reasons why would companies want to buy the operating system licensed per seat if they can have diskless workstations (centrally managed) with quite good, standard compliant browser totally for free. Well there is one - familiarity, but hey I guess what, SWT comes to the rescue ;-).
Re: What about the REAL alternative, Eclipse RCP?
by David Li,
Your message is awaiting moderation. Thank you for participating in the discussion.
Eclipse RCP is a very good tool for the Java community but it's not an alternative to WPF. WPF is the next generation platform for creating Windows Applications. Eclipse RCP is about writing Eclipse plugins and applications to improve the Eclipse development platform. Apples and oranges.
Swing/SWT are the right competition to WPF but they are more of a competitor to Winform rather than to WPF. You can't achieve the same type/level of presentation possible on WPF on Swing/SWT platform. Can you wrap a form around a 3-D surface for example, the list goes on.
Re: What about the REAL alternative, Eclipse RCP?
by Neil Bartlett,
Your message is awaiting moderation. Thank you for participating in the discussion.
David, I'm afraid you're quite mistaken about what Eclipse RCP is. It is a platform for building any kind of GUI application, not just IDEs. Two examples: the next version of Lotus Notes is an Eclipse RCP application. And in my job, I use Eclipse RCP to build a trading application for a bank.
The mistake is understandable, thanks to the overloaded use of the term "Eclipse". But Microsoft developers should know all about that, with the whole ".Net 3 == WinFX" debacle
;-)
I guess SWT will let you wrap components around a sphere if the Windows API exposes that. Swing is possibly more flexible in that you can apply arbitrary geometric translations, including 3D ones. But my question is: why on Earth would anybody want to do such things? Do users want applications that work, or applications that can wrap themselves into funny shapes? I'm sure it looks really whizzy in demos, but come on, we're just trying to give user applications to help them do their jobs.
Re: What about the REAL alternative, Eclipse RCP?
by David Li,
Your message is awaiting moderation. Thank you for participating in the discussion.
Thanks for clearing up Eclipse RCP for me, I just went to Eclipse RCP webpage and it appeared to me all they talked about was Eclipse plugin, hehe.
In order to do any 3-D graphics stuff, all SWT/Swing needs to do is to provide a wrapper around low level OpenGL/DirectX libraries, that's what WPF is, which is a wrapper around DirectX10. I am not implying that wrapping a 2-D form around a 3D object would be of any value but .NET developers no longer have to know low level opengl/directx libraries to do fancy stuff such as data visualization. Also, a vector-based user-interface is a big improvement for user interface design. Possibilities are endless, for example, SAP developers have been able to create a Windows Media Center like interface that navigates around complex business intelligence data and display them as 3-D charts etc, all that in 4 days of developer marathon competition using WPF. That's what's truly amazing.
Of course, if developers want to stick with old look and feel Winform 1.0/2.0 are still available for developers to do things the old way to do things quick and easy.
Re: Eclipse RCP vs WPF vs Flex vs Swing
by Scott Delap,
Your message is awaiting moderation. Thank you for participating in the discussion.
The >= Win XP SP2 requirement is a consideration. However, the larger issue is deploymen in general. With a corporate application this may be less of an issue since corporation administration services may be available to push out releases to 100's of machines at once. On the consumer side it is the biggest decision. With this in mind I think it may take a while for WPF to take hold in the browser market space. Should I write my app in WPF with has a 20% browser footprint or Flash which has 90%. This is the biggest thing holding back Swing apps and applets right now. The deployment issue trumps any technological ones. No one is willing to write a consumer "I don't know I need this yet app" in Java and take the chance that the average consumer can navigate JRE install hell. How many applets have you viewed that didn't load? Did you ever go back to the page to see if it was fixed?
Changing gears slighting if you are writing a "desktop application" instead of a "browser / internet deployed application" the decision making process becomes more interesting. Eclipse RCP and Swing become viable consumer options because you can bundle Java with the installer. Adobe's Apollo will soon be ready for prime time as well. At this point evaluations can be made much more in terms of the language driving the technology, ease of development etc.
In summary however deployment is question one...
Re: What about the REAL alternative, Eclipse RCP?
by Gabe Cruz,
Your message is awaiting moderation. Thank you for participating in the discussion.
settle down...
WPF/e
by colin bowern,
Your message is awaiting moderation. Thank you for participating in the discussion.
WPF/e is attempting to address the cross-platform support by providing a subset of WPF functionality through a browser-based plug-in. There is a Windows and Mac plug-in and one can probably speculate seeing something appear via the Mono project for Linux if demand sparks up.
Flash was never designed for what it is doing now. Adobe is trying to redesign to compensate. The advantage I see with WPF and WPF/e is that it is fresh with not a lot of legacy to deal with. In addition the separation of code behind and front end layout helps bring design and development together. How many Flash developers really consider malicious input when developing their little flash apps among various other development security issues? Probably not as many as there should be.
Re: WPF/e
by Todd Pre,
Your message is awaiting moderation. Thank you for participating in the discussion.
Since I've been researching cross-platform application development (creating products for the home user, I can't conciously have them not work on Mac OSX), so far my research has taken me to QT, wxWindows, GTK, and XUL -- the Mozilla API that seems to do much of what WPF does. They at least use smiilar XML declaration for the layout. Firefox web browser uses this, so does a pretty slick code editor for dynamic languages called Komodo. Anyway, I'm really interested in this WPF/e technology in what it's going to offer, since I see this as competitor to XUL. While in the past I have enjoyed Winforms and the like, my real interest for the future is writing software for multiple platforms. Has anyone heard a time from for WPF/e or anything about the functionality it will have?
Re: What about the REAL alternative, Eclipse RCP?
by Ted Neward,
Your message is awaiting moderation. Thank you for participating in the discussion.
It really is an apples-to-oranges comparison, given that (a) Eclipse RCP provides a full "component manager" perspective that WPF lacks, and that (b) WPF is far more deeply integrated into the underlying platform (through the .NET stack) than Eclipse RCP is. I don't think anybody's suggesting that Eclipse RCP isn't useful; the goal of the article was to suggest that a .NET/Java marriage isn't quite the scandalous suggestion that it used to be.
Macromedia Flex
by Mohsen Mollanoori,
Your message is awaiting moderation. Thank you for participating in the discussion.
I think you have forgotten the excellent tool Macromedia Flex, Flex has a really good design, It's data binding is really better than other framework, action script is well suited for embedding in such applications(of course better than a strongly typed language like C#), It supports CSS, and it is backed by Java EE at server side. after all clients just need to install Flash Player(<1M) which is available almost everywhere.
I don't want to say that Flex is better than WPF, I just wanted to say that there are other excellent options.
Re: Macromedia Flex
by Todd Pre,
Your message is awaiting moderation. Thank you for participating in the discussion.
Yes, I've recently discovered Adobe's Flex stuff. It's quite similar to WPF, using XML as a visual markup and then codebehind binding. I just read over at Bruce Ekel's blog and interesting article about FLEX as the ultimate client runtime, and there's a link there to a screencast creating a Flex application with a TuboGears(Python) backend, though they cite that Ruby or any server technology could be used: www.artima.com/weblogs/viewpost.jsp?thread=193593. I guess Flash people with naturally navigate towards Flex (and the upcoming Adobe Apollo, which promises as cross-platform runtime for full-blown client apps that install), and .NET will go towards WPF and XAML. What I'm looking for is the quality of runtime. I have strong desires for creating client applications that run everywhere from a common codebase. I still have nightmares about egregious Swing apps and their clunky interfaces from the turn of the century. I know that applications don't have to use solely native windows widgets to perform great on each platfom (Google's Picassa -- which has its own look --is an excellent application that performs great on Windows, but without the Window's "conventions").
Unified technology alternatives...
by Peter Taps,
Your message is awaiting moderation. Thank you for participating in the discussion.
Gentlemen,
My company is in the design phase of a new software product for data modeling. The data can come from a variety of databases, applications (such as Microsoft CRM), Web Services, Excel files, etc.
It does not matter if the application is stand-alone or embedded in the browser. The things that are a must are:
1. Rich user interface - drag-n-drop, high quality graphics rendering, context-sensitive menus, dynamically built menus, etc.
2. Vector-based graphics - resolution independent
3. The application should be able to access local resources such as Excel files, Microsoft Access database, etc.
4. The ability to save/load user-defined models as local files.
The closest application in terms of look-n-feel is probably Microsoft Visio.
Our existing applications were all developed on .NET platform. WPF seems to be a natural evolution. However, I am also considering cross-platform support and I came across this discussion.
Alternate technologies that are being discussed are SWT, Flex and Adobe Apollo.
I did a little research on SWT. I did not see any mention of vector-based graphics paradigm. Did I miss something? Also, does it support our requirements #1 and #3? I guess we would use ActionScript as our programming language.
I did a little research on Flex. However, I am not clear on how I can achieve #1, #3 and #4. Please comment.
I did some research on Adobe Apollo. It talks about the ability for the developer to mix and match various technologies such as HTML, Flash, etc. I did not see a unified programming model. Did I miss something?
I appreciate any comments that you may have.
Regards,
Pete