I like all three of the popular Java IDE's and all three have plug-ins for Scala. I'll probably try all three eventually, but since I'm totally new to the language I figured I'd ask which is the most full featured Scala IDE?
I feel obligated to keep the updates coming. I decided to work through the "Principles of Reactive Programming" Coursera course [1] using the latest milestones of Eclipse and IntelliJ. As of December 2013, IntelliJ is far better. The refactoring support is greatly improved. The refactoring support for Java is still better, but all the common refactorings are there. Since I've been paying attention for a few years now, I can say that the feature gap is growing. Even if JetBrains stopped all work for two years, I doubt that Typesafe could catch up. The current versions are Scala 2.10.3, IntelliJ 13 EAP, and Eclipse Scala IDE 4.0.0 Milestone 1.
Some specific feature gaps:
For reference, here are my previous updates.
I feel obligated to keep the updates coming. I decided to work through the "Functional Programming Principles in Scala" Coursera course [2] using the Eclipse-based Scala IDE 2.1-M2 and I'm still sticking with IntelliJ. The Eclipse plugin has a few new refactorings, but it still messes up basic things like indenting if there's anything other than curly braces on the line. Plus I miss two crucial features that IntelliJ has had for a while; the ability to reformat or re-indent a whole file, and the auto-fix which adds or removes type annotations.
As of January 2012, using 2.9.1, I'm still using IntelliJ. Scala IDE for Eclipse 2.0.0 is less buggy than previous versions, but the new features were already mostly already there in IntelliJ since September 2010. The refactoring support isn't great in any IDE, but IntelliJ is still slightly ahead.
As of September 2011, using 2.9.0, I'm still using IntelliJ. I haven't tried Eclipse or Netbeans in the last year. Not much has changed.
As of September 2010, using 2.8.0, I'm happy with IntelliJ, it's nearly satisfactory.
As of March 2010, using snapshot builds of Scala 2.8, I find IntelliJ to be the best.
I've finally had the chance to use all three. As of June 2009, I find NetBeans to be the best. That's based purely on the editor though and I find Eclipse to be better in other ways. None of the three are very mature now, so I use Vim just as often.
[1] https://class.coursera.org/reactive-001/class/indexI'm using Vim and happy with it.
I am fan of Netbeans, if you include commercial then I would go for IntelliJ ;).
Here is the Scala Plugin for Netbeans [1]. But remember its an experimental thingy, and you might need to pull it from nightly builts. For now, its good to go with Eclipse Scala Plugin, and if you are inclined towards Eclipse like Brian, and unlike me, then Eclipse is an obvious choice indeed.
[1] http://wiki.netbeans.org/Scala-J-Xmx1024m -J-XX:MaxPermSize=500m
in etc/netbeans.conf
and remove -J-ea
if it exists. Everything works nicely, including code completion, refactoring. Its still somewhat buggy but managable. Better than Eclipse and IMO also IntelliJ. - Jus12
Eclipse Scala is probably the most featureful as the editor goes, but it's also pretty unstable. IntelliJ and NetBeans tend to be more stable in general. NetBeans also has some lift integration (or so I hear).
Personally, I find all of the Scala IDEs to be insufficient for my needs. For some reason they choke on a file with 70 case classes... Instead, I use jEdit with a tweaked editor mode [1]. Between that and Buildr's Scala support, life is golden!
[1] http://github.com/djspiewak/jedit-modes/tree/master/scala.xmlFor everybody who is okay with EMACS, check out ENSIME -- http://youtu.be/A2Lai8IjLoY?hd=1
Allegedly, the server portion is generic and can be refitted to other front ends -- hoping to see Eclim Scala support one day.
I'm really comfortable in Eclipse so I started there. First, I had weird difficulties getting JUnit to work. I think this was because I added the JUnit library to the project after I had already added some Scala classes to it. Then I tried to rename a file and it went bezerk. So I tried NetBeans instead. I've found it a little less responsive (NetBeans always is, it seems) and it has a few less features, but it seems much more stable so I'll stick with that until I hear otherwise.
Now that I'm more familiar with the Scala libraries though, I'm not sure I really need an IDE. I find myself much less reliant on "Ctrl + Space" coding than in Java. Maybe I'll go back to vim eventually.
You should definitely try out all 3. None has extensive features when it comes to Scala, so you'll probably have a favorite of the 3 after only a day or two of testing. My current fave is IDEA.
The Eclipse Scala plugin is being developed by the scala language team, so it the official one. I prefer IntelliJ in general, so I use theirs. It works fine for me :-)
In the context of 2.8, I have used Eclipse 3.5.x with the nightly plug-in and IDEA Community Edition 9.0. IDEA has been clearly better for me, except for compilation times. But I use sbt in parallel and it takes care of that.
My main issues with the Eclipse plug-in are:
I did not have those issues in IDEA 9.0 build #IC-93.13 with the recent plug-in 0.3.385. Additionally IDEA shows me unused import statements.
All plug-ins seems to be evolving quite quickly and are actively developed and I suspect that what is true today may not be in one month. I hope that in a few months from now, we will just be able to use our favorite IDE and have good Scala support.
The question is actually "not the worst Scala plugin" because all of them are pretty ugly and buggy. Its strange thing that such an expressive, powerful and progressive language still have no convenient IDE.
I checked out all of them but now using Eclipse plugin and I'm pretty dissatisfied with it. It crashes all the time, gives weird suggestions and doesn't allow to do even simple refactoring.
I use Netbeans. The Eclipse plugin is definitely more advanced, but every time I try it, it drives me crazy with problems.
One year after my original answer, I continue to stand by it. IntelliJ 10.5 (I'm using the Community Edition) with the Scala plugin beats the heck out of the latest Scala IDE for Eclipse. For Scala, IntelliJ is (in my experience) much faster and stable than Eclipse. IntelliJ editing and debugging with Scala 2.9.1 is very smooth. The previously noted full rebuild problem no longer exists.
Original answer:
I have installed the community edition of IntelliJ version 9.0.3 with the Scala plugin and it works beautifully -- syntax highlighting, code completion, and (this is critical given limited documentation for Scala, especially 2.8) the ability to navigate to declarations and implementations of Scala library classes and functions. IntelliJ seems to rebuild the entire project whenever you "make" the project, but in that regard it's no worse than the Scala Eclipse IDE. No crashes so far.
Before trying IntelliJ, I tried the Scala plugin for Eclipse and was very disappointed with it. I had tried it in the past and it was pretty flaky, but still provided some value despite its bugginess. I tried the latest "stable" Scala Eclipse version (Scala 2.8, Eclipse 3.5.2) yesterday (before installing IntelliJ) and it is effectively unusable -- very slow, buggy, crashes often (at least on Ubuntu 10.04 64 bit).
I think the Eclipse Scala plug-in is my favorite. Although I use Eclipse for Java so it was an obvious choice.
IntelliJ 10 is sooo much better than eclipse as of 01/11. My team struggled with Eclipse Scala stability for months.
If you're doing anything beyond very basic scala development (i.e. big project with continuous integration etc) I recommend using Intellij with Maven 3. The integration between the 2 is nearly seamless.
Spend your time in IntelliJ and use maven for build. We've tried Eclipse and SBT/Buildr. Although both of the tools beat mavne in speed and DSL capability, they lose because of their less comprehensive plugin support and community. Bottom line is maven be a pain but the plugins actually work well. You won't be regretting it when you have to integrate cover, make osgi bundles, etc. There are plugins for everything.
I've tried all three plugins now. I started with the Eclipse one, since I use that in Java, but it's still hopelessly unstable. The Netbeans one feels much more reliable, but I was hoping for more features. So I'm trying the IDEA one right now - so far it feels a bit temperamental but potentially more powerful.
All three need some work, it seems. :(
It partly depends on your style of working, as all the options have strengths and weaknesses.
If you need refactoring across mixed java/scala projects, then IntelliJ is your only option. IntelliJ is also the most stable option for Scala 2.7 code.
If you want to do any work on the compiler or a compiler plugin, then Eclipse has the advantage of being able to launch a runtime workspace with a custom compiler build, including breakpoints.
Netbeans is a fine choice to go with if you're already very familiar with that platform, the costs of learning a new environment may well outweigh any benefits, and all three solutions are improving rapidly.
I think Eclipse is the smallest evil at the moment. But it is also horrible buggy and not up to the language unfortunately.
I currently use TextMate (on Mac) with one of the TextMate Scala plugins/bundles and the Simple Build Tool (sbt) which automatically builds and tests if required whenever the source files change. Quick, simple and robust.
I tried the Eclipse version, and found it to be extremely buggy. However, after digging a little, I came across some heap setting changes they suggested to make in the eclipse.ini file. After making these changes, the plugin behaves quite well. I think they should be more explicit about these settings, as it almost turned me off of the IDE when I was trying to use Eclipse without them.
I have been using scala for the past few months from my experience i found that IntelliJIDEA is so far the most convenient for the beginners. Though it lacks support for the lift framework its good to go with.... However as linjunhalida said ... the Emacs with the ENSIME plugin has the best support for the language so far ..... :-)
Short code snippets you can even edit, compile and run online with ideone [1]
[1] http://ideone.com/recent/39-scalaFor what its worth, albeit a little late to the conversation; I have found IntelliJ to the best most stable at the moment. My only complaint is when you're not using Maven to set up a Lift project -- its a bit fiddly for that. Otherwise just using the IDE for Scala is great.