views:

191

answers:

6

Yup, long title. I've been programming in PHP for the last 6 years or so for work and personal projects, but I've got an idea for a desktop app (which incidentally, uses a web REST api).

I'm debating on how to approach this - I've got some experience in Java, C++, Perl and Python, but have never had the chance or opportunity to write and distribute an app to others of any significance.

The app will need to communicate with a REST API (with OAuth), as well as access the file system, and possibly do some image manipulation (encoding/resizing, but this is a nice to have). I've been thinking something on .NET, but AIR is a possibility too (though I really dont want a huge runtime hanging around, this will be a system-tray type app).

I'm not looking for someone to write it, but I could use a nudge in the right direction.

+1  A: 

Hi!

Being a Delphi programmer for years, you can do everything you want with it.

I'm starting to use C# at work. It's a great language too, but for a distributed application. the .NET framework still stops me from using it for my personnal apps.

In my point of view, Delphi is a good option. You can look at Lazarus/Free Pascal if you want a free IDE.

With this option, you build your EXE and that's it. Ship the EXE to the customer and it's working. No need for DLL/framework thing to have on the computer.

Of course, if you're using database stuff or third party DLL, you must ship the necessary stuff with it. But it's simplier than with VB with all the vbrunxx.dll, or with all .NET language.

It's my 2c... I think I'll be flamed for this! ;-)

HTH

vIceBerg
+2  A: 

In terms of language support, you can do it in C++, Java, C#, Python, etc. In practical terms, I'd say C++, Java and C# are the choice for most of the users. But keep in mind that GUI support in both C++ and Java is complex to learn and use. If you plan to make many large projects, performance is a concern (both in size and speed) and you need a simple installation process, use C++. If these last restrictions don't apply (only the size and number of projects), use Java. Assume you'll have to spend some considerable initial time preparing the infrastructure (libraries & etc.).

If your plan is more short-term (not so many projects, not so large ones), use C#. It's realy the easiest to learn, use and produce code that works, and with the Mono project it's not restricted to MS platforms anymore.

Fabio Ceconello
+2  A: 

I would recommend the Visual Studio Express editions. Since you have experience with C-style languages, try starting with Visual C# Express. The 2008 SP1 edition is a very powerful IDE and it's completely free. The only downside for personal or small-grade development with the Express editions is that they don't have the class designer and you can't use Add-Ins.

Be sure to target .NET 2.0 to reach a wider audience. If Windows XP is fine as a minimum requirement, you can also try .NET 3.5 with WPF, which makes application development more like web development, which may help you with the user interface design since you're coming from a web background.

The runtime overhead is negligible, since most people will have a running .NET 2.0 Framework anyway (you can't uninstall it from Vista or later, and the ATI Catalyst Control Panel comes with .NET 2.0 as well, so many casual computer users have it). I think it's at least a recommended Windows Update for Windows XP.

Note: There are localized versions as well, so you don't necessarily need the English version to which I posted the link.

Delphi is fine as well, but the free editions of the original Delphi have some issues and no free Delphi edition, nor the Lazarus version, comes even close to what Visual Studio 2008 has to offer.

OregonGhost
+1  A: 

If you're learning it new, skip Windows Forms and go directly to WPF. Its very similar to building a UI in xhtml, but with awesome data binding and less compatability issues.

Will
A: 

If you go with AIR you'll have a cross platform solution. You can also leverage some of the new AMF support in Zend Framework for a faster more efficient communications protocol. XML is big, JSON smaller but AMF is binary and much more compressed. AIR also allows you to write an application in two ways. The first is the traditional flash player/Flex combination and the other is to just write a bunch of HTML pages with Javascript in it that utilizes the AIR provided APIs. Aptana produce a functional free IDE plugin to Eclipse to write AIR apps in this second way. FlashDevelop is another free IDE that would be more suitable to the flash/flex way of writing an app. Flexbuilder is also free for 30 days and cheap if you are a student (free IIRC).

Sam Corder
A: 

I'd go with Delphi too. The free Turbo Explorer is fine for a quick project, or just to try it (and buy a license later). If you want to be a long term freebee user, go directly with Lazarus/FPC.

Main reasons: single .exe possibility, good interfacing with other libs.

Both support several sets of sockets libraries as well as database connectivity both to free and unfree databases.

.NET is fine for corporate use, if you corporation installs it default (remember, XP comes with .NET 1.x). For wide-audience use, it is a bore to convince users to install the runtime, that it isn't a virus, and that it doesn't enable you to monitor them through their monitor.

Marco van de Voort