Stack OverflowPoll: What is stopping you from switching (from Java) to Scala?
[+53] [30] Łukasz Lew
[2009-09-05 13:25:41]
[ java scala polls language-features ]

What would make you to switch to Scala ?

If you are negative on the switching to Scala, please state the reason as well (or upvote).

As with all StackOverflow Poll type Q&As, please make certain your answer is NOT listed already before adding a new answer

Edit: More discussion on Reddit [1].

(1) Wouldn't this question be more interesting if reasons to choose to switch were also listed - that is, if this Q&A poll would end up listing pros and cons of Scala vs Java? - Tomas Lycken
(4) I'm interested exactly in the answer to the question "What would make you to switch to Scala ?" so it can drive the development of Scala towards popularity and glory :) - Łukasz Lew
You mean switch at home or at work? you do know that at work everybody will have to know the language and some people still use struts. - martin
I think it's hard to answer a question like this properly, because it is implying that scala is so awesome that it is obvious everyone would want to switch, but it doesn't explicitly list any reasons that we can argue against. It might help to elaborate on why you assume everyone should want to switch, so we can explain why that reason is not compelling enough. (for the record, i like scala) - Peter Recore
The question is directed to people who considered the switch and they had their reasons to consider it. - Łukasz Lew
Gets down on one knee, raises clinched fist to the air Because Scala killed my father! - Juliet
You're getting two kinds of answers below, based on whether "switch" means "as language preferred by your team to update your current product's codebase" or "as language preferred by you as an individual to start brand-new projects". There will be very different motivations. - Zac Thompson
[+53] [2009-09-05 17:52:31] Esko Luontola [ACCEPTED]

Lack of mature IDE support. Scala is still quite much behind Java in its IDE support, although the situation is improving slowly. Many Java developers are used to the excellent IDEs that Java has, so some might not want to make the switch to Scala until its IDEs are closer to the quality of Java IDEs.

At this moment, IDEA's support is acceptable enough for me to begin using Scala in non-critical projects (it has some basic refactoring, navigation and code completion), but there are still lots of rough edges that would need to be improved (the biggest issues are some performance problems and the lack of Extract Method and Inline Method refactorings).

Can you elaborate on the performance issues ? Is there any article on the current issues with IDE support ? What will change with Scala 2.8? - Łukasz Lew
With IDEA's Scala plugin, typing text in a .scala file is slow. An easy way to reproduce this is to type text in a comment by holding down a key in the keyboard. When the key is repeated, the UI freezes about once a second. I've reported it as - Esko Luontola
(2) Agreed. The Eclipse and Netbeans plugins are pretty much unusable. - Jay Conrod
(7) IntelliJ IDEA Scala plugin is already quite mature. I can highly recommend it. I'd really like to see IDEA as the Scala IDE. - Alexander Temerev
I agree, I can't even get the Scala Eclipse plugin to work in Ubuntu 9.10. Tried installing it as root, and various troubleshooting to no avail. I was excited for Scala, but no more maybe in a few years... - Sheldon Ross
The Netbeans plugin is super and 100% free. Can't believe you didn't try it. - Seun Osewa
My current biggest problem with IDEA's Scala plugin is its slow compile speed. I'm right now working on a IDEA plugin for integrating with SBT to build projects faster. It will soon be available at - Esko Luontola
Eclipse has made up a lot of ground recently and while it still has rough edges, there seems to be a good amount of continuing effort going on. It compiles much faster than IDEA, and doesn't have IDEA's performance problems when working on long files. IDEA has scaladoc support which is nice, but its current performance makes it unusable for me. Netbeans is lagging; it's nice and responsive, but error highlighting is nowhere near as good as the other two and you can't have mixed Java/Scala projects. - Luigi Plinge
I am using scala-ide 2 beta ( goes with scala 2.9 ) and its been great. I am also using maven scala projects in eclipse and its working fine. I also experimented a project in eclipse that had java, scala, groovy code where they were highly linked with each other and it didnt seem to be a problem. - smartnut007
[+40] [2009-10-30 06:32:40] David Crawshaw

