Eclipse committer on Android IDE switch to IntelliJ
twitter.com
twitter.com
And, sadly, the UX aspect isn't even the biggest problem with Eclipse (all "IMO" of course). Performance, especially memory usage is a huge issue (especially on 64 bit systems) and the updater/plugin mechanism is too damn unreliable. If you use more than 2 or 3 plugins, it's almost inevitable that you will, at some point, try to update something and get the infamous "could not complete operation" message when adding a new plugin, or updating an existing one. Now, that's not really the problem... the problem is that eclipse just vomits a page and a half of error messages and opaque version numbers and strings at you, when this happens... instead of giving useful help on how to resolve the situation.
All of that said, I still use (and, in many ways like) Eclipse, but it is very frustrating to see these same problems drag on for years and years.
I guess it all depends on what factors you want to optimize for, like fun or success.
It's tempting to make these sorts of claims because a mild level of user hostility plagues most FOSS gui apps that we encounter, but I think it's more useful to think instead of how difficult it apparently is for organizations to make effective UX design decisions.
It's equally likely that a "horrifyingly designed UI" (much like Eclipse) came out of an Enterprise Software shop.
None of the incentives are aligned toward optimizing user experience (i.e. rarely do the people who use the software the most have any say in how it gets built). And, because the way responsibilities are divided (i.e. one team per set of functionality, I imagine), no one in the leadership structure is empowered to make big changes that affect everyone; and so you're left with small incremental improvements and shitty error messages.
Eclipse update mechanism (called p2) actually at is core is very powerful and can actually find out/remedy the installation/update but it was just never exposed in the UI used by Eclipse IDE's.
Simply explained before Kepler p2 would just try and do exactly what you told it to "install these 2 plugins" and if its dependencies somehow conflicted it would give up ("could not complete operation").
In Kepler if this situation occurs p2 will try remedy the situation and try find out which plugins would need to be updated or maybe even downgraded to make it possible for you to install your plugins.
Thus we are some that actually care and do what we can to improve it - this feature got in with help from @prapicault
And for full disclosure i'm @maxandersen from the conversation OP linked to and lead of JBoss Developer Studio.
I still love eclipse. I'm not ashamed to admit it. I've helped people sell businesses and go public with this damn platform creating millions in revenue along the way. When it's powering my livelihood and my employers happiness, I feel like something went right somewhere.
It's a shame the UX in 4.2 has been such a thing to focus on.
I have used it on and off since the early days, and as hardware got faster, Eclipse... somehow has not. Its responsiveness on my 2011 Macbook Air SSD is truly shocking from the point of view of both UX and productivity.
I use it every day at the moment, and this is the only thing that I am constantly noticing.
The plugin compatibility thing can be a massive pain if you get bit by it too, of course, but doing plugins right is quite hard I think, and Eclipse isn't the only one failing there.
I often thought that this is just because it is Java. And almost all other Java apps feel similarly sluggish.
But then compare IntelliJ. It really feels very snappy. The startup time is not too long and then everything is extremely fast and responsive.
I m still a intellij user at home but at work we use yoxos and it is very good to customize and maintain eclipse configuration.
In short, Eclipse mostly works for what I do, and while it frustrates me at times, there isn't enough pain there to motivate me to throw away the investment I've made in learning to use, configure, and customize Eclipse - for an alternative which may or may not even be better. Also, Intellij didn't always have the Open Source version, and I generally avoid using any software that isn't F/OSS. So for the longest time, my only real options for a Java based IDE were Eclipse or Netbeans. I played with Netbeans a little here and there, but never found it compelling. shrug
For me on Windows, crashing is extremely rare. I've used it on just about every project I've worked on to great benefit. I typically run JavaEE config, and then add in m2, FindBugs, Subclipse, ADT, and sometimes Aptana when I want to check on it.
I never notice memory because I never run out of memory. Where configs is everyone using that memory is such an issue?
Not me. I run it on Linux. Fedora Linux on my personal laptop, and Ubuntu on my $DAYJOB machine.
I never notice memory because I never run out of memory. Where configs is everyone using that memory is such an issue?
It's not so much about running out of memory, as just the fact that Eclipse consumes a lot of memory, which means it doesn't play nice with other apps. I have 4GB of RAM in my $DAYJOB machine, running 64bit Ubuntu, and after I load Eclipse 4.2 with a few projects open, it's not uncommon to find the resident image size sitting at over 1GB. So, that wouldn't be a problem in isolation, but now add in an instance of JBoss running, PostgreSQL, a few browser windows with a bunch of tabs open, a PgAdminIII window, a couple of Gnome Terminal windows, etc. and pretty soon the hard-drive is just thrashing like crazy, essentially freezing the entire system, for minutes at a time. To be fair, everything is contributing to that, but Eclipse is one of the main culprits.
I think the main problem is that having 4GB for a workstation is really low (specially for today's standards). Specially reading all the stuff that you put in.
I can imagine your day-to-day computer work should be unbearable. Are you based in the USA? I know that over there you can get 8GB for about $60, which for a company that is paying you $3000 monthly is peanuts.
Then again, part of it is being on a laptop that doesn't have an SSD which makes swap painfully slow. But still, Eclipse takes too much freaking RAM for what it does, IMO.
All of that said, the next laptop I buy for myself is going to have an SSD and as much RAM as I can possibly afford.
As a side note, this is why I never configure swap space in a server. If a server starts swapping, it's a fail. It should have enough RAM to do the tasks it's supposed to do, without ever running out of RAM. When it runs out of RAM, either the software has to be reconfigured to work within the available RAM, or the RAM has to be increased; or some tasks should be allocated to other servers.
One thing is for sure, intellij (the dark theme) looks beautiful. Makes me wonder if eclipse should still be spending (wasting?) resources developing their own GUI toolkit.
1. Startup time. I just ran it twice on my machine. First time it took 20seconds before showing the splash, then 10 seconds after that (I'd never launched it before). Second time it took over 5 seconds to launch completely
2. Cluttered UI. menu bar + status bar + project explorer + tasks + outline take up between 20 and 70% of the window depending on how big I have the window (god help me if i try to use it on my old laptop with its 1300x700 resolution)
3. Difficulty of editing stand alone files. It's just a pain in the arse editing files that aren't in the project, and that you don't want to be in the project
For comparison, sublime text 2 launches in <1second on the same machine, and that includes restoring 100% of the previous working state, including unsaved changes to all files, even if the computer crashed and it wasn't closed down properly.
edit: I almost forgot
4. It also takes 1-5seconds to close.
To me, it is the difference between a car and a bike. The two serve different purposes.
I don't mean to downplay problems with Eclipse. I remember that it was confusing when I first started using it. In the intervening years, I think the problem with eclipse is one of missed opportunities (or misplaced priorities).
Give me column editing, multiple cursors, and snippets and i will show you an editor i can code a system of any real size with.
It's more about smart refactoring, code completion, extensibility, project management, "open type hierarchy", "show usages", etc. You kind of need these things in big projects. Especially enterprise Java ones.
"Of any real size" - I dispute you've written one that counts.
I might be wrong, I've never worked in something an order of magnitude larger than a few million.
Debugging without the IDE is a huge pain. Finding what functions call a given function, when many functions have the same name (so forget grep), is also something we use very very often to check what impact a change would have. That and "go to definition".
Also you don't need snippets because it has (wait for it) templates! Sample thing, user definable complete with variables to interpolate just like Sublime Text. Been there before ST existed as a product.
I think there is an Eclipse IDE education problem at work here. Discoverability seems to be really low.
On the other hand, I am excited to try this new Android Studio IntelliJ thing, simply because of the hype and people's recommendation that IntelliJ is heaven. If it improves my productivity, then great. If not, I am fine with Eclipse and it looks like they got their wake up call to better their product.
I use SlickEdit for C++ and it starts much faster, but while it can "do" java, its completely ineffective compared to IntelliJ or even eclipse. OTOH IntelliJ occasionally hugs all 8 cpu threads trying to grok spring bean usage across three maven projects. Its a price I'm willing to pay.
And finally theres TextMate and Joe or on these knackered solaris boxes, vim. Can't really beat vim for start-up time, but unlike some of my genius friends, I can't get my head around it for large projects.
My point is, if your use case is open editor, open file, edit file, close file, close editor, then you don't want an IDE, and there are plenty of great editors for your use case.
but comparing eclipse with sublime text is like comparing word to the notepad. a bit unfair.
I don't think startup time or even close-time are particularly important. If you're using an IDE, you shouldn't expect to open it up and close it time and time again in one session, unless...
I think the main pain in the ass you missed about Eclipse is that it crashes a lot. I actually quite liked Eclipse until my project got a tiny bit bigger, and it kept on crashing every few hours. Worse yet, its backups are really bad. You'd think it had some auto-backup facility set on default, but there isn't one that works well enough.
Sublime Text is great, I love it, but its a text editor. If I wasn't a lazy guy I would keep using vim/emacs, but I like mice so I use Sublime Text.
When Sublime Text adds drag and drop refactoring, in app debugging, and the millions of other features required from an "integrated development environment" then startup time would be a more equal comparison.
This could be very hard to fix. Does Eclipse have all the interfaces defined for correct behavior in all cases? how long would it take all the plugin developers to code the implementations for "Is this action sensible on this object?" and have that happen every time the selection changes?
I will say as someone working with SWT right now that I'm not a fan.
Not sure how IntelliJ compares in this regard.
"We don't support rectangular selection and probably never will."
A general tip to find features like this: Press Ctrl+3 (Cmd+3 on Mac OS X) or type in the "quick access" search bar in newer Eclipse versions. It shows the command and the shortcut. Also useful for toggling "Show Whitespace Characters" without needing to have the button in the toolbar, jumping to a preference page, etc.
Can you explain the Intellij draw to me? I've spent the last two days off and on look at the community edition via installion and googling and I don't see the killer feature set that everyone is talking about. It looks like a JEdits older brother to me.
On a fresh computer, download and install Netbeans 7.3 and Eclipse 4.2. Then check out a Mavenized JSF project from and run it.
Netbeans does Maven and Subversion out of the box, so I don't have to install any plugins. I point it at Tomcat, and it will build and deploy the app for me with one click of a button and zero configuration.
I have never successfully gotten all the plugins and everything necessary to do this with Eclipse working. The member of our team that uses Eclipse deploys wars manually for this reason.
IntelliJ, for what it's worth, also seems to do all of this out of the box (I used it for about a day, and concluded it wasn't enough better than Netbeans).
The easiest way for me to describe Eclipse's problem and why I don't like it is to simply say it is worse. It's fat, slow to start up, slow to use, requires hours of complicated setup to get it to do what you want. Netbeans utterly wrecks it for every use case I have. Outside Java, I use Emacs mostly. I would actually love to get Eclipse working so I can use eclim, but the configuration story is just so horrible. Installing plugins is slow. Choose an update site? Wait five minutes for the UI to respond while it downloads a sitemap? Which of these five plugins is the Subversion plugin I need? What's Mylyn, and do I need integration with it or not? And so forth.
It's a great pity because Eclipse -on paper- is the kind of IDE I should love. It's powerful, flexible and let's you tune it to behave the way you want it to behave. But getting it to bend to my will has on occasions in the past, taken more time than it would have taken just to bang the code out in a plain text editor and then compiling it myself via the command line.
Say I have some code in some directory. I want to edit that code. How do I do that?
The whole mess with workspaces is so confusing, even resetting all settings like your shortcuts! Why would anyone want their shortcuts reset when working on something new?
Also, ctrl+k for find next while every normal UI program uses F3 for that (and some gnome ones settled for ctrl+g): why? Seriously: why?
It's not just that it doesn't do what you expect, it's that what it does do is disasterous for someone who was expecting redo (because it destroys your forwards edit action tree).
Eclipse organizes code by using "projects", which is really just saying "all files and folders in a specific directory". It's much like projects in SublimeText. In Eclipse you can open and close projects within a workspace. So I have like 15 projects within a workspace, but only have a few of them open at any given time.
The only time I use workspaces is for work when I have projects that are required to be a specific name (and I open different branches of that same project), but this is fairly rare for me.
For the repeat search you can edit your key-binds.
- Change class name and every other java file which uses that class will also update correctly.
- Show errors when a dependency is missing.
-Change type of a method in one class and every error caused by that change, in every file is immediately highlighted.
-Right click on a method and ask eclipse to show you every method which calls that method...recursively.
-...and so on
You CAN just open a java file without creating a project, but then you don't get much more than syntax highlighting or formatting help.
Not to mention you write "obj." and can instantly see all the methods available with arguments.
Also if you add say an interface or inherit a new object it will immediately throw an error if required methods are not implemented. You then just hit ctrl+1 and enter and it will automatically add all the boilerplate functions you need to comply with the new interface.
It's a must for statically compiled, boilerplate filled languages like Java and C#. That said, if intellij is more polished for a niche and has a better UI I'll switch away from Eclipse in a heartbeat.
If you're not working with a dynamically typed language or markup language though then an IDE can really add a significant boost to productivity by eliminating all the repetition and actually making the strict static typing work for you.
Eclipse could learn a lot from Xcode on how to do autocomplete well. I haven't spent enough time thinking about each to articulate a list of differences, but overall Xcode's implementation feels much faster, more responsive, and more intelligent - in terms of both when and what to show. It's the same "feature" in both IDEs, but in Eclipse it feels like I'm fighting against it much more often than in Xcode.
Why can't eclipse do that?
Maybe things have changed since then, but I haven't bothered to try it.
It's a pain to have to worry about configurations like this instead of just being able to get work done.
What is the problem with File->Open?
These days I set up a clean workspace and configure it and just make copies instead of creating the new workspaces from Eclipse.
I've heard some advocate a best practice of just using a single workspace and using views and Mylyn to manage context. But there is a point where Eclipse goes over a performance cliff with the number of files and projects and the system is just not usable. That and the ever present possibility of workspace corruption make separate workspaces the way to go for me.
Also: Key bindings suck. I used to be able to get "Home" and "End" work in a sane way on Macs, but not anymore.
I wonder sometimes if it is an ego thing. How often is the whole direction of a particular featured changed completely because the author feels they have to be better than some other similar feature in a competitor environment? When someone says "Yeah, but even Visual Studio does X" does that send the developer into a flurry of "Oh yeah I can do X++?" or not?
I see similar things in the window systems, and find it sad that even in an all open source space there are such vitriolic attacks on KDE/Unity/Gnome from both inside and outside the various camps. Why is that? Its like sports franchises for nerds where there is some sort of built in comparison conflict, some need to be the "winner".
I completely agree that Eclipse could use a 'benevolent dictator' who not only was able to make decisions by fiat if necessary, but also was not caught up in defining their self worth by how Eclipse compared to other IDEs.
| vitriolic attacks on KDE/Unity/Gnome
I can understand the attacks on Unity. It was swapped to the default environment in Ubuntu before it was ready for primetime, and it represents Ubuntu's increasing distance from the rest of the Open Source (or at least Linux) community (see Mir vs. Wayland).Part of it is NIH, but the other part is probably the lack of full integration and control they'd have with regards to Ubuntu. It's still open-source, and they're working hard on it. I don't see what the issue is.
That said, keeping Kubuntu going is not Ubuntu's responsibility. It may very well be that Kubuntu will need to fork off Ubuntu (or base off a different distro), and that's ok!
I may not agree with all their technical & business decisions, but I do love that they are willing to experiment on the "big things" and provide a little competition in the space.
That said, their arguments against Wayland were way off. Which was a very big mistake. Though I tend to attribute that to not understanding Wayland well rather than malice.
| That said, their arguments against Wayland were
| way off. Which was a very big mistake. Though I
| tend to attribute that to not understanding Wayland
| well rather than malice.
I don't necessarily think that it was malice (you can bad-mouth someone without malice), but it raises a lot of questions.- Why was Ubuntu so misinformed? Why didn't they discuss things with the Wayland devs?
- Why haven't they admitted their mistake in their reasons[1]?
- Why is Ubuntu still going forward with Mir? Why not just use Wayland if the 'shortcomings' of Wayland that drove them to create Mir don't exist?
[1] Maybe they have, but I haven't come across it.
Maybe the switching cost of moving to Wayland outweighs the remaining cost of completing Mir.
Whatever the reason, I'm not complaining about the result, since I actually think it's healthy for multiple competitors to exist in the same space, especially for something as widely used as a windowing system:
(1) They can cross-pollinate ideas
(2) Competition puts pressure on sub-par projects to innovate.
Regarding (2), IMHO it's much easier for your project to innovate when a competitor who's on your radar pulls ahead in mindshare or market share gives you the kick in the pants you need when you're merely starting down the road to stagnation. If you're a near-monopoly on your market niche (post-X FOSS windowing systems in this case), you can get completely ossified and not realize it until everyone leaves as soon as your monopoly disappears due to new competitors (funded by the fraction of your own dissatisfied customers who have deep pockets) -- a position which is much more difficult to recover from.
- debugger (and everything about it, like hot code swapping, etc)
- run configurations (setting multiple run configs for one project happens!)
- views: I mean i use only "java" and "debug". they could be faster but i don't mind, you don't switch them often.
- workspaces are ok too, when it comes to organizing your projects in groups. It's ok, really.
What i hate:
- performance. for example the typical problem (i think it is a bug) when you switch between java and xml editor and you wait like 5 sec.
- workspaces that resets everything. wokspaces should group projects, not the user preferences. Dear eclipse, it's still the same person opening them!
- why the hell i have to spend 2h configuring eclipse after downloading a new version? does not svn/git/maven a default requirement for java development today?
- search. i never remember which tab out of 6 and what setting will allow me to just do grep in the project folder.
- the toolbar - please remove all this crap. I will only use those 3 run buttons and switch perspective anyway.
be sure you are not using Eclipse 4.2.0 but at least latest 4.2.2.
Juno has been plagued with performance problems and so I downgraded to 3.8 and it's back to normal. (I.E. no atrocious delay in switching from Java to XML editors)
Just disable all the other tabs by pressing "Customize..." in the search dialog and only selecting "File Search".
Or in the upcoming Eclipse 4.3, there is now an option to always show the last used page, see here: http://download.eclipse.org/eclipse/downloads/drops4/S-4.3M6...
The "Eclipse IDE for Java Developers" comes with support for Git and Maven nowadays – no SVN, is there anyone still using it? ;):
http://www.eclipse.org/downloads/packages/eclipse-ide-java-d...
Some plugins like the Maven one is something that I can't stand. It's confusing, lacks things like running a clean without needing to create a bogus "run" configuration.
EDIT: I forgot to say that I hate editing HTML code in Eclipse. It's slow, autocompletion is hit and miss and package explorer doesn't know how to group web content.
EDIT2: How could I forget about the pesky hidden directories full of stuff in it? Nightmarish!
No please, for a lot of companies not in the USA (say, in Mexico), the price of any JetBrains product is prohibitive.
The next question is, what will come out of the reflection?
Probably a better understanding of the class hierarchy.
I use IntelliJ primarily for Play Framework development. I've installed plugins for almost all other languages (node.js, python, mustache etc) and use IntelliJ for that but for non-Play Java, I tend to go back to Eclipse.
Some of that may be the 10 years or so now that I've spent with Eclipse.
I did find that some common operations I do through the GUI require more clicks then when I do them in Eclipse. I didn't find it enough better to switch, but I run on fairly honkin hardware (Ivy Bridge i7, 16 gigabytes of RAM) and I changed the Eclipse default heap size to 2g.
For JUST Java, IMO Eclipse wins for me.
public class Foo { interface Callback {} }
public class Bar { interface Callback {} }
The last time I asked Eclipse to find all implementors of Bar.Callback, it actually returned ALL instances of any interface called "Callback" as if it is just doing a String search and not actually using type hierarchy information in the search.
Eclipse auto-assist often popups up tons of bullshit that is not relevent, like asking to import say, a class called 'Util', Eclipse would often show all kinds of entries from private com.sun.* classes in the JRE/JDK first. It's as irritating and choosing what Country you're form in a Web Form and it has Afghanistan first and United States at the end, even though it should know from locale or Geo-IP how to sort better.
Maybe this has been fixed recently, but it has always worked the way it should in IntelliJ. IntelliJ also handles Maven better. And it handles integration between Java and other DSL languages better. IntelliJ's PSI model of code is far richer than JDT.
I was very frustrated the last time I tried going to IDEA and I wrote about it on my blog (http://www.fisharefriends.us/wordpress/2013/01/27/intellij-i...). My observations:
. It seems to take a long time to “warm up” before IDEA runs as smooth as Eclipse.
. Eclipse is stupid about detecting when you changed a file from outside of Eclipse; IDEA is not. Eclipse is very annoying when you use Emacs/vi/OxygenXML as an additional editor.
. “JetBrains :: IntelliJ IDEA” is a stupid, stupid name.
. Emacs key bindings in Eclipse is better, alt-w and ctrl-y “just works”.
. Maven projects is poorly integrated into Eclipse’s concept of “projects”.
. I miss the native “choose file dialog” you’d get with Eclipse.
. I think the new version has incremental compile like Eclipse, but it doesn’t seem to work by default.
. The Maven daemon in IDEA used around 300MB of memory and continually consumed CPU resources.
. The keyboard stopped working for some reason.
My experience was with the community edition, perhaps I should give the professional edition a try. But at $200 and having had such a poor experience with the community edition, it is a hard sell.
Go to Preferences > General > Workspace. Enable the "Refresh" option(s) there.
Sure there are plugins to "integrate" these build systems, but I've wasted too many hours futzing around with keeping the external build system in sync with their Eclipse plugins (many times having to recreate projects altogether to get past some sorts of corruption). Anybody who's had to pollute their poms with Eclipse specific config after a lot of research because of the "Plugin execution not covered by lifecycle configuration" problem will know what I mean. Don't get me started with sbt integration.
This has been brought up a couple times in the sessions, they didn't do a great job of explaining in the keynote. If you want to hear the official story, watch a recording of the Android Fireside Chat session.
This is big problem in most open source software projects :\
1. Graphical interface for compilation errors
2. Graphical interface for debugging under gdb.
I haven't seen anything like it (Visual Studio is nice, but only runs on MS). Would love to hear if anyone uses different IDE's for c++ devel that works cross platform.
Q: In Eclipse, how to reveal current file in filesystem
http://stackoverflow.com/questions/1161240/in-eclipse-reveal...
I hope Google and JB can work together to do a nice job and provide a better development experience for Android.
Anyway, Eclipse for Java development is definitely okay IMHO; but for Android development, there are always nasty bugs like this [2]
[1] http://source.android.com/source/code-style.html
[2] https://code.google.com/p/android/issues/detail?id=27940
Energia is basically a port of the Arduino IDE to work with TI Launchpads, including the TI Stellaris, which has an ARM Cortex-M4F. Before Energia was ported, Eclipse was the IDE to use for TI Launchpads.
Working with this IDE has been pure joy. Adding libraries is as simple as copying the library into the folder and restarting the IDE. Simply by replacing Eclipse with Energia has made hacking with TI launchpad devices more fun.
but i still consider intellij the better standalone IDE.
I never understood why that was never offered at least as an option.