I liked the comments about immutability in the article, even from an OOP standpoint. After having read the "Eiffel" book 20 years ago, and being exposed to programming by contract and class invariants, the whole java-bean concept made me want to vomit. "Here's an object" -- too bad it's not good for anything yet, but eventually it will be! (good luck). Beans have to be almost the #1 anti-pattern in Java.
> Another language I don't see mentioned above is Fantom. Some say that already is a simpler language that offers improvements over Java without the overwhelming power of Scala, but it hasn't been widely adopted. There are many theories for this, my own is that it maybe doesn't offer enough new stuff for someone to make the effort to switch. Scala clearly does add a lot of value, so that should be a lesson for newcomers. Offer enough new stuff for people to be interested.<p>I'm glad he at least mentioned Fantom. I haven't done much other than play around with it, but it seems like a much prettier "better" Java than a lot of the other contenders. I've never understood why it hasn't "caught on." Maybe he's right, maybe it just isn't different enough to be compelling.
I like Scala, though I just dabble in it. But I have a few thoughts on why it will be difficult for it to be mainstream.<p>One of its greatest features require a meaningful rethink of the JEE stack. Actors passing messages seems to not really work in a one thread to one request world where you should fork new threads.<p>There are too many ways to do the same thing in it. Manipulating maps or list can be done with various features of the collection library. This becomes the Java version of Perl. Some developers will use $_, some prefer variables and they each prefer their own ways. It can make it hard for one developer to pick up where the other left off.<p>Finally, the documentation seems to be more complicated than necessary. The Scala version of JavaDoc available on their site is almost a difficult to navigate as MSDN. From here we go to the books about Scala. These take careful reading to glean even the most basic structures (took me a while to figure out that the primary constructor is all of the lines between the {} of a class that isn't encapsulated by a method declaration).
I don't use Scala but I appreciate the fresh ideas it has brought to the Java /JVM ecosystem. Think Jetlang Actors modeled after Scala actors or Functional Java library etc. or even Google Guava ,which although has nothing to do with Scala but promotes a succinct programming style.<p>Keep up the good work !
The problem with scala and other non mainstream but powerful languages is that they are just ugly; no amount of marketing and feature lists will make them attractive because aesthethics are hard wired into our brains; at a low level ugly equals misery and pain, at a higher level its just an indicator of maintenance problems.
Perl got away with it because at the time because there were not many options for scripting, now Python and Ruby are now dancing on its grave.