Ask questions via twitter! Message any question to @answers on twitter. We'll publish the question and send you a reply each time there's a new answer.
Next Question

Answered Question

 
M$3 January 29, 2009 09:47 PM

What's the best language for client-side app development?

I'm accomplished web programmer, but it's been a long time since I did any sort of client-side executables.  There's some projects I'd like to work on that are better suited to that model, however.  What's the hot "hobbyist" language for client-side apps right now?  By that I mean:  free tools so I don't have to shell out $100s for an SDK or compiler, and has enough functionality for a one-man shop.  I don't have much of an eye for graphics, and the app won't be graphic intensive, but I shouldn't need a degree in Adobe Photoshop to make a pretty app, ya know?  I could see needing some simple animation like text moving around the screen - I'm not doing movies or anything of that nature.I DO NOT want anything with a web portion.  This will be an entirely standalone application, I don't want the burden of hosting a site and having to manage both client and server software
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
Interesting Question?  Yes (1)   No (0)   
RSS
 
 

Best Answer  Chosen by Asker

 
January 31, 2009 08:03 AM
Coming from a web development background, you would probably find using either Adobe AIR, or XUL the simplest to understand and require the least development. Both are developed to mimic browser based development, which is very high level. You work mostly with XML, and would use EcmaScript implementations you are familiar with like Javascript in XUL, or Actionscript in Air.

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.
Source(s):
Web Developer for Fiji Web Design. http://www.fijiwebdesign.com/

Asker's Rating:


Helpful Answer?  (1)   (0)    Tip bucabay for this answer
Permalink | Report
   Reply  
 
 

Other Answers (1)

Sort By
 
January 29, 2009 11:47 PM

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.

 


Source(s):
Introducing Microsoft Silverlight 1.0, Laurence Moroney


Helpful Answer?  (0)   (0)    Tip greenscreencinema for this answer
Permalink | Report
   Reply  
 
 
 
January 30, 2009 01:39 PM
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.

Report
 
 
 
January 30, 2009 04:13 PM
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.

Report
 
 
 
January 31, 2009 08:17 AM
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.

Report
 
 
 
February 01, 2009 07:11 PM
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.

Report
 
 

Answer this Question

How tips and payments work

This question has already been resolved. You may add an answer to it but you will not be eligible to win best answer or any associated tips.

Ask a Question


140 characters left
Top of Page
Buy Mahalo Dollars with Credit Card or PayPal

Top Members

This Week All Time
  • cfinke
    cfinke
    2nd Degree Black Belt
    26920 Points
    M$29.75 Earned
  • bunnyphuph...
    bunnyphuph...
    2nd Degree Black Belt
    21043 Points
    M$758.09 Earned
  • thisjustme
    thisjustme
    Green Belt
    1145 Points
    M$76.05 Earned
   See All
 

Most Popular Tags

mahalo(1768)
music(493)
iphone(483)
google(386)
online(349)
food(339)
beer(284)
money(283)
movies(277)
apple(258)
aotd(235)
free(229)
health(228)
video(222)
dog(211)
   See All
 

Categories

Welcome New Members


 
 
Mahalo Dollars are the currency of Mahalo Answers.

Each Mahalo Dollar costs $1.

Once you earn more than 40 Mahalo Dollars, you can request to be paid via PayPal. Each Mahalo Dollar is currently worth $0.75 when paid out via PayPal. Learn More

 
 

Please log in to use this function.