Enterprise language, compiled or for JVM
We are currently developing carrier grade telecom applications in C++, Rational Rose and Java to run on an embedded platform based on Enea OSE which provides interfaces for the above three languages (actually C, Rose and java).
I'm interested in increasing the productivity by choosing other more productive languages. I would like your opinion on what languages I should consider. Pretty much it either has to be able to be compiled to run directly on a PowerPC processor or compiled to Java byte code.
These applications probably has to be supported for 20+ years so maturity and (linux based) tools support (debugger, static and dynamic analysers like lint and purify in the C world, profilers, eclipse plugins etc) is paramount. The applications does not have any hard time or memory constraints but efficency is a plus.
What languages would you guys suggest? Are any other languages up for the challenge?
Depends on your goals.
For long term support and maintainability, you're probably not going to beat Java.
For productivity--that's a bit of a question.
Since the telcom industry is fairly heavy into testing and process, reducing your number of lines of code isn't really the thing that will speed you up.
If you have a Very Smart Group, you might consider Scala since it's 100% Java compatible and has a lot of advanced features, but the problem with that is you are counting on having Scala developers in the future.
I don't know, overall I'd say doing a smart Java design would be a lot more helpful than another language. Perhaps patches of Groovy as a scripting language in places where that is appropriate.
If you're willing to live on the cutting edge, you may want to take a look at Clojure.
- Runs on the JVM
- Fully compiled, so you can get pretty decent performance (I'm confident enough to be writing a game in it!)
- Designed for concurrency from the ground up
- Functional programming - extremely productive with great support for powerful LISP-style macros, lazy evaluation, tools for implementing DSLs etc.
- Integrates very well with Java - to the extent that I mix Java and Clojure files in the same projects in my Eclipse environment, and there is effectively zero overhead calling back and forth between Clojure and Java. This is extremely important for me as I have a lot of Java code that I'm not planning to rewrite any time soon!