Nothing, I have switched to Scala.

(2) Uh yeah, I was about to do it.....but you beat me with around 1 year.... - Felix
[+20] [2009-09-05 14:39:53] Buggieboy

This is like the "Why not D instead of C++?" question.

The newer language is in many ways superior, but until a language gains a critical mass of mindshare, there is not much point in switching. The mature tools, IDEs, open source apps, frameworks, operating platforms, jobs, fellow programmers, etc., etc., are all in the more dominant language.

Of course, it's a chicken/egg question, because somebody has to make the leap to the new thing or we never advance. Unless you want to work in a vacuum though, there is little benefit in being on the bleeding edge.

(7) frameworks? Can't scala use all of the numerous java frameworks? - CrazyJugglerDrummer
(2) I agree with CrazyJugglerDrummer, this is one of Scala's strengths. You can deploy your Lift applications on any Servlet Container, use Spring for DI and handle your High-IO Applications with MINA just to name a few. Java Compatibility rocks. And its not limited to Frameworks. - Malax
yeah, Buggieboy is missing the point that you can use scala with bytecode generated from Java just fine. In fact, Scala is compiled to JVM bytecode. So you can plug your Scala code in any framework’s or coworker’s code at your job and use Java tools (like debuggers). The only thing from his list that Scala hasn’t are IDEs on par with Java’s. And that’s in another answer already. - flying sheep
[+19] [2009-10-22 09:11:42] AlBlue

The biggest reason is that for every version x.y, x.y+1 is binary incompatible with x.y. That is, if you build a system on 2.7.4, and then upgrade to 2.7.6, it might be broken; if you upgrade to 2.8 (or whatever it gets called next) then it will be broken. And, if that wasn't enough, Scala 2.8 is source incompatible with its previous versions.

No-one in their right minds should build on a language whose foundation is constantly moving. It's like erecting a building on quicksand. Sure, it might look good from above, but it's only a matter of time before it falls to pieces.

(1) That's a good point. Of course, that is not such a big problem as long as previous versions receive all the bug fixes as well. - Łukasz Lew
(1) Yeah, right. You're lucky if the current version gets bugfixes, let alone any previous ones. - AlBlue
(8) I don't buy this argument. The same problem exists with .Net and it's quite popular. I've moved 1.0 code to 1.1, 1.1 to 2.0, and even 3.0 back down to 2.0 and really stupid, basic stuff that you'd think would never change, does between versions. - Brian Knoblauch
(3) Well, it is just because Java is taking care of the compatibility of previous compilers that Java 7 is still in the incubator... - sza
(6) There is always a trade-off between staying backward compatible and improving the language. For example Sun chose the backward compatibility route when implementing generics in Java 5, thus limiting the usability of their implementation (i.e. type erasure at runtime). - Zsolt Török
[+14] [2009-09-05 14:10:17] Jason S

While Scala has lots of interesting features that make it much more concise than Java (e.g. functions as first class objects [1] and easier object literals [2]), the syntax is too short and cryptic for my taste. The verboseness of a language should be aimed at the optimal ease of reading / understanding code for reviewers and maintainers, with a little bit of concession towards code writers but they only have to create code once.

I wish there had been an intermediate language between the two.... my preference would be something like Javascript with types (i.e. the not-yet-implemented Javascript 2.0 [3]) if it were compiled at compile-time, rather than compiled-at-runtime-and-interpreted. Javascript object literals ({a: "ha", b: [1,2,"spiffy"], c: function(x) {return 2*x}, d: {xx: 22, yy: null}}) are both readable and concise, and e4x [4] is the same way towards XML.


