Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Which language/platform to develop desktop application based on following criteria [closed]

Faced with the challenge of a new application with which you had free reign to design, assemble a team to develop and manage:

  1. Which language/platform would you choose?
  2. Why?

Background: The desktop application will control a hardware device and perform computations, analyze and display the data returned by it.

Requirements: (importance: 10=most important)

  • will need to communicate with devices using USB and/or ethernet (9)
  • availability of engineers with relevant skills (8)
  • availability of quality IDE/tools (8)
  • cost of IDE/tools (7)
  • availability of resources, tutorials, support (9)
  • lifetime of language/API/platform/framework- ie how future-proof will the investment in this application be?... the product has a long life-cycle (10)
  • cross-platform (3)
  • richness and breadth of libraries available (9)
  • the application will need to be able to interpret a scripting language (6)
  • unit testing (9)

Assumptions:

  • For USB variants of the device, a device driver will be written in C/C++
  • Application will be a completely new endeavor - from scratch
  • Background of existing engineers is C/C++, and they have a strong OO competence. Existing engineers are willing to adopt best language/platform, and new engineers with appropriate skills will be recruited.

Shortlist (which you can add to):

  • Java/J2SE
  • C#/.NET
  • C++/wxWidgets
  • C++/QT
  • etc.

Looking forward to hearing what you think!

like image 550
Prembo Avatar asked Jan 22 '09 01:01

Prembo


1 Answers

To be honest, I'd choose Java (with a small component of C) for the following reasons, based on your requirements.

  • Lifetime of language/API/platform/framework- i.e., how future-proof will the investment in this application be?... the product has a long life-cycle (10). That really depends on what you mean by long. I seriously can't imagine Java disappearing, simply due to its huge installed base. C or C++ isn't disappearing either but I always think of the VB6-to-VB.net migration issues when contemplating the future of C#.

  • Will need to communicate with devices using USB and/or ethernet (9). Whilst Java isn't directly ideal for this, it has JNI to do the grunt work. You'll still need a C component to do this (and it will change for each platform but it's better to have the bulk of your code write-once - with C, you'll probably have most of your code changing for each platform, and with C#, well, is it really supported on platforms other than Windows?). Another alternative is JNA which looks like a "Python ctypes" for Java (access to shared libraries and DLLs without the JNI interfacing layer).

  • Availability of resources, tutorials, support (9). All the languages have a huge resource cross-section on the web.

  • Richness and breadth of libraries available (9). You have Boost for C++ and cross-platform GUIs but they're something that has to be added - there's nothing built in to the development environment like with Eclipse/Java.

  • Unit testing (9). Same response as availability of tools below - there are plenty of (free) Eclipse plug-ins that automate unit testing.

  • Availability of engineers with relevant skills (8). All the languages you mention have a plethora (I love using that word) of people able to do the job.

  • Availability of quality IDE/tools (8). This is Eclipse. No two ways about it, in my mind. The number of plug-ins for it is truly immense. NetBeans may look nicer but I'd rather have functionality than looks (and so would my wife, so that's lucky :-).

  • Cost of IDE/tools (7). Eclipse is free.

  • The application will need to be able to interpret a scripting language (6). Last I heard, Java now includes JavaScript as a built-in as well as the ability for developers to add their own scripting engines.

  • Cross-platform (3). C#, no (despite the existence of Mono, I still see risks that it will fall afoul of MS one day, and that not many is the FOSS world will work on it due to its MS associations).

like image 138
paxdiablo Avatar answered Oct 01 '22 19:10

paxdiablo