State of the IDEs

7 views
Skip to first unread message

E. Biggs

unread,
Jul 1, 2010, 12:22:48 PM7/1/10
to Lift
Hey guys, first of all this isn't a Lift post so feel free to trash
it, I just thought this might be a good community to query on this
issue.

A year+ ago I gave up on the IDEs and just decided to go with a text
editor since scala without an ide is better than Java with :)

And personally I'm ok with there never being a scala IDE. My problem
is mainly that I want to see Scala take off and am amazed that since
2003 the IDE support is such that it would seem Scala cannot take off.
At the end of the day Scala is targeting Java people, and those Java
people love their IDEs.

So yesterday I saw that the eclipse plugin has its own shiny new site
that's sexier than even the main Scala site. Wow, they must have come
a long way in a year, I thought, and eagerly tried it out only to find
that the autocompletion functionality is as slow and useless as it
ever was... I don't know the first thing about efficient
autocompletion indexing etc.. but shouldn't this mostly just be a
solved problem from every other language that's ever needed
autocompletion? Why is it taking the Scala IDE team the better part of
a decade to get us this? When I have to wait longer for my list of
methods to come up than it would have taken me to just type the
method, well, it makes the plugin useless.

I remember the netbeans plugin was decent but I don't particularly
like Netbeans. Maybe I'll finally try out Intellij...?

What are your guys' thoughts on the state of lift-ready scala ides?

Derek Chen-Becker

unread,
Jul 1, 2010, 12:55:25 PM7/1/10
to lif...@googlegroups.com
Well, I would ask that you be careful on the tone of your email, but let me just toss out my thoughts:

  1. IDE for Scala is still significantly behind Java IDE support in terms of features/capabilites
    1. Some of Scala's language features mitigate the impact
    2. Java's tooling had a significant head start
    3. A lot more people are working on Java tooling than Scala
  2. IIRC, there has been significant work done on the Scala compiler for 2.8 and infrastructure to assist IDE writers with things like type resolution, error checking, etc.
  3. Let me reiterate, there aren't a lot of people working on Scala IDEs. Miles, Caoyun, and others who are working on Eclipse, NetBeans, IDEA and things like ensime deserve kudos and respect for all of the hard work they're doing
  4. Speaking specifically to autocompletion, I think that it's harder than you might realize. In particular, Scala's features like implicit conversions make this more complex. The compiler changes I mentioned in #2 are supposed to assist with this, I think
I'll be completely honest, the Eclipse plugin isn't where I'd like it to be, and the fact that it's based on 2.8_RC* while Lift is still compiling on 2.7.7 means that I use emacs for Lift work right now. Still, I see significant forward progress for all major IDEs and I don't think that this will be a long-term problem.

Derek


--
You received this message because you are subscribed to the Google Groups "Lift" group.
To post to this group, send email to lif...@googlegroups.com.
To unsubscribe from this group, send email to liftweb+u...@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/liftweb?hl=en.


E. Biggs

unread,
Jul 1, 2010, 1:03:51 PM7/1/10
to Lift
I apologize if I came accross as abraisive. Truth is of course I owe
anybody working on any ide, whether usable or not, a debt of
gratitude, as they're doing far more than me to help make my currently
favorite jvm language a success. No ifs and or buts about it. I just
wanted to speak candidly about what it's like for someone who sees
such a polished site download something that's basically not ready for
use. I think the plugin should be more honest about its readiness.

That said, I'm glad to hear that people are hard at work tackling a
challenging problem.. and it sounds like progress is being made at a
level as fundamental as the compiler. That's good news.

On Jul 1, 9:55 am, Derek Chen-Becker <dchenbec...@gmail.com> wrote:
> Well, I would ask that you be careful on the tone of your email, but let me
> just toss out my thoughts:
>
>    1. IDE for Scala is still significantly behind Java IDE support in terms
>    of features/capabilites
>       1. Some of Scala's language features mitigate the impact
>       2. Java's tooling had a significant head start
>       3. A lot more people are working on Java tooling than Scala
>    2. IIRC, there has been significant work done on the Scala compiler for
>    2.8 and infrastructure to assist IDE writers with things like type
>    resolution, error checking, etc.
>    3. Let me reiterate, there aren't a lot of people working on Scala IDEs.
>    Miles, Caoyun, and others who are working on Eclipse, NetBeans, IDEA and
>    things like ensime deserve kudos and respect for all of the hard work
>    they're doing
>    4. Speaking specifically to autocompletion, I think that it's harder than
> > liftweb+u...@googlegroups.com<liftweb%2Bunsu...@googlegroups.com >
> > .