(3) Almost wrote a similar reply, I strongly agree with the cryptic syntax argument! - Esko
(6) Please provide few examples of cryptic expressions in Scala. Maybe what is cryptic for you is not that cryptic for others. Or maybe you just didn't used to the syntax :) - Alexey
(2) When I started coding (in college), we learnt COBOL and BASIC in year 1. 2nd years would share use of the lab and their C code looked cryptic in the extreme. I learnt C in year 2 and now COBOL/BASIC look so verbose (they are!). Being cryptic is just a matter of familiarity. Saying it's too cryptic is a cop-out (just plain lazy). It's not an answer, it's just an excuse to NOT look into it. - GKelly
If you want an "intermediate language" take a look at Gosu ( This is exactly the idea behind it--a JVM language more similar to Java (and thus easier to pick up) than Scala but with a bunch of improvements (lambdas and the like). - Tikhon Jelvis
[+13] [2009-09-05 17:22:32] Thorbjørn Ravn Andersen

The main concern -- EDIT: for us for even considering -- moving from Java (the language) to any other language on the JVM is sheer maintainability. We create very long lived programs so we need to be concerned about future employees being able to look at the code base, understand it and enchance it.

So far the standard Java distribution has proven to be very robust and maintainable, so the incitament to look for something "better" is very small. Please note, that this includes everything inside the standard Java distribution, so it is perfectly fine to use XSLT to generate a complex web page or a regular expression (a language on its own) to split a string.

Using a "new" language is tempting but what if it fails to catch momentum and turns into another old, unmaintained, unused language that you are the only one in the whole world using? Just being in fashion does not mean it stands the tests of time, so you need to be careful.

Oh, by the way - consider which job is most attractive to future employees: "The main application is written in Java" or "The main application is written in Java, Prolog, Haskell, Lisp and Visual Basic" (where the Visual Basic compiler is written inhouse and you need to maintain it). Just a thought :)

(1) A very well written answer. However, many businesses owe their advantage to working with a fast-moving language that allowed them to reduce their time-to-market and they care little about the job market if they are small. The "common denominator" is not the right choice for everyone. - oxbow_lakes
(1) I edited my answer to indicate that this is our viewpoint, as we have customers whose business depend on our product. For those who need all the agility they can get this is most likely different, but then you would not chose a Javabased platform. They are for big trucks, not racer cars. See for a good article about using Lisp as a secret weapon for a start up. - Thorbjørn Ravn Andersen
(1) The obvious answer to the employees is the place that does Java, Prolog, Haskell, Lisp and Visual Basic. I'd think this would be a pretty decent filter for where people would be happy. My assumption would be that virtually no one would choose the pure Java shop though. - James Moore
@jamesmoorecode, I believe I was not explicit enough that the various languages were chosen by inexperienced coworkers which implemented the projects in a COBOL mindset, and have since left, and nobody remaining knows those languages. Hence it is your job as the new guy to lift the burden. - Thorbjørn Ravn Andersen
[+11] [2009-09-05 13:35:38] Tom Hawtin - tackline

