shakespearegeek's Avatar
shakespearegeek 4
31 Asked
289 Answered
87 Best
1
No one has voted on this question yet :(
3 years, 4 months ago

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
Tip for best answer: M$3.00
Separate topics with commas, or by pressing return. Use the delete or backspace key to edit or remove existing topics.

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$

What is Your Answer?

0
0
0

2 Answers

1
bucabay's Avatar
bucabay | 3 years, 4 months ago
4
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/

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$

Report Abuse

Post Reply Cancel
0
greenscreencinema's Avatar
greenscreencinema | 3 years, 4 months ago
4

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

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$
shakespearegeek's Avatar
shakespearegeek | 3 years, 4 months ago Report

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.

greenscreencinema's Avatar
greenscreencinema | 3 years, 4 months ago Report

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.

bucabay's Avatar
bucabay | 3 years, 4 months ago Report

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.

philipy's Avatar
philipy | 3 years, 3 months ago Report

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 Abuse

Post Reply Cancel

Learn something new with our FREE educational apps!

Private lessons in the comfort of your own home. Get back in shape or finally pick up a guitar with our great experts guiding you the whole way!
Learn Guitar
Learn Hip Hop
Learn Pilates