As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 10 years ago.
I'm planning to write a Windows app to help myself with some exploratory testing tasks (note taking, data generation, defect logging) and I've got stuck at the early stage of choosing a framework/language. My sole experience is with web development and from what I can see, WinForms, WPF, Silverlight, Swing etc are all simultaneously obsolete and thriving depending on who you ask.
While my main aim is to create the app, obviously I'd like to learn something useful while doing so rather than picking up skills with something that's never going to be seen on a project at work. Which Java or C# frameworks would people recommend learning?
Note: consider when this answer was posted (2012). Since then, things have changed a bit, for example Silverlight has been deprecated.
Native Applications
For employment:
Well, nowadays most companies (at least most companies from Oman and the UAE, where I live) are slowly migrating to the cloud. However there are still some opportunities for native app development. The most demanding framework nowadays, is, ( no.. not WPF ), it's Windows Forms!
Why plain old Windows Forms instead of the awesome WPF? One reason, legacy apps. Nowadays most companies only start small scale GUI Application projects, mainly Business applications. For that, WPF will be very expensive since they already have a work-force experienced in Windows Forms, and a lot of legacy code, however for WPF they will have to create a new code-base, and that's pretty risky. So the best thing to keep you employed is Windows Forms.
For new projects: However, if by 'worth learning', you mean, new, ambitious and glamorous. Then WPF may be the best choice for you. It depends on what your requirements are, really.
The Cloud
Now, for the cloud. Java FX and Silverlight are both currently head to head. However Java FX may have an edge since it supports a greater number of platforms. But then again, Silverlight has all the power and resources of Microsoft behind it, and it's ideal for Windows Phone development.
Comparison
For a comparison, here's what you get by each toolkit:
Windows Presentation Foundation:
The power and resources of Microsoft
Ideal for creating new Desktop Applications
Eye candy
Awesome API
XAML, best way to separate design from logic
Create Apps for the Cloud (but they only work on Windows with .NET though)
Windows Phone can run a subset of WPF
Windows Forms:
Used to possess the power and resources of Microsoft, now WPF has that
Ideal for maintaining legacy applications
A well-trained workforce, if you're an entrepreneur
Pretty mature API
Supports more platforms than WPF (through Mono)
Java FX:
Create Apps for the Cloud
Backed by Oracle
Pretty nice API
Cross-platform, runs on most PCs, smart phones are a problem.
Silverlight:
Create Apps for the Cloud
Backed by Microsoft
Pretty awesome API
XAML
Cross-platform, runs on Mac and PC, runs on Windows Phone.
GTK#:
Cross-platform, runs on most PCs, runs on no smart phone.
Backed by the Open-Source world
Endorsed by Mono
Ideal for creating Apps for Gnome.
Swing:
Cross-platforms, runs on most PCs, smart phones are a problem.
Pretty mature
Ideal for creating 2D games, using Java2D
Conclusion
As you say:
While my main aim is to create the app, obviously I'd like to learn something useful while doing so rather than picking up skills with something that's never going to be seen on a project at work.
Well, the frameworks you are most likely to see at work (if you don't for mainstream companies like Microsoft, Oracle, Google etc. ) are Windows Forms and WPF. At least that's what most companies use here. So those are what I recommend. JavaFX and Silverlight also look like they have potential and may be used in the near future.
WPF. Best support for Windows. BTW, it's not obsolete.
One option for you might be to create your application as HTML+Javascript and run it in your desktop application by embedding a browser engine (IE or something else). If you need native APIs, there are mechanisms to make these available to browser's Javascript code.
Java FX 2.0 seems very promising and is now live if swing looks obsolete to you. Note that it has little in common with previous versions. See for example this short comparison with swing. And oracle said they plan to open the source.
Now it is fairly new so unlikely to be used in existing applications.
Related
Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 8 years ago.
Improve this question
I have to do a web application with the framework .Net. I find three ways to build this application:
Sharepoint
Silverlight
Asp .Net
I need to make a decision and choose one of them . So i'd like to know
What are the big differences between them?
In which cases, i have to choose one not the others?
Can we make a comparison between them on several criterias(flexibility, maintenability...)?
Thanks,
It's hard to recommend one over the other without knowing what your application is.
Choosing Technology choice can be judged by many parameters as below,
· User Experience
· Infrastructure
· Security
· Performance
· Architecture
· People
· Strategic
· Cost
· License
SilverLight
One thing you have to understand 1st and foremost is that Silverlight requires the client to download a small Plugin (just like Flash does as well) to enable all that rich-client capability and the ability to run managed code on the client. If you are in an environment where either distribution or downloading of the plugin is not possible then Silverlight is out as an option.
ASP.Net
ASP.NET on the other hand is the old trusty web platform that has been around since .NET 1.0. And now with the option between web forms and ASP.NET MVC you have many Architectural options available for building your ASP.NET app. Combine technologies like WCF into the mix, and you have serious potential for writing and creating Enterprise Applications.
If you want or need the rich UI abilities of Silverlight, then make a few controls and add them to your ASP.NET pages to give you the best of both technologies without being too heavily invested in Silverlight.
My Recommendation
If I was in your position I would probably go with an ASP.NET application (webforms or MVC is your choice.).
I say this not because ASP.NET is superior and Silverlight can't make Enterprise Apps , but because it is the safer and more reliable choice I think given what our future looks like in .NET.
I can comment largely on the general http/javascript vs. Silverlight decision, as I have no experience developing in Sharepoint.
Browser compatibility
Html/javascript used to be notorious for incompatibilities, and although this has improved a lot, Silverlight is still better in that area.
The plugin behaves mostly the same in all browsers. I use Chrome myself and my customers usually use Internet Explorer, some Firefox. In the last few years I had not one problem due to a browser incompatibility - and I know how much web developers used to fight with those. This is probably one of the main strengths, if Silverlight runs on a platform, it runs the same as on all others.
There is one subtle and not well-known caveat (bug) though, but it's not depending on the browser. There is a certain kind of memory leak that can occur on tablet devices, see this stackoverflow answer. It's the only time I experienced a Silverlight application to be dependent on an environmental factor.
Operating system compatibility
This is a major point for html/javascript, as all major browsers are ported to all major operating systems and platforms.
Obviously you are going to run Windows-only with Silverlight. There is a mac implementation, but you should test early because there Silverlight might actually do behave differently in many cases. I can't say much to how serious that implementation actually is.
Much more disappointing is Microsoft's policy on their own platform: The WinRT tablet (the non-professional, ARM-based one) doesn't support Silverlight, and of course the metro-IE doesn't either (infamously).
In a nutshell, Silverlight is still a viable option in cases where you target a corporate environment where you can estimate the hardware your customers will have, as well as in those cases where there are few technical alternatives - such as when you need a good adaptive video streaming technology.
Third party designs
One thing where html-based solutions can shine is design: Although I love Expression Blend, my love doesn't seem to be shared by most web designers. The amount of html/css templates you can find for html, even for line-of-business applications, is amazing. For Silverlight (and WPF), there is almost nothing at all. In fact I don't know a single beautiful design for Silverlight that hasn't been created by Microsoft themselves - and they too have created ugly ones as well.
As someone who loves Silverlight - the ability to just pick and buy a really beautiful theme for my next app is probably the thing I'm most envious of when I'm looking at the html world, much more so even than platform support.
Today I'd suggest html as a default unless the one of the following points apply:
You are already familiar with Silverlight (or your team is).
You need to do complex rich-text editing capabilities that go beyond an html editor.
You need to access COM interfaces or do P/Invoke on Windows (although you can also supplement a html/javascript client with Silverlight for that)
You want to provide the ability to "install" an application (out-of-browser mode).
You have complex business logic that you want to execute on the server and the client alike, and you want to write that in C# rather than Javascript.
If any of these things hold, Silverlight might be an option (as well as WPF).
As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 9 years ago.
I have been programming in java for a couple of years now. Not long ago i decided that it was time to make a change and learn C#.
Now since it both visual studio and C# is new to me i have decided that since i have to learn it anyway i might learn the newest tools there is.
However i am unable to find out what GUI liberay to use. my first search indicated that WPF is the newest "lib" for creating microsoft UI many other threads gave an indication of that this might not be the case.
Therefore i am asking you guys what is the newest UI "lib" for C# and what would you advice me to use?
As pointed out by Giedrius, either Windows Forms or WPF.
Personally, i would start with Forms for a few weeks, get to know the environment, then move on to WPF and the lovely world of XAML.
WPF is the right technology if you are targeting users with good machines. It leverage the power of graphics card and supports vector graphics. You will get good development speed with the XAML system and much more
If you are looking for any third party controls you can evaluate Infrajistics or Telerik.But depends on your UI requirements.
In terms of newest technologies then WPF is certainly the one I'd recommend you learn, but there is quite a level of interoperability between WPF and WinForms, i.e. you can host WinForm controls in WPF and (I think) vice versa.
One thing to be aware of is that WPF is a completely different beast to winforms - you can still do the usual drag and drop, but for fancy stuff you need to be changing the XAML and that can take some getting your head around.
Edit - it's worth taking the effort to learn WPF though because once you have then you'll be producing rich interfaces with ease.
For anything prior to Windows 8 then the latest is WPF. As of Windows 8 you have Metro (name changed I know) but then you could still use your newly aquired XAML skills (picked up from WPF) or start getting into HTML 5 and CSS 3 which would also stand you in good stead for web-based applications.
Win Forms is older than WPF but still well loved / established and can be useful in places. Like most things, choose the right tool for the job.
There are two main flavors of GUI (not counting web): WPF and Windows Forms. WPF is much more recent and if you have no experience on Windows Forms, WPF may be recommended GUI alternative.
Now WPF may have several "flavours" - it is kind of different in abilities in desktop applications, silverlight applications and windows store applications, desktop applications having most of the features, other two has limited set, mostly because of performance and security reasons (for example you can't render UI to image in windows store applications, but in desktop applications you can).
WPF has better hardware acceleration support, has better binding and async/threading support, is much more flexible, many elements look may be changed very easily - which can't be done so easy in Windows Forms, like combo box - you can change color in Windows Forms very easily, but if you will need rounded edges, that will be hard one.
Also WPF can be used in MVVM pattern easily, which is quite a challenge in Windows Forms.
Windows Forms on the other hand is little bit easier to learn + plus it has very good third party components - like Telerik, Devexpress. Both vendors have components for WPF also, but they ain't as good as Windows Forms ones, mostly because they were designed using Windows Forms knowledge, which doesn't fit WPF.
I recommend you to learn html, css and js. As I know you can build Microsoft Windows 8 .net applications using these languages. Check here and also it would be useful if you'll decide to make web application, where all these languages are using also.
If you don't want to limit your self with Windows 8, than try WPF. Applications on WPF will be able to run on any machine with .net framework version you used for application.
GL
As others have pointed out, WPF is the way to go.
One thing that has not been mentioned is that, (since you have java experience) you can think of WPF versus other technologies (such as winforms) the same way you can think of JavaFX versus previous java UI technologies (such as Swing).
Actually, JavaFX seems like a really poor copy of WPF. the language used to define the UI is XML-based (like XAML is), it has (much poorer) support for DataBinding, and many other similarities.
As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 9 years ago.
Ok friends, I'm a C# WPF .net developer and have been working pretty much exclusively with UI development in one language or another for the last 15 years. The last 7 have been with C# and I have to admit that I am spoiled.
So, the question is: How do I get started, and what tools are best to use? I see that MonoTouch is out there, but it looks like it is now called Xamarin. What about PhoneGap, Titanium, Appcelorator? Are there others I haven't heard of yet?
I am just wanting to break into Android Development and/or iPad/iTouch development, but don't want to go native. I would like to leverage my C# skills, preferably WPF, but I have no idea which tools support that for Android/iPad/iTouch development.
Which ones integrate with Visual Studio?
Anybody who has REAL EXPERIENCE with any of the above, or one that I haven't heard of, please chime in and point me in the right direction.
I really appreciate it.
Phonegap works by having a web view loading a html & javascript application, so, you wouldn't be using C#, and the results usually are a far shot from a native app.
In contrast, mono touch compiles your C# code so it can run natively on your mobile platform, and since they implement a wrapper around the native libraries you are suposed to be able to write applications as good as if you had gone native. On your case i think that would be pretty much the best way around.
By the way, Mono Touch doesn't remove the requirement of having a mac to develop iOS applications.
One of the best technologies is the Mono for Android/iOS framework - specifically for the fact that you can target 3 platforms just by coding for the one. Of course UI is independent so you'll still need to learn each platforms Design patterns etc... But here
http://xamarin.com/?gclid=CM_agZWFgLYCFUvHtAodeDYADw
The best place to start
If you're coming from WPF and familiar with the MVVM pattern you will find loads of js frameworks that share the same approach (KnockoutJs is a good one), basically this is what you'll be using if you want to go with a cross platform solution like PhoneGap wich is nothing more than wrapper for a webapp, and a few apis to access your device.
Personally I find PhoneGap a good solution only if you want to access the features of your device within a simple application.
As soon you start to add pages to it the feeling lack of responsiveness will make you wonder why you didn't go native from the start.
I would go for Xamarin. The Xamarin 2.0 has Visual Studio integration. You can write code for iOS or Android on Visual Studio 2012 (I am a ReSharper fan :) ).
Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 9 years ago.
Improve this question
Apologies in advance for the possible flame thread, but that's not what I'm going for.
I've only ever done serious development in Linux using C and C++, and I'm looking to take the plunge into Windows. I've been doing some reading and asking around, and it seems to me that .NET with C# is the way to go for developing commercial user-oriented business applications for Windows.
A big consideration for me is the integration of the user interface into the desktop, since this is what the user ultimately interacts with. Is it possible to recreate the look of the Office 2007 GUI in Java, for example, or is this only possible with .NET?
I'm also concerned about portability. In the future, I may want to port the application to Linux. I know about the mono project, but I'm wondering if it wouldn't be better to go with Java.
In short, what are the trade offs between Java and C# when developing commercial, user-oriented business applications primarily intended for Windows?
The most important bit is in "primarily intended for Windows".
If you only need to work on Windows, C# is likely to be a much better bet than Java. There's a better variety of visual styles which blend in well with Windows. It also makes interoperating with native code (e.g. bits of the Win32 API or COM libraries) easier than Java. Personally I prefer it as a language, but that's a different matter.
If you need to run on other platforms, I'd seriously consider Java. While Mono has quite a lot of momentum, it doesn't have the same degree of compatibility with .NET as Java does on the various platforms it supports.
So basically, weigh up the "may want to port" aspect very carefully - it's the driving factor in the decision, from my point of view. Once you've decided to do a port, it doesn't matter much if 90% of your customers are on Windows - it'll still need to work, and work well, for the remaining 10%.
First off, whether or not your GUI will look good on windows will depend more on your skill with GUI design than it will on your choice of language or toolkit.
Windows Forms doesn't really give you full access to the Windows GUI functionality using the documented API. You'll have to make calls to native API functions or at least use windows-specific messages to achieve some effects. Also, I don't think there is a built-in way to access the Office 2007-style ribbon control. You'll need a 3rd party component for that.
A lot of .Net apps rely on 3rd party widget sets to achieve nice looking GUIs. Be warned that these frequently rely on P/Invoke or other windows-specific functionaly and thus don't work on mono. So if you really want a cross platform GUI, .Net is not the best choice.
You can also do .Net GUIs in Windows Presentation Foundation, but again this is not supported in mono.
GTK# works well on Unix and windows, though it looks slightly less native on Windows.
Java Swing is very cross platform and is looks pretty good with a platform native look and feel. You could download Netbeans to see it in action.
SWT is an alternate toolkit for Java that has slightly less cross-platform compatibility than Swing, but is still popular nonetheless. Eclipse uses this toolkit, so download that to see it in use.
Since you have an expirence with C++, you can go with C++ plus Qt for GUI. It's a good cross platform GUI library, and you can recompile the code to work in Windows, Mac, and Linux with consistent look.
Sure you can make nice interfaces with it, but maybe not as cool as MS Office interface (Microsoft blend).
You may consider it as an option.
http://www.qtsoftware.com/products/
Examples
http://www.qtsoftware.com/qt-in-use
If application is primarily for Windows - use .NET.
If you're serious about porting later - avoid use of P/Invoke, .NET above 2.0 features and 3rd party toolkits with rich GUI (which aren't running on Mono)
There are present nice and commercial .NET cross-platform apps including nice http://www.codicesoftware.com/xpfront.aspx
plastic scm UI http://www.plasticscm.com/screenshots/gui27/visual/brexplorer04.png
and many others - http://www.mono-project.com/Companies_Using_Mono
Also many developers prefer VS IDE over Eclipse and C# over Java. But if your application primarily Windows - I bet it's better to use .NET. ESPECIALLY if GUI integration is main concern, because making Java applications look like native Windows still painful. Under .NET there are LOTS of controls for Ribbon interface (inluding native one). Try to find same for Java with proper look and you'll understand what I mean
With Mono (if you will keep the main rules) most of the time you won't have a problem of porting and embedding Mono itself inside your application.
As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 10 years ago.
Appart from projects funded/pushed by MS itself, are there any real-world examples of projects that opted for Silverlight?
What were your experiences? Learning curve? Advantages? Resources? Pitfalls? Sacrifices?
--EDIT--
I'm most interested in the developing (team)'s story.
I was at a conference last week, and a number of non-MS people were telling their experiences of using Silverlight for line-of-business apps. Generally, it seemed positive. The advantage seemed that you could start with the Silverlight version, and then if you (later) needed more client control, mostly just copy the xaml and app code into WPF. mostly is important, as there are currently some glitches. But it is much harder to start with WPF and port to Silverlight ;-p
Sacrifices? Not as much power over the client. Limited framework, etc.
Pitfalls? Not-quite-compatible xaml. Different IO, etc.
I can't cite specific projects, as I simply didn't write them down ;-p Besides, they might be company-private. Knowing that they exist doesn't violate NDA ;-p
I've just reviewed the Silverlight showcase for the UK, an IT market I know pretty well, there are 31 apps featured and the break down looks like this
8 x Games = 26%,
6 x Experiments and fun = 19% - eg christmas cards and Xaml XEyes,
6 x Demos = 19% - eg a Deepzoom picture,
11 x Reasonable web sites = 36%
Realistically 31 apps for the whole of the UK, of which only around a third are real, is a tiny amount of development. This could indicate a couple of things,
1) Serious Silverlight development isn't happening in the UK, but maybe is elsewhere
2) Companies doing serious silverlight dev don't want to use Microsoft's showcase
3) There isn't much serious Silverlight development happening yet
My gut feel is that Silverlight is taking a while to become mainstream, it's a brilliant technology, but users don't buy technology or features, they buy benefits .... We need a couple of killer Silverlight apps, then it will take off like Ajax did, once google (and others) showed the way
Check out the Microsoft Silverlight Showcase. There seem to be quite a few Silverlight apps in the wild.
Retouch Genie Ltd - Online photo retouching and restoration site uses Silverlight for its gallery and main client area. Its got quite an interesting photo display control which is quite nice. Here is the link to the before and after gallery that allows you to see the photos in their original state and again after image enhancement.
We are in the middle of developing a system in silverlight that does real time communications with customers. The problems we've had are due to the lack of real-world samples and the change from VB to C# as there is next to no documentation in VB. Apart from that it has been great to develop in. Everything works well and development time was very quick considering it is a brand new technology. We're looking forward to the next release and it's enhanced video handling.
Checkout silverlight case studies for developer story:
business app - http://www.microsoft.com/casestudies/Case_Study_Detail.aspx?casestudyid=4000004876
I even developed an Android app with Silverlight and Java mixture. Without SL it would be really damn boring and probably impossible what I wanted to achieve, check it out: https://market.android.com/details?id=uk.co.aloneguid.todash&feature=search_result