My employer is heavily invested in Java is unlikely to move. Using Scala significantly would probably involve changing company, which I do not wish to do (although I'll consider offers).

(5) I'll be honest that this one doesn't make sense to me. Would it be fair to assum its far more likely that your employer is heavily invested in the Java Platform, and may well be open to anything with compatibility with the JVM? - Shaun
That's a trendy point of view, but one that I think is bogus. I care more about programmers than a relatively cheap VM implementation (you could even give it away) and a recompile. - Tom Hawtin - tackline
It doesn't explain the "heavily invested" statement though. And I don't think "trendy" is appropriate. I wasn't attacking your answer, which I think is valid, I just don't genuinely understand it. If you look at .Net shops, for example, what they really care about is whether the app runs on the .Net runtime. Generally speaking, I haven't found shops that insist code must be in in VB.Net or in C# or whatever. The value statement is that it run ".Net". But that may be just my own experience. - Shaun
(3) if i write code in scala and im sick than the company will have to wait for me to get better to fix it, because people will be scared to touch it. i think not many .net shops allow you to use any language since you can quit next week and they would be ... not very happy. - martin
I see. The assumption then is that you'd be the only Scala developer in-house? I get that. It's like being the only C++ guy in a .Net / Java shop. - Shaun
(1) we used groovy for small script parts of our code and most people use it like java with properties and they dont care about any other groovy feature. they would not understand adv scala code. - martin
[+11] [2009-09-05 13:29:56] James Black

Not familiar enough with Scala to move to it.

(5) so when you learn scala you will move to it? - martin
(2) @martin: that question obviously can't be answered, because if you're not familiar with it you don't know its strengths and weaknesses so you couldn't make a informed decision until you've learned (at least some) Scala. - Joachim Sauer
[+10] [2009-10-30 06:22:34] Alex Neth

I am in the process of experimenting with Scala on a small project. I have programmed extensively in Java and Ruby.

I'm frustrated by Ruby's lack of strong typing, open module messiness, and the resulting lack of documentation (*). In my experience, Java's greatest weakness is the lack of closures, which makes many operations verbose and error prone. That might be the biggest reason I'm looking at Scala.

I am finding Scala on the surface to be beautiful and concise. On the other hand, the number of idioms, patterns, and rules that lead to WTF moments have been far more than I expected. For example:

scala> val line = "123abc"

scala> val Foo =  """(\d+)(\w+)""".r            
Foo: scala.util.matching.Regex = (\d+)(\w+)

scala> val Foo(a,b) = line                      
a: String = 123
b: String = abc

Ok, so there is an unapplySeq method on RegExp, which is called because of a "compiler trick" when this is on the left side of an assignment (or in a match). That performs an "extraction" on the right side and assigns the resulting List to the new vals passed into the constructor-like call. It's an interesting construct, and I'm still learning about its usefulness, but features like this make the language scary and unnecessarily complicated in simple cases.

Basically it's:

// Note: this doesn't work, since unapplySeq does not return a Tuple
val a,b = Foo.unapplySeq(line)

That makes a lot more sense to your average Bill, especially if we give unapplySeq a nicer name like, say, "match". Sure, there's some fancier stuff you can do with matches (the Scala kind, not the regexp kind,) although I'm not sure how much that buys you in most cases.

These types of tricks strike me as a violation of my keep-it-stupid-simple philosophy. Increasing the brainpower required to understand simple constructs unnecessarily is counter-productive. Perhaps that construct has it's place, but this doesn't seem to be it.

These complications are compounded by the tendency of Scala documentation to use rich examples instead of simple ones. For instance, the example for this in "Programming Scala" uses some advance type notation and for some reason introduces the Scala version of symbols, rather than showing a dirt simple example.

That said, hopefully I'll continue to be interested in Scala once I grasp all the concepts.

(*) If you think specifying an object type is too much work, you're unlikely to think documenting the type is much fun either. And if you're going to document the type, why not specify them programmatically? I digress.

(1) These things are much more comfortable if you have used functional languages before switching from Java to Scala. Maybe people should learn Haskell or SML before going to Scala, because then they merely have to put their knowledge together. - Raphael
[+10] [2009-09-07 11:53:27] Jesper

I can't switch to Scala for my day job, because most of the time I don't get to choose which programming language is being used on the project I'm working on, and there are not many clients that are willing to use Scala (yet).

For my hobby projects, I've been using Scala for the past few months and I like it.

I don't think there is anything inherent in the Scala programming language itself that would prevent it from becoming popular.

The lack of really good IDE support (refactoring, debugging, profiling) is one thing that needs to change to help Scala become more popular.

[+9] [2009-09-05 14:22:50] jlc

Team inertia is the biggest problem: we have spent a lot of energy recently moving most of our code away from scary Perl & C CGI stuff to slightly less scary things in Java. Another paradigm jump to a FP-style language would be too much. (And, of course, politics is as much a part of this as the technical considerations)

What kind of politics? - Łukasz Lew
(3) Management where I work tends to favor homogeneous environments and is rather risk adverse. Not being Java is enough to make them worry a bit. We've had the same problem with JRuby/Jython/Groovy; management wants to be sure that if a bug comes in they could find someone who groks the code, even if those of us interested in other languages are out. (I should note that this is true for production systems, not every last bit of code the team writes) - jlc
Good explanation, thanks. - Łukasz Lew
[+8] [2009-09-05 13:31:49] Tom Hawtin - tackline

Although Scala is perhaps a better language than Java, it is obscure. It seems highly unlikely that Scala will ever become big like Java. Scala needs to become, or look as if it will become, big before I will switch.

There are actually two reasons here: obscurity, and popularity. Can we split it? - Łukasz Lew
I'm really using obscurity as an antonym for popularity (or a euphemism for unpopular if you prefer). - Tom Hawtin - tackline
(5) "With great power comes great responsibility." Bad programmers will write bad code in any language, but powerful languages might even amplify the effect. But on the other hand, it also allows skilled programmers to write better code. It's a double-edged sword. - Esko Luontola
(4) Why is Scala obscure? Why does it seem highly unlikely that Scala will ever become big like Scala? Your answer would be worth much more if you'd provide arguments for your statements. - Jesper
[+7] [2009-09-05 13:31:13] Shaun

My observation of others, as I wont code on the JVM w/o Scala personally.

1) Familiarity - FP, even a FP hybrid, can be disorienting for an OOP programmer.