Derek Chen-Becker

unread,
Jul 1, 2010, 1:08:24 PM7/1/10
to lif...@googlegroups.com
No worries. I think it would be fair to say there's a level of frustration out there about the current state of things.

To unsubscribe from this group, send email to liftweb+u...@googlegroups.com.

Kevin Wright

unread,
Jul 1, 2010, 1:22:07 PM7/1/10
to lif...@googlegroups.com
The eclipse plugin is definitely going from strength to strength, expect to see some big improvements in the near future:
- refactoring
- organising imports
- source code layout

I fully expect the Eclipse plugin to take the lead at some point, due to the way it integrates with the compiler it has the potential to work much better once compiler plugins are involved.

For now though, IntelliJ seems to have the most robust support.


--
Kevin Wright

mail/google talk: kev.lee...@gmail.com
wave: kev.lee...@googlewave.com
skype: kev.lee.wright
twitter: @thecoda

David Pollak

unread,
Jul 1, 2010, 6:11:01 PM7/1/10
to lif...@googlegroups.com
My thoughts are:
  • IDEs are not necessarily a good thing.  Most dynamic languages do without IDEs and do quite well without them.  Back in 2005, there were piles of folks claiming Ruby/Rails would never get popular without IDE support.  The nay-sayers were very wrong.  Granted, Scala taps into a more Java-centric market, but non-the-less, I don't think an IDE is a must-have for Scala development (it is on the other hand a must-have for Java development because of the verbosity of the language and the complexity of the constructs in Java... it's just too much typing for a human).
  • Scala presents more complexity than other languages for a full IDE implementation (e.g., searching implicits as well as the methods on the class itself.)  This is mitigated in Scala 2.8 because the IDE authors have been working with the EPFL Scala team to put hooks into Scala to support many IDE features.
  • The resources devoted to Scala IDE development are trivial compared with the efforts for other languages.  Given the number of people on each of the projects, the results are super-good.
  • IntelliJ has the best code completion and is reasonably usable to learn all the methods that can be invoked on a given variable.  NetBeans is a close second (and my choice when I want an IDE).  Both of these IDEs are usable for many programming tasks and the likes of massive refactorings should, in my opinion, should be undertaken manually so that the developer understands what's being changed around.
 

--
You received this message because you are subscribed to the Google Groups "Lift" group.
To post to this group, send email to lif...@googlegroups.com.
To unsubscribe from this group, send email to liftweb+u...@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/liftweb?hl=en.




--
Lift, the simply functional web framework http://liftweb.net
Beginning Scala http://www.apress.com/book/view/1430219890
Follow me: http://twitter.com/dpp
Blog: http://goodstuff.im
Surf the harmonics

Kevin Wright

unread,
Jul 2, 2010, 4:42:01 AM7/2/10
to lif...@googlegroups.com
Scala occupies an unusual place here

In many ways it's true that the language doesn't require an IDE as much as Java does - especially if you perceive boilerplate generation as one of the main roles of the IDE :)

OTOH, Scala has the potential to benefit from an IDE *more* than Java.  The syntax allows for a wider range of refactorings (part of the benefit from static typing), implicits/typeclasses and scoped imports mean that available methods are dependant on context, and the ability to put multiple classes in a source file mean that it's not always immediately obvious where a given implementation might be found.  It also helps having a way to present the simplified form of Scaladoc as provided by the 2.8 collections library.  None of these points demand an IDE, strictly speaking, but that *is* the usual point of entry for most developers.

And yes, both these facts can be true at the same time!  Scala both needs an IDE less than Java and more than Java.  At least... it needs something that can provide functionality normally associated with IDEs.


Alexz

unread,
Jul 2, 2010, 12:14:39 PM7/2/10
to Lift
If I may throw $.02 in the hat, I'd lean to the "needs an IDE"
position.

I'm an IntellIJ user of some years-in-service (since v3; it's v9.02
now), and the reason I strongly prefer it over Eclipse and NetBeans
isn't boiler-plate generation. That's nice, but not critical.

