Java started out as a simple language (especially in comparison to then prominent C++). Overtime, like any language,
a number of features were added to the language. While some of these features were very beneficial, quite a number
of features unfortunately, made the language quite complex. The cost vs. benefit of these features is quite questionable.
You ask why Java can't support similar syntax? The syntax is only part of the concern. What makes a language interesting
is not only its syntax, but its idiom—the way someone familiar with the language programs in it. It is very hard to change
the syntax (as it greatly increases the complexity of the compiler and the language itself) and even more to change the
Your last question is about teams with experienced Java developers. The good news is, the Java platform has been
steadily becoming stronger. Today, the real strength is in the platform. As a Java programmer, you expect quite a bit
from the JVM, you know the Java language syntax, and also you know quite a bit of the Java library. Languages like
Groovy and Scala run on the same JVM, and they mostly use and extend the same library. So, as a developer with
strong experience, you are not starting at ground zero. You bring quite a bit of what you know along. You then learn
to do things a bit differently. This is the idiomatic difference. So, for a well experienced Java programmer who is
*willing to learn and benefit* from the new languages, I would say the learning curve is really not steep. Furthermore,
I hope you would agree, as professionals, it is our responsibility to continue to learn and get better at what we do.
If you can show to yourself first, and to your team next, that you can be much more productive with these new languages,
then it becomes easier to invest the needed time and effort to learn these new languages.
Develop prototypes in these new languages. Use these languages to write unit tests on your Java code. Experiment with it.
Use it for small projects. Once you get familiar with these, it becomes easier to see places where they can help your project
posted 10 years ago
I really appreciate you for taking the time to respond to my questions. Your suggestion on introducing Scala in small iterations and in testing situations seems very workable and I would try to push my team into embracing it.
I can see the advantages these languages bring to the software development plate. In your experience with talking to people that are using, can you share with us in what kind of scenarios did they choose Scala over Java or Scala over Groovy.. I mean it seems to me that you could end up having a mix of all these new crop of languages in your development cycles.
posted 10 years ago
Kalyan, I do not see each of these languages compete with each other head-on.
Instead I see developers picking from a subset of languages for different
layers or purposes in an application.
For example, there is a greater overlap in the key strengths of languages
like Groovy and JRuby. Similarly, there is a greater overlap in the
strengths of Scala and Clojure.
There are so many other languages on the JVM. However, rather than
viewing them all as one collection of languages, if you group them on
their key capabilities and benefits, you will see a small number of
sets (three or four) of languages emerge.
You would then pick languages from different set depending on the need
you have in the application.
You can use any particular language to build an entire application.
However, once you see the language sets based on their capabilities
and key benefits, it is easier to see how you would select among