2) Many programmers are "conservative" or, in Myers-Briggs typing, "preservers" - The status quo has been good enough for X years, why change it?

3) Mastering new languages takes time.

4) Scala is still evolving as a language while Java proper is relatively stable in terms of language design.

Why I did make the switch.

1) I like FP already - I love Haskell, for example.

2) I prefer composition over inheritance, and Scala is a good fit for this type of thinking.

3) I like Erlang's actor model, and prefer it to manual thread management

(1) why not #1 is right on... I consider myself a pretty good programmer, but reading FP gives me vertigo! I get that it's a lack of exposure, but I have a hard time wanting to even try it--- although I do like what I've seen of Erlang and think I'd move to that before any others. - David
(1) Yeah, that was from my own experience. Haskell made my head spin at first (came from C++), and almost dismissed it out of hand. I kept at this though cause I'm stubborn. The good news is that FP language generally all to the same thing, just in slightly different ways. If any one catches your eye and you decide to learn it, then employing another FP language becomes relatively easy. - Shaun
Re #2: I think the real conservatives here are those of us who have to target the JVM, and use a Lisp dialect. That's a status quo that's been good enough for more years than just about anything. :-) - Alec
Scala supports a number of functional constructs and syntax. However, I think it's somewhat unfair to say it "is FP". It is really OOP with FP, vs. say, F# which is FP with OOP. (That is, Scala approaches the OOP model from a similar approach as Java or C#). - pst
(1) Well, I called it a hybrid language (point #1). Whether that's an OO language with FP constructs or a FP language with OO constructs really doesn't matter in practice. Also, two things all "FP" languages share. 1) Functions as first class citizens in the lang (a must by definition). 2) Pattern matching. Scala provides both of these. - Shaun
The "status quo is good enough, why change it" is actually a very valid point. There is usually REASONS why the status quo was chosen originally, and any change away from that needs to account for those reasons. Also it is very cheaper to maintain existing code than rewriting code anew. - Thorbjørn Ravn Andersen
I feel that I may be a bit of an odd programmer if this list is anything to go by. I use Java for university, but PHP and Javascript at work, so I'm constantly switching from OO to procedural to functional programming. While I'm not fond of procedural programming, I like the power of functional programming and the encapsulation of OO, so scala is perfect for me. - Aatch
[+7] [2009-09-05 14:08:52] Wim ten Brink

Java is a proven development environment for about 15 years or so. Scala is new. Why move to something new when we already have something reliable?

(10) Why would anyone have first moved to Java when COBOL had proven itself for 35 years? The claim is that "the something new" is better than "what you have". People should soberly evaluate that claim, but simply dismissing all new technologies with "what I have works, so why should I change?" will almost inevitably lead to commercial disadvantage. - Matt R
(2) Actually, no one really moved from COBOL to Java.Java just opened up new technologies. Just like no one moved from e.g. Delphi Pascal to .NET c#. The old code is still done in these old languages. COBOL is still very much in use. But Java and .NET offer new technologies, especially related to the Internet. They aren't competing with older technologies but are making new things possible. That's progress! Offering a new way to do an existing technology isn't progress. It's a risk which provides no gain. - Wim ten Brink
(1) You appear to be implying there are only two possibilities: either a language allows you to do something completely new, or else it has no benefit whatsoever over existing ones. That's a false dichotomy: a language might simply let you do existing things better. Suppose, for the sake of argument, using a new language would halve your development costs. Would that be a "risk which provides no gain"? I'm not claiming such advantage for Scala, but I do feel a reasoned rejection should go beyond "I don't like new things" or "Scala is identical to Java". - Matt R
If a language allows me to do something better, it is doing something new. But it wouldn't be immediately used since there's already a lot of work done with existing solutions. Just take a look at .NET, which did offer something new, yet it still took a while and a lot of pushing from Microsoft to become as popular as it is now. And .NET did offer to reduce development costs a lot, but no one wants to start over and redesign their current projects. Most used .NET to create something new. Maybe similar to the old projects yet still new, with new techniques. - Wim ten Brink
It's not that I dislike new technologies. I love them and have learned to embrace them, but only when they've proven their value. There are more new technologies designed every day than the number of farts from the average cow. And most just stink, since they're not really improving things. In general, most people are already working with certain technologies and switching to something new is risky and time-consuming. The true value is only gained when the new technology allows adding new features faster than the older technique. And it's better if they can be combined. - Wim ten Brink
[+7] [2010-01-02 08:36:51] SteJav

Number of jobs available in Java v Scala.

[+6] [2009-09-05 16:13:04] Imagist

I've dabbled in JVM languages and have at least a passing knowledge of all the major ones. From what I've seen, I am more tempted by Clojure than by Scala. As soon as I learn Haskell a little bit better, I'll be starting in on Clojure.

why do you prefer Clojure? - Łukasz Lew
(4) It's a LISP, giving it clean syntax compared to either Java or Scala. Persistent data types and laziness are pervasive. - Imagist
It's probably related to the reason that Lisp is more popular than ML. - Alec
[+6] [2009-09-06 09:01:33] Alexander Temerev

Previously I had two excuses for not using Scala: performance and lack of a good IDE.

Now Scala's performance is on par with Java, and Scala plugin for IntelliJ IDEA looks quite mature (and works). So the only excuse is my inertia and laziness. I can write Java almost like I can write English (or even better), in a subconscious way. When I code in Scala, I have to, you know, think. It is exciting, but, for now, slower. And I have projects to deliver on time.

(1) I'm not sure if I would say "on par" -- while "The Language Shootout" has some "strong numbers for Scala", much of the code there is written to be as fast as possible, within the guidelines, and not idiomatic. Scala isn't particularly slow, but it does trade resources (many more classes, many more objects, etc) for a higher-level of programming. - pst
[+6] [2009-09-05 13:43:59] Anon

Already seduced off of the JVM by Python. If I needed do do something on the JVM, I'd try to do whatever in Jython.

Let's include JRuby as well in this answer. - Łukasz Lew
I'm going to list Clojure as a separate answer because while Python and Ruby are their own languages also, Clojure, like Scala, originally targets the JVM. - Imagist
In terms of productivity, there may be an argument for Python, Jython, Ruby, etc... in terms of performance... there's simply no comparison... I LOVE Python, but it's not Java or Scala, and I would never think to put it in any heavy load enterprise environment. - Howard
[+3] [2010-02-03 09:12:29] lapinferoce

For me,I already switched to scala, and love it and don't want java anymore but in my compagny not, because :

  1. The multiple paradigm (object/functionnal) is too complex to understand for my co-worker (most of them still don't understand object programming well).
  2. Lack of mature IDE support is a problem
  3. My co-worker still think php is the best language ever (Should i resign ?)

(2) Your co-worker should resign :) - Łukasz Lew
Agreed... not understanding OOP is not understanding programming. - Howard
[+2] [2010-01-15 08:07:30] Monis Iqbal

For me, personally, it's the TIME problem.

For a more logical answer I think there are 3 major road blocks:

  1. Lack of mature IDE support.
  2. Scala version changes. As old libraries could get deprecated as new concepts are merged into the language. We have seen quite a few quick version updates in the language in the previous year only.

[+2] [2010-01-09 19:43:50] Berlin Brown

I studied Scala for a while and as others have pointed, Scala has some advanced language features. Does the benefit of new language features trump the 15 years of Java code that is out there.

  • Tools: I have had several issues with the Scala Eclipse plugin. I was so fed up with it that I just wrote a simple Scala syntax highlighter (see below). The scala emacs highlighter wasn't much better, especially as new language features were being added.
  • Compile time is still slow. If you build large projects, scalac is pretty slow. This can really effect coding productivity.
  • Scala based libraries? Are there any? We don't really need scala libraries because scala will build java bytecode libraries just like the Java language. But, I would be more included to seriously use Scala if there were libraries built with scala. For example, Haskell had some good tools out there for a while like Pugs, Darcs. I don't know any popular scala libraries out there yet.
  • Web libraries? Is Lift ready for the Enterprise yet. It seems like the answer is maybe. Can Scala interact with existing web frameworks?
  • Maybe Scala needs a long code freeze or port. It seems that new language features are being added every couple of months and I can't tell the differences between the many versions of Scala. This may cause concern for developers that will right code in one version, then upgrade a year later, will the code work with the new upgrade?

At least Scala and languages like Clojure started out on the right foot by being targeted for the JVM. Sure there are issues with the Java runtime but a JVM language will see way more adoption than something completely new like Haskell.

Scala syntax highlighter:

Note: the highlighter isn't robust but the color code matches that of the Java language. It is lightweight and has worked on many versions of Eclipse.

[+2] [2009-09-05 14:18:43] martin

I think the biggest problem with Scala is that its one of the new languages on JVM. If I had moved to jRuby/Groovy/etc in the past would I now be re-writing that code in Scala? Should the whole team know all languages for JVM? Until there is one single best(most popular) language for JVM moving to it is not a good idea. Next week there can be another great language that could make scala look like really weak language. people should stop inventing languages for JVM, because they are hurting adoption of existing languages. if they have cool idea than put it in scala or groovy.

"I can honestly say if someone had shown me the Programming Scala book by Martin Odersky, Lex Spoon & Bill Venners back in 2003 I'd probably have never created Groovy." James Strachan on Scala… - Łukasz Lew
So if James Strachan says he would rather earn his existence by writing machine code from now on, will you make a poll about that too? - Tempus
(1) c'mon Geo, hes just saying that scala is better language. however groovy is backed by spring and jboss(i have used groovy in jboss products) and that make it better language for enterprise(since APIs are already there). - martin
Look at how many people use Groovy, and how many people use Scala. Judging by that, Scala's not the better language. - Tempus
I think this answer sums up my own views. 2 years ago Groovy was the language de jour. Today it's Scala. I'm going to wait until Scala is a little more mature (not technically, but in the literal sense) before investing serious time in it. - Brian Agnew
Scala and Groovy are entirely different languages (the entire approach to typing is well, entirely different) and it is not really fair to compare them. I prefer Scala because, well, I like decent static typing, but that's just what I like in a language. Groovy is more comparable to Jython or JRuby. - pst
[+1] [2010-12-29 04:29:38] Damian Nowak

Scala does not fully integrate with the tools. It's easy to run a pure Scala project or a simple project with Java and Scala sources. But...

Scala specs (unit tests) hardly integrate with Surefire. Surefire is able to run them but specs don't generate XML results. Not good when using a continuous integration server. You have to resign from writing such awesome tests.

class ScalaNativeTest extends SpecificationWithJUnit {
    "'hello world' has 11 characters" in {
        "hello world".size must_== 11

Another thing - no way to run both JUnit, TestNG and Specs tests - TestNG tests won't run then and throw an exception. Also, I wasn't able to run Scala Test [1]. Scala Test documentation doesn't even mention Maven.

If you want to develop things in the newest Scala 2.8, you won't be able to use JARs built on Scala 2.7. ScalaTest 1.1 runs on Scala 2.7 whereas 1.2 runs on Scala 2.8. But you are likely to find libraries that do not have a Scala 2.8 version in the repo.

Google hardly helps me. Noone seems to integrate Java and Scala the way I try to do.


[0] [2011-09-16 17:22:06] Jus12

What is stopping our team from switching to Scala? Programmers indoctrinated with java :) Honest and true opinion.

Oh, and lack of a decent IDE.

[0] [2010-03-17 12:33:18] John

I've never heard of it.

(1) OK, now what's stopping you? - Randall Schulz
(1) There are a billion languages I never heard of. It was a serious answer - I can't possibly evaluate or even know about every language out there so until it starts becoming widely used, it's useless to me. - John
[0] [2010-01-11 03:06:38] Łukasz Lew

More discussion on Reddit [1].


[0] [2010-01-02 12:14:10] Carlos Heuberger

No (private) time to learn Scala - spending too much time on forums :-)

As soon as there is a Scala job assignment I'ld have (non-private) time to learn it... but that's not very likely to happen that soon :-(

(1) This is actually a very good answer when you replace 'time' with 'motivation'. - Łukasz Lew
[0] [2009-11-05 02:58:52] mdm

The Scala compiler is too buggy for my taste. While implementing the Universal Machine for the ICFP Contest 2006 [1] I ran into 4-5 compiler bugs (usually exception thrown somewhere deep inside of Scala for no apparent reason). For a program that is only ~200 lines long, that's really bad.


And it is slow. - Berlin Brown
Usually it is the programmer and not the compiler. - Jus12
[0] [2009-09-05 14:18:18] Tempus

It has such an ugly syntax, and if you don't wanna code Java in it, you'll get unreadable code. So, no win.

(1) there is some true in that, writing bad code in scala is easier and yoru IDE wont help you in refactoring. - martin
(12) This answer surprised me. Scala isn't exactly on my list of "pretty" languages, but in a contest between Java and Scala, I would definitely say that Java has the uglier syntax. - Imagist
(6) If you're going to give subjective viewpoints, back them up with examples, and comparisons with what is "better". If you don't, this is all so much FUD. - oxbow_lakes
(1) I think "ugly" here is referring to complexity. Learning Scala for Java programmer is like French vs. Chinese - it's just hard to wrap a brain around. Look for someone assemble Rubik is trivial too. I would laugh my butt off watching 85% of my work force trying to learn it - they program for years and still use copy/paste as most frequent design pattern -
(1) Actually, I find Scala much simpler (barring the various corner cases) as a language than C# and just slightly more complex than Java. Really, if one of your "programmer" peers can't learn Scala, I feel for you :( - pst
Unreadable is usually coupled with the usage of non-alphanumeric characters in the source. The most readable code I've seen, was written in Cobol... - Thorbjørn Ravn Andersen
[-2] [2009-09-05 13:34:20] MusiGenesis

I'm not switching from Java to Scala because I don't use Java.

(2) are you html programmer? you must be since you came to topic about scala and java. - martin
(1) If you have no interest in Scala or Java, then why are you reading and responding to this question? - Jesper
(14) Because I'm hurt that no one asked me why I'm not switching from C# to Scala. You snooty Java types seem to think that Java is the only language worth giving up. Well I'm here to tell you that C# sucks too. - MusiGenesis
It is true that scala can be used with the .net clr, so it might be appropriate to ask people why they don't switch from c#, vb, or ironpython to scala. - Peter Recore
I am surprised, C# has closure, what simple thing is hard to do in C# and not in Scala? how would you improve this language ? - Nicolas Dorier why does C# suck? - ShaChris23