It saves your time because it watches over your Java and helps you
write it quicker and cleaner. I haven't had Java compilation error in
years because you never need to compile to find them - they are found
for you as you type, and explained. On top of it, there's the crown
jewel - Intention PowerPack - which watched your code for several
dozen classical misuse patterns, highlights them and offers automatic
re-writes, in essence teaching you better Java on the job.

With Java, it's gotten to a place where you no longer have to think
about typing at all - it's closer to what designers do to Photoshop -
all visual aids and shortcuts. Scala, being significantly more complex
and cryptic than Java, could really use an IDE and teaches beginning
developers how to write it well. If JetBrains were to crowd-source
Intention Powerpacks for Scala (which I'm not sure they've even
started on yet), I'd take time every working day to contribute.

- z


On Jul 2, 1:42 am, Kevin Wright <kev.lee.wri...@gmail.com> wrote:
> Scala occupies an unusual place here
>
> In many ways it's true that the language doesn't require an IDE as much as
> Java does - especially if you perceive boilerplate generation as one of the
> main roles of the IDE :)
>
> OTOH, Scala has the potential to benefit from an IDE *more* than Java.  The
> syntax allows for a wider range of refactorings (part of the benefit from
> static typing), implicits/typeclasses and scoped imports mean that available
> methods are dependant on context, and the ability to put multiple classes in
> a source file mean that it's not always immediately obvious where a given
> implementation might be found.  It also helps having a way to present the
> simplified form of Scaladoc as provided by the 2.8 collections library.
>  None of these points demand an IDE, strictly speaking, but that *is* the
> usual point of entry for most developers.
>
> And yes, both these facts can be true at the same time!  Scala both needs an
> IDE less than Java and more than Java.  At least... it needs something that
> can provide functionality normally associated with IDEs.
>
> >    - IDEs are not necessarily a good thing.  Most dynamic languages do
> >    without IDEs and do quite well without them.  Back in 2005, there were piles
> >    of folks claiming Ruby/Rails would never get popular without IDE support.
> >     The nay-sayers were very wrong.  Granted, Scala taps into a more
> >    Java-centric market, but non-the-less, I don't think an IDE is a must-have
> >    for Scala development (it is on the other hand a must-have for Java
> >    development because of the verbosity of the language and the complexity of
> >    the constructs in Java... it's just too much typing for a human).
> >    - Scala presents more complexity than other languages for a full IDE
> >    implementation (e.g., searching implicits as well as the methods on the
> >    class itself.)  This is mitigated in Scala 2.8 because the IDE authors have
> >    been working with the EPFL Scala team to put hooks into Scala to support
> >    many IDE features.
> >    - The resources devoted to Scala IDE development are trivial compared
> >    with the efforts for other languages.  Given the number of people on each of
> >    the projects, the results are super-good.
> >    - IntelliJ has the best code completion and is reasonably usable to
> >    learn all the methods that can be invoked on a given variable.  NetBeans is
> >    a close second (and my choice when I want an IDE).  Both of these IDEs are
> >    usable for many programming tasks and the likes of massive refactorings
> >    should, in my opinion, should be undertaken manually so that the developer
> >    understands what's being changed around.
>
> >> --
>
> >> You received this message because you are subscribed to the Google Groups
> >> "Lift" group.
> >> To post to this group, send email to lif...@googlegroups.com.
> >> To unsubscribe from this group, send email to
> >> liftweb+u...@googlegroups.com<liftweb%2Bunsu...@googlegroups.com >
> >> .
> >> For more options, visit this group at
> >>http://groups.google.com/group/liftweb?hl=en.
>
> > --
> > Lift, the simply functional web frameworkhttp://liftweb.net
> > Beginning Scalahttp://www.apress.com/book/view/1430219890
> > Follow me:http://twitter.com/dpp
> > Blog:http://goodstuff.im
> > Surf the harmonics
>
> > --
> > You received this message because you are subscribed to the Google Groups
> > "Lift" group.
> > To post to this group, send email to lif...@googlegroups.com.
> > To unsubscribe from this group, send email to
> > liftweb+u...@googlegroups.com<liftweb%2Bunsu...@googlegroups.com >
> > .
> > For more options, visit this group at
> >http://groups.google.com/group/liftweb?hl=en.
>
> --
> Kevin Wright
>
> mail/google talk: kev.lee.wri...@gmail.com
> wave: kev.lee.wri...@googlewave.com
> skype: kev.lee.wright
> twitter: @thecoda

Alexz

unread,
Jul 2, 2010, 12:18:04 PM7/2/10
to Lift
I guess the glaring misplacement of prepositions lets on that IntellIJ
uses type too fast ... :))

