The Fall of Eclipse (2016)
movingfulcrum.com
movingfulcrum.com
My impression (as someone who used both) is that Intellij IDEA was significantly better than Eclipse (to the extent that I went out of my way to be the sole developer who used it on a team of Eclipse users) but that it was not widely used. Then they decided to release the community edition which enabled people to try it without making a financial commitment. (The "free trials" they had before weren't achieving this -- people knew that any time spent climbing the learning curve would be wasted if they didn't shell out money.) Once people had a chance to see it, they chose Intellij in large numbers because it was a superior product.
For ME, the lesson to take away here is not that Eclipse should have had a more polished project and a more organized organization, but that Intellij was enormously successful because they released an open-source version of their product, and to wonder whether a similar opportunity applies to my own products.
I know when I first picked up Eclipse I was blown away by the power(coding in mostly Kate at the time...), some level of rose tinted goggles as first introduction to a proper IDE.
It wasn't a gradual, this-is-slightly-becoming-worse affair. It was abrupt. Eclipse really did jump the shark, and you could see the shark flying in mid-air :)
I wouldn't choose to aid such a project, UNLESS I felt that JetBrains (the company that produces IntelliJ) was being harmful to the community of users.
A perfect example would be OpenOffice. While it was well-run under Sun I thought most effort should go to a single project not to works. Once it turned evil (Oracle) I thought all support should go to LibreOffice.
I know phpstorm saw a gigantic rise in usage, and webstorm too. Right now they're doing it again with their Go ide (which again is intellij with an official go plug in), and their biggest competition is visual studio code, at least from my pov.
Then they did that major UI redesign TFA mentions. I remember thinking "I can't believe nobody cares that this is slow, nothing works and the UI is unusable. It used to work!". Then I read the Eclipse forums and found out that there was a major UI redesign with no automated testing and very little manual testing, and the reason was "unfortunately there's no budget for testing". This was the word of the actual official devs, by the way. They decided to do a massive rewrite without testing. It boggles the mind. I guess the lesson here is "don't redesign something if you can't test it works", which really shouldn't be a surprise to any software developer.
Then the other nail in the coffin was when refactoring in Scala was so broken as to be unusable -- yes, I'm talking about Scala IDE, the "official" Eclipse-based IDE for Scala. Refactoring methods was sometimes so broken it actually inserted gibberish; I don't mean it got confused, I mean it actually inserted unparseable code, random parens and extraneous symbols. It was embarrassing. I think it got better later, but by that time I was already using IntelliJ CE.
They missed the boat on JS. That was a big issue for me as a full stack dev. When it became clear they were going to drag their feet forever on updates to JSDT and not support the plethora of languages that suddenly seemed to come from nowhere, I had to bite the bullet and go to Intellij.
Eclipse is like a nice house in a neighborhood that needs some serious renovations. Intellij is move in ready with gleaming countertops, fresh floors, new appliances etc. Can you tell I'm house hunting?
On the other hand I've never been a big fan either. Developing plugins wasn't fun - getting various plugins to work together wasn't fun either. It was an OK IDE for Java and some other languages...
I didn't remember the exact version that jumped the shark, but TFA mentions Eclipse 4, so I googled and it must have been Juno (about 2012, then). It truly was night and day: the previous version of Eclipse was fast and responsive, and everything more or less worked, and then we got Juno which was completely unresponsive, took ages to do anything, it randomly froze or slowed down, and all sorts of widgets constantly failed to render or displayed error messages. Simply killing Eclipse because marketplace or some index update took too long became the norm. I remember thinking "but this is a SOLVED problem! All of this used to work! How can this be happening?", then reading the forums and finding out about the complete UI redesign and that they didn't have the budget to test it thoroughly. I'm not talking as a plugin writer but as an end user. It truly was a horror story.
The Scala IDE thing is more understandable because it was something new and Scala is a complex language. Still, it was embarrassing that this was the official IDE and it was so bad. IntelliJ was initially also very bad at Scala -- I remember it constantly gave compilation errors for perfectly good code -- but then it got improved to the point of usability, while Scala IDE remained slow and unusable. At that point I switched.
A version they released where SubEclipse's installer was broken on a fresh install. The work around was install the previous version, install SubEclipse, then upgrade.
And then the next release after, CDT Plugin wasn't compatible with the new version.
The first case it was obvious no one tested installing SubEclipse on a fresh install. The second drove home that any language other than Java was going to be a bastard step child as far as the dev's were concerned.
That sort of thing is embarrassing. You just know some junior dev thought "well, it worked on my computer!". I don't mind when an experimental new feature doesn't work, or when some obscure corner case is broken; shit happens. But when the main, "happy" path for a major plugin doesn't work, the project is in serious trouble and you know it's time to consider jumping ship.
one example in Jetbrains I can rightclick a file or folder in the navigator and search there or inside there. Eclipse(oxygen) there is a search menu with 12 items. Most of those pull up a dialog box with 7 tabs, most of which have some sort of search option which I hope have sane defaults. Sure its more powerful, but its way more than I need 99% of the time.
We talking about people making 100k+ but are worried about spending a few hundred for a better tool. It just shows that the same amount of money is valued different in a different context. Spending 500 more for a better laptop is being questioned and two days later you got to dinner with some VPs and they blow more than $200 per person for wine and food.
The price is probably the lowest cost of a closed source solution.
Because of licensing enforcement mechanisms (we had a site license, FFS), we couldn’t figure out how to push it as part of the product to test or production clusters, so we just use perf, even though it has maybe 1% the functionality, is frequently wrong, and we desperately need the 99% missing functionality.
ad rem - I could never make myself using Eclipse - it always felt like getting in the way instead of helping.
My sympathies for anyone in a company so gimped that they don't allow developers to install software on their own development machines without forms signed off by seventeen people, a sacrifice to the IT administrators, and a 21 day waiting period.
Eclipse seems to be a magical combination of hard to use, slow, and hated.
Was there a golden period? Was it great for awhile, and now is past it's prime, like MS Word?
Maybe I am too stuck in the Eclipse mindset. I find the IntelliJ offering to be very hard to use with a proficiency anywhere near what I have with Eclipse.
I don't know if I will ever join the IDEA crowd. NetBeans can go jump off a cliff.
VA was an excellent tool for Smalltalk insofar as it allowed you to work with a big soup of classes, abstracting away source files to the point of near invisibility.
Fitting Java required a bit of shoehorning, and I must admit VAJava was an acquired taste for me. I had to sink or swim as VAJ was the official tool of my job work environment.
Having grokked VAJ, Eclipse was a godsend for me. It was similar enough that I had little learning curve, coming from VAJ; and it was a complete, professional IDE for $0. At the time Eclipse was gifted to the Java community, the alternatives were either costly or minimalistic and crude.
Eclipse continued to get noticeably better from release 1.0 to the early 3's, and I was honestly excited about each major upgrade. I would say that yes, this was Eclipse's Golden Age.
A classic example of Conway’s Law in action
A lot of vendors wrote Eclipse plugins instead of doing their own IDE and everybody won. You could integrate auto-complete, compiler errors, source control and debugging all in one IDE with a little hand-tuning. You can get this to work across multiple toolchains, not just gcc. Sure, Eclipse is a hog but it still seemed better than having three ugly and buggier vendor IDEs on your machine.
From the article :
> Eclipse 3.x was a fast, native looking IDE
What?? :)
But they truly killed Eclipse. Eclipse probably never had to go beyond being what it was at the beginning, a wonderful IDE.
With Eclipse, I was stuck by the following weird design decision: All your personal preferences such as keybindings were not saved globally but as part of your current project. What were they thinking? Who would want different keybindings for different projects, think of the muscle memory! Maybe there is a use case for having some specific keybinding for a particular project, so they could have made a way to override your global settings in such case... but not make the very first thing you do, customize it to your liking, a very weird thing different from how every other program works.
I mean, it's not even difficult to find, File>Export and File>Import.
Honestly it reminds me of GIMP taking years to finally implement an MDI interface. If only eclipse let me keep the same bindings, UI, etc across different workspaces I probably wouldn't have switched.
EDIT: Although I would like to add that I liked Intellij VIM integration more. I have been using Vrapper for Eclipse and it is decent but not many people are contributing to the project for a while which raises doubts on it's sustainability: http://vrapper.sourceforge.net/home/
Not sure that is true (pedantically), as my son is building Minecraft modules in CodaKid, and they have him using Eclipse, I'm sure b/c it's free: https://codakid.com/. (They have great classes, FWIW/IMO, not affiliated.)
I also don't get all of the "Eclipse is super-hard to use" comments in the thread.
Look, I love LPS and think that now that we have the luxury of local cross-process wire calls and being fast enough to provide butter-smooth IDE features, that is definitely the way forward as a cleaner, less-coupled architecture.
But whenever I pop open Eclipse, it's still faster, runs tests faster, debugs faster (for Java code), than VSCode does (for TS/JS code). Perhaps its Stockholm syndrome, but as a user I really don't think it's that bad.
Where I believe it is bad, and the OP alluded to this, is on the internals/plugin side of things; it sounds like life as an Eclipse plugin developer really, really sucks (see ScalaIDE/etc. pain), and given that the pre-LPS architecture of every IDE was "in-process plugins", that, IMO, is what really "killed Eclipse"/it's momentum.
Especially with open source, where people have to enjoy what their doing to contribute, and AFAIU I don't think I've heard of anyone every enjoying Eclipse plugin development.
But, anyway, LPS to rescue: democratized IDE development, all from within the safety blanket of your preferred language.
Neither do I. I don't find any harder than Visual Studio.
Either you would let Eclipse's black box maven plugin do the work (which half the time didn't seem to build for whatever reason) or run maven manually, which would build great, but then you'd always have to remember to refresh your Eclipse workspace in order to get the application to be picked up by your Tomcat config, etc. It was just cumbersome.
Yeah. I recently had to use IntelliJ after a long period of using Eclipse. IntelliJ does some things better and some things worse, but IMHO, its strengths weren't compelling to override its weaknesses.
> I find those who think [Eclipse is] harder have never used it or bother learning it.
I find that very easy to believe. Some developers just don't seem to want to learn their tools, some want to be elitist about their tools, and the intersection between those sets is embarrassingly large.
It's not perfect and I definitely get some cryptic errors but I'm actually pretty happy with it now. You should definitely add some plugins to make life easier. I like the TypeScript plugin by Palantir, SonarLint for Eclipse, DevStyle by Genuitec, and the Gradle Buildship plugin. eGit seems particularly buggy but I like it. If anybody has any alternatives I'd love to hear about it.
Which IDE will be the next big thing?
And then let the market give the company feedback on which it prefers.
My gut says architecture decisions to enable bloat would still affect the core release, but maybe not? The central issue seems to be disconnect with what the market wants.
tweaks like:
- they added their own custom property that speaks for itself: 'editor.zero.latency.typing=true'
- it runs on a JVM, so update the JVM settings. (Like most apps, they ship with defaults that assume you're running your IDE on something with the memory of today's phone)
- disable all unused plugins
This comment might seem like evangelizing but I find Intellij to be what an IDE should be in many ways. It would be nice if there was a feature to use more performant settings. But that's likely a rabbit-hole to auto-determine for all variety of customer env. Maybe something to make people aware of their options at least would be a middle-ground.
Stop buying cheap old macs or switch to PCs. Tired of the same crap arguments. If your company doesn't want to spring for 3k laptops, get a 1k win laptop with the same specs.
And don't forget how ugly those Swing-based IDEs were because of the ugly, non-cleartype fonts in IDEs like Intellij. Eclipse used SWT which used native widgets if possible.
Eclipse had a plugin for just about everything, but the plugin-hell got to the point that I ended up having many installations of eclipse because the plugins for various languages, frameworks wouldn't play nicely with each other.
But one thing that always drove me crazy about Eclipse that never got fixed was the intellisense/code completion. They could never get it work without pushing some key combination instead of being able to autocomplete on the fly like Intellij, Visual Studio. So you either had to wait to get to the dot to some code completion or manually press ctrl-space which drove me crazy. I read that there was some strange architectural issues deep in the bowels of Eclipse that prevented anybody from fixing that, but who knows.
By the time Eclipse 4 came around I didn't really have a need for it anymore, but remember that they were pushing that web-based IDE and didn't think that spending limited resources for that was a very good idea.
But I'm happy that Eclipse was out there and thanks to all the devs that made it happen.
On a side note, is Netbeans much of a thing anymore? I'm guessing after the Oracle takeover, it fell to the wayside, but it was probably on the downslope even before then. That was a snappy little IDE though.
Switched to jetbrains IDEs now though ha
That's good for some types of coding, but bad for others.
... then the nail in the coffin was going down the rabbit hole with plugins. The bazaar model only works if you have enough shopkeeps. (No offense intended to the gracious maintainers of Eclipse packages, but many could do with a LOT more people helping)
In the 2000 IBM renamed it "WAS" and it was its main studio for J2EE (Websphere) developpers. Some people really liked it.
Then IBM opensourced it as "Eclipse". This name was perhaps a pun on "Sun".
Yes, I had read that rumour too - that it implied the Eclipse of the Sun ...
Of course the Eclipse logo (last I checked) also implied that.
OTOH, Eclipse, while different releases have been better or worse than others, and despite a rough period starting with the whole "Eclipse 4" thing, the Oxygen version has been very nice. I started with a RC of Oxygen and it's worked so well I never even bothered upgrading to the actual release version.
The only thing that really annoys me about Eclipse is that they killed off the TPTP sub-project, and I really liked their profiler back in the day.
Classic Eclipse plugins were all either created by big software vendors who wanted to create a good developer experience for their products or eager amateurs who were scratching an itch. VS Code plugins are more like good open source projects that have contributors and reviewers and frequently sponsors. Microsoft is strongly supporting it, but not with a heavy hand even if it cannibalizes some Visual Studio sales.
Too many knobs. All IDEs are customizable to some degree, but they try and maintain a general sense of coherence. Eclipse, not so much.
Certainly Eclipse has left them plenty of room to swoop in, perhaps as the alternative to IntelliJ.
I started using IDEA because I wanted dark theme and Eclipse didn't have it. Probably even now you can't get nice looking dark theme in Eclipse, not sure, correct if I'm wrong.
Eclipse is one of those tools that I've found to give dividends over the years, I mainly used Eclipse CDT for C/C++ development, and then moved on to Scala and the normal Java based Eclipse. There's also DBeaver for Database work.
The learning curve was steep, mainly around setting up projects so the compiles happened outside the IDE. I mainly used Eclipse to discover the code (call hierarchy was a godsend) and for finding definitions, autocomplete etc...
Over time though the investment has paid of, going from Java, to C/C++ to Scala, to DB work (dbeaver) all have Eclipse underneath it and the same principles apply.
A few free plugins like Vrapper that give Vim emulation are also super nice.
A huge plus is that if/whenever I switch jobs, I don't need to harass anyone in the finance department over licenses. This scales up from the scrappiest of startups to the largest of red-tape laden mega-orgs.
Eclipse has fallen out of fashion but I doubt it'll die, its one tool in my toolbox I can always reach for.
I'm also not happy with embedded vendors constantly pushing Eclipse based IDE's.
I'm a bit surprised by this statement. I've been using TypeScript in WebStorm/PyCharm for quite a while and have been really happy with it. Are there some big flaws I'm not noticing or specific valuable features that they're not adding? Compared with JS and Python, TypeScript coding feels much nicer (as you'd expect when comparing typed vs untyped languages). Comparing with IntelliJ Java, TypeScript support is maybe slightly less magical in one or two areas but seems pretty much on par. I haven't used VSCode enough to have a great comparison, but my impression is that WebStorm is a little more laggy but is more fully-featured.
Edit: I guess since the article was from a year and a half ago, that line may just be out of date.
Even compared to Java IDEs of a decade and a half ago, the refactoring, and other smart-assist facilities in Typescript editors/IDEs is rather weak.
Of course, Typescript isn't generally, totally statically typed, so that brings a whole set of challenges. And Typescript's type system is very complex these days.
But I agree Webstorm (and really the whole suite of Intellij IDEs) does a great job with Typescript. I think only recently in the past month or so, VS Code has gotten unused imports checking.
That is not how I recall it.
That said, there were few things that I liked in Eclipse. Errors were easier to work with. Also I could run uncompileable Java code and I liked it (Eclipse skipped bad code and throwed exception there).
That does resonate strongly with me. I learned to program when Eclipse was (surely according to the graph) the most popular java IDE. It was at that point a good IDE for Java as well and I was quite happy with it.
But after having used IntelliJ for three years now, I really would not want to go back to Eclipse. I had to use it some months ago when I was helping a student with a project, and it does look quite bad compared to IntelliJ.
One nice thing about Eclipse is that its free and there a ton of plugins for almost every language out there. I use Pycharm as my primary IDE but I still have Eclipse installed in case I want to do something in Perl or Java. And to be honest there are always a couple of little features here and there that I miss.
That being said, programming in Eclipse reminds me of simpler times where I would program just for fun.
Eclipse I find to be a mixed beast; if you get it into your 'sweet spot' or ideal configuration, it can be perfect. Mine is Gradle based projects (the integration seems to work fine, or use the CLI), and keeping things simple with POJOs, a bit of Spring Boot etc for more complex things. I've worked with truly horrible projects/configurations e.g. Websphere Application Developer which is/was based on Eclipse but with everything and the kitchen sink bolted on. It was slow, buggy, took 30 minutes between firing the IDE up and being able to work etc. EJB's, DB2 database access etc - just a nightmare.
So to me they're both sort of what you make of them; I find the Eclipse plugins to meet all of my needs well, the times I've tried IntelliJ or paired with someone that uses it, I don't agree with the purported benefits.
Incremental compilation.
You could make a small change, do a Ctrl-S, and Eclipse would compile the change nearly instantly, where all competing products (that I was aware of, correct me if you know better) needed to fire up a Java compiler and feed it at least all changed source files. For me, this was difference of 2 seconds versus maybe 20-30.
I remember this word from the movie submarine.
It does, and it's much better than javac for IDE use cases. That's one of my biggest pain points with IntelliJ. They've tried to implement some kind of incremental compilation on top of javac, but it doesn't work reliably and often forced 5-minute from-scratch recompiles on the last project I worked on.
Eclipse comes with its own compiler and ONLY requires the JDE to develop Java application, not the JDK.
They also claim that its their compiler that implements the incremental compilation
https://www.eclipse.org/jdt/core/
>JDT Core is the Java infrastructure of the Java IDE. It includes:
>An incremental Java compiler. Implemented as an Eclipse builder, it is based on technology evolved from VisualAge for Java compiler. In particular, it allows to run and debug code which still contains unresolved errors...
>...The JDT Core infrastructure has no built-in JDK version dependencies, it also does not depend on any particular Java UI and can be run headless.
Not only that, but what does it matter if incremental compilation is "not tied to the compiler" if Eclipse was the only software that utilized it at the time?
Java Hotspot has always been a huge productivity booster.
I think they've retrofitted Mono to run in interpreter mode or something in order to get around those restrictions
I had to change to PHP Storm, which is, IMHO, the best PHP IDE so far, and worth the price.
There might be a real discussion here, though. E.g. as far as I know anybody who ever tried IntelliJ loved it so much that he never wanted to switch back to Eclipse. In the circle around me, 100% of people. Other people may see different outcomes. But still both Eclipse and IntelliJ where both kind of considered leaders in the Java IDE market for a long time. So it might be really interesting to discuss the strenghts and weaknesses of both.
Also a good discussion could be had how the path to Eclipse 4 developed and how things might've been done differently. That would require analysing other IDEs like the Microsoft's as well.
So, you know. Quite a wasted opportunity, right here. If someone reads this and felt like upvoting, could you put into a few sentences why?
Like COBOL, I believe Java will continue to be the bread and butter of application programmers long after crossing popularity curves with a dead slug.
Another statically typed language, non-JVM, with decent momentum is Go. It's like C with a slew of sorely needed improvements. Very straightforward and there's often a single, obvious way to get something done. As a result I find I'm very productive in it. Performance is topnotch too. Tooling is quite good. I'm not sure it replaces Java as an "Enterprise" language for large-team projects though.
Kotlin is another "better Java" language on the JVM. Pleasant enough to work with, but not as large an adopting community. Tooling is good if you like IntelliJ.
C# is Microsoft's challenge to Java. Has borrowed some good ideas from Java and extended them, interfaces well with Windows (obviously). Tooling is good if you like Visual everything and Microsoft.
Now may be a good time to switch to a language that more fully embraces functional programming. F# and OCaml are possibilities, Erlang has a great rep for stability, and Haskell is said to be very powerful but with a daunting learning curve.
I'm experimenting with all of these and have the damndest time making up my mind. There's kind of an embarrassment of choice.
And of course, you're not really targetting the JVM when you're programming Android, but Dalvik or whatever runtime powers Android these days.