While considering the design of the NFCChat server, one of the components in our little Software Engineering project, the choice of Java struck me as odd. I might be biased, I might be pro-Microsoft, but still – considering that the server is purely console-based, does not accept any input whatsoever, and is, pardon my language, a pain in the ass to use, Java seems to be a bad choice.
Why? Firstly, the server runs off just-in-time compiled code as well as within a Virtual Machine, so that’s a -1 in speed and efficiency. Then the application is purely console-based – completely missing out on the “cross-platform GUI” key feature of Java. And Java being a language designed specifically for network communications isn’t a good reason, there are more languages out there that would have offered more advantages. Safety? The program doesn’t even need user input, why bother? And not to mention the need of installing it’s JRE in each and every computer you need to run it on. Customers don’t like being told, “Oh before this, you need that, that, and that too!” They want to hear, “Throw in the CD, push a button, BAM up and running!”
Guess what I would use? C. Yes, it’s the same language guys 20 years ago use, but it’s good enough for most jobs. Want cross-platform? Check. Speed and efficiency, check. Fast sockets management plus safe code? Oh sure, just be careful. I’m not experienced enough to suggest C++ or even Perl, but yep, they’re viable alternatives too.
It’s worthy to note that a lot of times, coding languages shouldn’t be picked just because you can, but you should – simply judged by a criteria of effectiveness or suiteability. It’s like choosing between a box of matches, gas over and blowtorch to cook a chicken: All of them do the job alright, heck, it’s even quite a feat itself if the fowl turns out edible… but, surely there’s the best tool for the occasion, no?