Donald McLean

unread,
Jul 2, 2010, 3:15:25 PM7/2/10
to lif...@googlegroups.com
The Scala plugin for IntelliJ is far from perfect, but it's
significantly better than nothing.

<full disclosure> It has been my experience that people who like
Eclipse do not like IntelliJ and vice-versa. I like IntelliJ - a lot.
</full disclosure>

Donald

Naftoli Gugenheim

unread,
Jul 4, 2010, 12:04:33 AM7/4/10
to liftweb
What do eclipse users dislike about IntelliJ?


--
You received this message because you are subscribed to the Google Groups "Lift" group.
To post to this group, send email to lif...@googlegroups.com.
To unsubscribe from this group, send email to liftweb+u...@googlegroups.com.

Kevin Wright

unread,
Jul 4, 2010, 3:37:40 AM7/4/10
to lif...@googlegroups.com
I use both, but...

3rd party tooling is a big one, cobertura for example isn't available in IntelliJ.
I also take issue with the way they generate code from the swing designer (less relevant to Scala, I know)
There's also a very extensive list of things you can't do while it's "indexing", such as list all the defined launch configurations.

--
Kevin Wright

Nolan Darilek

unread,
Jul 4, 2010, 8:59:19 AM7/4/10
to lif...@googlegroups.com
This is kind of off-topic too, but this has been a great thread thus far
and I'm hoping to get advice on this issue.

I find that, as brought up earlier, Scala has a number of features that
minimize my need to use IDEs. In particular, the ability to put multiple
classes in a single file is huge. In developing my various Android apps,
I tend towards an activities.scala containing all of my app's
activities, particularly as some are only a few lines long.

But a huge stumbling point I'm finding are imports. I don't encounter it
as much with Lift, as the codebase isn't as large and is becoming more
familiar to me, but under Android I find myself forgetting which
packages certain classes are in and desperately missing IDE features
that add missing imports.

I was wondering if I was the only one in this situation, and if anyone
had any tips? I tend to put all imports from a single package on a
single line, but those lines can get rather long at times.

back when I learned Java years ago, I read that "import foo.*;" was
frowned upon, though I don't remember why specifically. Yet I see folks
using "import foo._" more liberally in Scala codebases. Is that still
frowned upon, or are there aspects of one language that make wildcard
imports preferable in Scala while not being so in Java? Or was this
unpopular ten years ago due to speed whereas now processors are fast
enough to introspect packages fast enough that it doesn't really
matter? Or are we as Scala users typically using command line tools and
paying close attention to our compiler output to notice warnings about
one import shadowing another, whereas IDE users might not be?

I'd be very interested in hearing folks' takes on this. I can't count
how many times I've had to Google for a fully-qualified class name
because someone's Java code didn't include it and they simply took it
for granted that I could press a single key and have that class imported
automatically. Frustrating!

Alexz

unread,
Jul 4, 2010, 2:07:14 PM7/4/10
to Lift
Nolan,

Alexz

unread,
Jul 4, 2010, 2:26:01 PM7/4/10
to Lift
Nolan,

the reason for avoiding "*" imports originally was JVM/classloader
performance (reading a lot of JARs, basically). These days, many
frameworks happily do full classpath scans, so import to your heart's
delight w/out worries.

As for IDEs, they aren't inherently evil, just annoying to folks
with established habits that run counter. David once (rightfully)
trashed IntelliJ as a crap Scala IDE. All of his points were valid per
se, but he's not a regular user, and is unwilling to deal with said
crap.

I am, for example, and I'm so used to dealing with it that I don't
even register it any more - it's near 0 cognitive cost. I
automatically hit the "Home" button on the file dialog, and use the 15
- 20 secs of indexing time it sometimes takes to consider what I'm
about to write.

If I were to switch to something else, it'd have to be very much
better to justify the cognitive cost of rewiring visual and keyboard
habits. Nothing is that much better - I've looked. If I may, don't
optimize for IDE features, optimize for your brain cycles, which are
happier spent coding. Chose a work environment - don't really matter
which one - and stick with it.

-z

On Jul 4, 5:59 am, Nolan Darilek <no...@thewordnerd.info> wrote:
> This is kind of off-topic too, but this has been a great thread thus far
> and I'm hoping to get advice on this issue.
>
....

David Bernard

