Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Choice of tool-set: scala, ruby, java and more [closed]

Tags:

ruby

scala

groovy

I'm part of a group that starts a new development project from scratch. Currently it is on hobby-basis but we aim to make it our living in the time frame of 1-2 years. We are senior developers coming from a multitude of languages and techniques with much of the focus on Java for the last few years.

Now, we're thinking of choice of toolsets and languages (the future is bright when starting from scratch). We want to be able to use modern architectures efficiently and have good experience in Java and other JRE-based techniques.

The project is in short a lot of I/O, databases and a decent UI that probably needs to be web-based and feel quite efficient.

One route to go is classic Java and build UI using GWT (or layers on top of GWT), another is Scala + lift.

Then there are other techniques based on Ruby, Groovy and so on.

My question is then: What would you select as tools for a new long-term project given the above. Is Scala here to stay for instance or is one of those with only temporary hype?

What other techniques do you consider for larger projects from scratch?

like image 929
Bjorn Avatar asked Dec 06 '22 03:12

Bjorn


1 Answers

Possibly your biggest binary choice is whether you decide to stay on the Java Virtual Machine (JVM) via either Java or one of the other languages which compile into bytecode, or to move onto some other platform, possibly Ruby or Python (with the complications of working with different architectures/operating systems that this may entail). Personally, I decided that I very much wanted to stick with the JVM and hence your language choices would be...

Scala

All I can give is my own experiences coming from a Java background: migrating to scala was made easy by its natural integration into the Java ecosystem and the ability to continue to use pretty much the same toolset in the same way.

By this last point I mean that the statically-typed nature of scala means that all the refactoring and code-navigation opportunities are still available to the developer but scala's type inference means that this comes without the unnecessary verbosity of type declarations littered throughout your code.

I can still use my favourite stuff like Spring, ant, IDEA and I can still use all the libraries I've ever written in Java (this is an argument for picking a language which integrates with Java over a completely new one like Ruby, Smalltalk or Python).

From the perspective of whether scala is here to stay as a JVM language, this is what concerned me most. But consider how many questions on SO have been tagged Jython (161), JRuby (176), clojure (388) and Groovy (661), assuming you wish to stay on the JVM. Not only is scala now well ahead of these (815) but it is growing at quite a rate.

Lastly, although I have not used Lift, a colleague has been extremely impressed with it (and I would probably look at it if I were writing a web application). The fat-client alternative (scala swing) I have found to be more than useable (better than raw swing at any rate!).

Groovy

It's worth noting that the creator of Groovy recently said that had he known of the existence of Scala, he would never have bothered to create Groovy!

JRuby / Jython

I have lumped these two languages together because they both represent an attempt to port the syntax of a dynamic language onto the JVM. Unless that syntax is already familiar to you, why would you bother to go down this route? I must say, the SO stats (above) do not indicate that these have the momentum at the moment.

I would also opine that moving from a statically-compiled to a dynamic language is a big step and you might be surprised by what you miss (in terms of refactoring and development aides etc.) - you may also care about the fact that the interpreted nature of these languages makes them over an order of magnitude slower than Scala.

Clojure

I have no real opinions on clojure other than to say that with an imperative background, its syntax is scary and its flow extremely unfamiliar. I am becoming more impressed by the functional paradigm but I felt that clojure was a step too far for me; I would be a fish out of water in the language, having no previous experience of LISP/Scheme.

like image 144
oxbow_lakes Avatar answered Dec 11 '22 09:12

oxbow_lakes