Faced with the challenge of a new application with which you had free reign to design, assemble a team to develop and manage:
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)
Assumptions:
Shortlist (which you can add to):
Looking forward to hearing what you think!
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).
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With