What's the best language for client-side app development?
My gut feeling is that C# would be the winner, but maybe that's the software engineer in me speaking. How's C# on the graphics once you get past simple forms and tables? What about something like a Delphi? I saw that come up on a list of languages by popularity, I didn't realize it was still around. As long as it creates something that most desktops can run I don't care how I get there. I did years of Java, but only server side, maybe that'd be a good compromise if I learned the UI toolkit? Is it still Swing? ;)Maybe AIR is the right way to go, but I only know AIR as a platform, not anything about the underlying language
You can leave an optional "tip" with Mahalo's virtual currency, Mahalo Dollars. If you are asking a difficult question that might require some research, or if you'd like a wide variety of feedback, a higher tip often leads to more answers to your question.
M$2 Answers
XUL is XML markup for UIs and is the platform on which Firefox is built. You just need XULRunner (https://developer.mozilla.org/en/XULRunner), from Mozilla, which is the runtime. XUL allows you to write the UI in XML, then use JavaScript for scripting. XULRunner acts like a mini firefox, providing the same environment you would see in Firefox Extensions or the actual Firefox runtime environment. The JavaScript has an interface to Java, C++, Python, ActiveX, etc. Storage can be XML files or SQLite.
You can embed HTML in XUL, as well as the Flash Player.
So basically you could set up your desktop application to work like a webpage, and just edit HTML and create links, forms etc. (links are relative and internal to your app, no server needed unless you add a http protocol based link) Do some JavaScript when you need a bit of UI animation or storage access etc. If you wanted flashy animations, just use the Flash Object in HTML etc.
With AIR, you can work in a HTML, Flex, or Flash environment. The HTML environment allows you to use JS as it known in browser scripting, and act as if you are working on a browser based application. HTML environment built around Webkit, which is the underlying platform for Safari and Chrome browsers and provides the Ecmascript runtime. The storage is embedded SQLite.
The Flex environment is similar to XUL, as it uses MXML, which is Adobe's XML markup/standard for UI development. MXML uses Actionscript3.0 which is the latest Ecma specifications. It has some really nice scripting features, classes, libraries, namespaces, E4X etc. and great bindings with the XML UI (MXML).
I don't have any experience with the Flash environment. Should be the same as FLEX but with the Flash IDE so you code less and do more visual development.
Silverlight I believe provides a similar environment, but I haven't tried it yet.
Both XUL and AIR are very high level, so you don't have to worry much about the environment and can focus more on building your App. It is great if you develop by yourself, as you can achieve more faster.
You can leave an optional "tip" with Mahalo's virtual currency, Mahalo Dollars. If you are asking a difficult question that might require some research, or if you'd like a wide variety of feedback, a higher tip often leads to more answers to your question.
M$So much to discuss.. First, I couldn't tell from your post if you've done client side web programming, and if not here is the big invention you might have missed out on - asynchronous client side call outs. Both JavaScript and ASP.NET (the client side container for C#) support this functionality, and both have the same name for the technology: AJAX. This technology is pretty revolutionary, it allows for fancy widgets on the screen that can independently call back to a server and refresh themselves. No longer are web developers stuck with a single FORM submit, a long wait for a response, and then a redraw.
This is the technology you need to learn to create decent client side UI. Why am I so sure? Just try loading your Answers homepage. That thing has so many asynchronous JavaScript call-outs the page comes to a halt. The page is gorgeous, detailed and really functional, but slow. Any dev that walks through the Mahalo doors and says "I know how to optimize AJAX call outs" is going to be given a chair and a computer and coffee refills for life. It's a critical skill that not a lot of people have.
The great thing about C# is that although exes can be coded with it, C# is also the underpinning of ASP.NET codebehind, ASP.NET AJAX and all the new Microsoft technologies. So get an educational MSDN license. It'll cost almost nothing and you'll get something like $10,000 of server software. You can ramp up on C# windows apps, and then you can grow into the new technologies like AJAX. Though you may not be all that interested in web clients, this is where all the new, exciting technology is being developed (and it really not that different from windows programming if you want to do simple things that are heavy on codebehind).
You might also want to spend some time learning XAML, since you mentioned an interest in graphics. "XAML is an XML-based language that is used to define the visual assets of your application" (L. Moroney). Again, Visual Studio .NET will let you play with this technology (w/ .NET Framework 3.0 and later). A big consumer of XAML is the Silverlight control that Microsoft recently came out with, but the basic concept of encasing presentation concepts in a structure is awesome and will get lots of reuse going forward. Again, I know you're not big on web clients, but as far as Visual Studio is concerned it's just another project type. There's really nothing new to learn, you can just create the web app project type and then code it just like a windows app at first (to get comfortable). But since its a web app you can then drop in Silverlight and see how XAML works and see all the new things that have sprung up in the client-side world.
And finally I should probably mention that web pages don't actually need a server. There are lots of ways to ship your client creation without a dedicated external web server that you manage. And there are tons of people that would happily host the server portion if you did need one. But If you absolutely MUST ship an exe (i.e. the client is always going to be offline) then I would go with C# using an education version of Visual Studio .NET, for all of the reasons I mentioned before.
Introducing Microsoft Silverlight 1.0, Laurence Moroney
You can leave an optional "tip" with Mahalo's virtual currency, Mahalo Dollars. If you are asking a difficult question that might require some research, or if you'd like a wide variety of feedback, a higher tip often leads to more answers to your question.
M$Thanks for lengthy answer. Yes, although I tend to do more backend work, I am quite familiar with the front end technologies you mention and have done my fair share of AJAX (not a new technology, just a new name and new buzz), ASP and the others. Feel free to clarify the bit about "web pages don't actually need a server". For HTML pages I'd agree with you, but Ajax needs something to talk to, and ASP.NET has to be executed someplace. Are you suggesting the client install/enable IIS on their side?
Regardless of whether there's anybody that would be "happy to" host, I repeat, I DO NOT want that. I do that all day long. This project, a personal hobby, I want to be different.
You did remind me about Silverlight, though, which could be the right combination of clientside executable and C# language. IF it ever ships a final version, and IF a 30something engineer almost 20 years out of college can get an educational version of Visual Studio.
Oh, one more thing -- "must ship an EXE" in no way translates to "the client is always going to be offline." It simply means that I don't want to write a server portion. There are a gajillion services already out there that a desktop application can make happy use of.
I'm not sure if this has been publicly released, but I've heard of a stand-alone IIS exe that developers use to run web pages against. This exe is essentially a portable IIS service that allows your web pages to run without a server. If you decided to go with Silverlight, this exe would act as a shim that would allow your client to do whatever it wanted, as long as it was all client side work.
I haven't done much with Silverlight, but the book I noted in my sources got me up to speed really quickly. I strongly recommend it if you want to find out about XAML. I actually think I blew a job interview last year because at that time I couldn't discuss XAML. I sure won't let that happen again.
You can embed a Server but that is a huge overhead. I'd go with Lighty if I needed that. (http://www.lighttpd.net/). You could also write a socket deamon in the language you are developing your desktop app in. It would be lighter then bout any web server, since it is made to handle a much different environment.
Yes, I'm wondering about this education license for Visual Studio too.
Had a look here:
http://www.microsoft.com/education/eligible.mspx
Looks like the only path relevant for people like shakespearegeek (working adults, long out of college) would be if they are either part-time educators or part-time students.
Also as shakespearegeek is a pro-developer, he may be constrained in what he can do with his work if it's developed with education-licensed software.