September 30, 2008, 8:28 pm
I mentioned in my earlier post that eclipse 3.4 was acting bad on 64 bit JVM. I was finally able to rectify it. The root cause is an access violation and I could trace down this bug on the sun website http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6659207. There are posts on the internet where people have fixed this by either switching to a 32 bit OS or a 32 bit JVM - both these are not necessary.
The trick was to increase the perm-gen space and adding the following line to my eclipse.ini file:
-XX:CompileCommand=exclude,org/eclipse/core/internal/dtree/DataTreeNode,forwardDeltaWith
At the end of it all - here is what my eclipse.ini file for ganymede looks like.
-showsplash
org.eclipse.platform
-vmargs
-Dosgi.requiredJavaVersion=1.5
-Xms128m
-Xmx512m
-XX:MaxPermSize=256m
-XX:CompileCommand=exclude,org/eclipse/core/internal/dtree/DataTreeNode,forwardDeltaWith
The subclipse plugin works flawlessly without any problems as well.
September 24, 2008, 8:20 am
I hate writing or reading topics like editor and IDE wars. I think the answer to this question will vary with developer needs, experience and requirements.
I have been using eclipse for a better part of five years now, not only for Java but also for Ruby, Python, Perl and PHP - although I must admit I have spent about ninety percent of the time doing JEE only. For the last three months or so I have been doing a lot of groovy and grails development and I have found the groovy plugin for eclipse quite inadequate for serious development. The debugger just does not work very well and the editor is bloated, buggy and non-functional. On my 64 bit linux machine it keeps crashing eclipse 3.4. (although this could possibly be fixed by modifying some JVM parameters - I just haven’t fixed it). A vanilla download of eclipse PDT would not even start on 64 bit linux - it’s quite a shame that they dont fix these rough edges.
For pure java development I think there is yet a better open source platform, netbeans is a hog and is quite bloated to work with. I always believe that open source software will grow faster and perform better and will be a better bet longer term both in terms of productivity, tool support and not to mention cost benefit and certainly eclipse has served me well. There is one tool though that has defied this theory - intelliJ has keep chugging along and has just released its 8.0 M1 release - congratulations to the team. We are primarily a intelliJ shop and I have tried hard to make developers move to eclipse, I have successfully moved quite a few over to the dark side.
My visit to the New England Java Symposium had a surprise, a one year personal license of intelliJ 7. So in the last 3 weeks or so I tried it and to be quite honest - I love what I see. It does not have a huge set of plugins, but all the ones present are quite easy to work with and certainly dont compromise the stability of the IDE platform. I installed the Jet Groovy plugin and imported the Grails project and was happily coding in less than an hour.
The groovy class drill down, code completion and other features, to my pleasant surprise work by orders of magnitude faster and better than eclipse. Here are some interesting observations I would like to share:
- Eclipse has an overall better editor - invoking templates (textmate style tab completions) is trivial, the editor has better and more intuitive code completion, I think the shortcuts are more sensible - hitting tab makes more sense to me than a ctrl+shift+enter and templates are invoked with a ctrl+space just like standard code completion unlike the ctrl+J in intelliJ
- IntelliJ has an awesome grails and groovy support, refactoring, drill down and code completion works without a hitch. (I prefer eclipse JEE for GSP/JSP editing however, this could just be the eclipse DNA speaking however).
- Eclipse has a much more sophisticated XML support. The ant editor and support is better as well, in my opinion.
- I like the automatic facet recognition in intelliJ. This makes the use of frameworks like spring quite simple. Although the overall support for spring is much better in eclipse. Spring IDE also gives you tools like web flow integration, you would expect a little better support for eclipse since the tools are actually written by the spring team and the project is well funded
- IntelliJ supports JSF out of the box, although supporting frameworks like A4J and facelets is missing. Eclipse does support them via plugins.
- I love the fact that intelliJ is designed form the ground up to support projects with various structures - supports the importing of eclipse, maven, JBuilder out of the box. This means you can have frameworks spit out .classpath and .project files for eclipse and import them into intelliJ. I am sure there are open source tools or plugins for eclipse, but no such support is built in.
- Both IDEs have a plugin architecture. There are without a doubt more eclipse plugins, a lot of them are quite flaky and quite frankly not production ready. Although the eclipse versioning and dependency managment simply sucks. Installation of plugins has, on more than occasion, destabilized my install. I have had my JVM crash and the plugins freeze. My experience is to be a little conservative with the eclipse releases for best results. I still use Europa and most plugins work quite well with it. IntelliJ so far has been rock solid stable. Most of the plugins can be accessed and installed from within the IDE. Both IDEs require a restart, which is OK - but I still don’t understand why this cannot be done programmatically.
- The source control integrations are mixed. I think eclipse is better with CVS and perforce (via P4WSAD plugin), intelliJ has better subversion support. I think both subclipse and subversive are great on windows - but I have had a torrid time getting them to work on 64 bit Linux. The subversive plugin does not even install an SVN provider by default on x86-64 linux. I just don’t have the time to muck around with it any more. IntelliJ’s SVN is provider works out of the box, is stable and I love the inbuilt diff.
So are you still wondering which IDE to use? My answer is simple, use what works for you. IntelliJ is an awesome commercial tool for java development and spending $250 for a personal license might not be a bad deal if it makes you productive. After using the jet groovy plugin, I will certainly not mind spending the $250 - since it will make me more productive and just the time you save might be worth it. Eclipse can be a great tool with the right plugins and certainly will remain alive and kicking for a long time, in software terms, to come. So continue coding yourselves crazy.