unread,
Jul 4, 2010, 3:12:55 PM7/4/10
to lif...@googlegroups.com
Hi,

Without IDE, using import with _ is nice/quicker for writer, but it's
hell for readerS.
When there is multiple import with _, the reader, who didn't write the
code, spare lot of time to find from where a Type, method, object come
from.
Reader could be :
* the man who try understand the code, learn the api (and need to read the code)
* the man who want to refactor the code
=> keep lot of useless import when he extract method, type,...
because it's ease
=> lot of time spend when move a Type into an other package
* ...
* the man who write the code several time ago

IMHO :
* coding scala without IDE is +/- ease for single developer or small
team who own/understand the api. But it become very hard in other
case.
* emacs with lot of time spend to search/configure lib (like
yasnippet, ctags+anythings[1], mvn/sbt connector... ) is an IDE, and
lot of time to learn emacs (note that I stop using emacs since I stop
coding in scala 2.7.7, and contibute to eclipse plugin as (eclipse is
my IDE java coding)).

/davidB

[1] http://www.emacswiki.org/emacs/Anything

Dan Oxlade

unread,
Jul 5, 2010, 6:37:02 AM7/5/10
to lif...@googlegroups.com
I've been very pleased with the Intellij support.

I'm quite dependent on good IDE support, to the point where I've chosen scala versions and frameworks based in their ease of integration.

My experiences have not been without pain but I've learnt along the way:

1. Use intellij 9
2. Update the scala plugin frequently (it seems pretty actively developed)
3. There is a great SBT plugin http://github.com/mpeltonen/sbt-idea-plugin to generate you .ipr / imls
4. Choose scala versions carefully, I've had varied success with 2.7.7 and 2.8.x
5. Chose test dependencies wisely 
    - specs 1.6.0 works with 2.7.7 and allows you to run from ide.
- scalatest 1.0-for-scala-2.8.0-SNAPSHOT works with 2.8.x and allows you to run from ide.
6. maven also integrates nicely and helps by downloading source attachments as per usual.

The project I'm currently working on I'm using intellij 9/sbt/2.8.betal1-rc3/scalatest combination and everything is working great.

Autocompletion can occasionally be slow. I have tended to explicitly type all my vals vars and defs as IntelliJ tends to struggle to autocomplete otherwise. I know this is a bit of a shame as scala's implicit typing is very powerful but I find it actually makes my code a little easier to read.

Hope that helps.
I have a couple of scala projects on github (github.com/oxlade39) if anyone wants to use the project setup/library versions.

Dan


--

TylerWeir

unread,
Jul 5, 2010, 8:41:41 AM7/5/10
to Lift


On Jul 5, 6:37 am, Dan Oxlade <dan.oxl...@gmail.com> wrote:
> I've been very pleased with the Intellij support.
>
> I'm quite dependent on good IDE support, to the point where I've chosen
> scala versions and frameworks based in their ease of integration.
>
> My experiences have not been without pain but I've learnt along the way:
>
> 1. Use intellij 9
> 2. Update the scala plugin frequently (it seems pretty actively developed)
> 3. There is a great SBT pluginhttp://github.com/mpeltonen/sbt-idea-plugintogenerate you .ipr / imls
> 4. Choose scala versions carefully, I've had varied success with 2.7.7 and
> 2.8.x
> 5. Chose test dependencies wisely
>     - specs 1.6.0 works with 2.7.7 and allows you to run from ide.
> - scalatest 1.0-for-scala-2.8.0-SNAPSHOT works with 2.8.x and allows you to
> run from ide.
> 6. maven also integrates nicely and helps by downloading source attachments
> as per usual.
>
> The project I'm currently working on I'm using intellij
> 9/sbt/2.8.betal1-rc3/scalatest combination and everything is working great.
>
> Autocompletion can occasionally be slow. I have tended to explicitly type
> all my vals vars and defs as IntelliJ tends to struggle to autocomplete
> otherwise. I know this is a bit of a shame as scala's implicit typing is
> very powerful but I find it actually makes my code a little easier to read.

I think "occasionally" ennobles IntelliJ here. It's slow enough to
only be useful when I can't remember the method/etc. Otherwise, I
type everything.
This is my only complaint though, everything else seems a-ok.
> > liftweb+u...@googlegroups.com<liftweb%2Bunsu...@googlegroups.com>
> > .
Reply all
Reply to author
Forward
0 new messages