Summary
X-develop is an unknown Java IDE that allows for very agile development patterns without getting in the way. This blog post illustrates a unique approach called 'fuzzy' or 'freeform' refactoring that is enabled by a unique X-develop featured called 'instant project-wide on-the-fly error checking'.
Advertisement
For many months I have been wondering why people where frequently criticizing the lack of agility in the Java language, the rigidity of its static typing system and the supposed uselessness of generics. Suddenly I realized that I found myself in a position that most other Java developers don't experience: I had been using an IDE for years that makes Java development amazingly agile and pleasant.
Let me introduce CodeGuide or it's multi-language bigger brother X-develop. The beauty of these IDEs is very similar to what is recently happening in the Java landscape: power and simplification through default intelligent behavior without an overload of configurable options or explicit features. When you start X-develop for the first time, you'll probably browse through its menus and preferences, thinking that it only supports a fraction of the refactorings of IDEA or Eclipse. Well you know what, you're right. Yet, while it looks more primitive on the surface, I feel much more confident embarking into complex refactorings with X-develop than with anything else. How is this possible?
Enter the genius of Omnicore's vision by having designed and developed instant project-wide on-the-fly error checking. This is probably the worst understood and most powerful IDE feature in existence. The keywords instant, project-wide and on-the-fly are of capital importance here since they allow for free-form refactoring or fuzzy refactoring development styles.
To explain what this is about, it's probably best draw the parallel with test-driven development: you first code what you expect and then fix everything until your code works. I apply this approach constantly while refactoring: I perform the changes that I want to introduce in certain classes and as I type, I see the errors gradually appear in the entire project. This happens literally as I type, without any compilation or execution of the application. The only thing that I have to do afterwards, is work through the errors one by one (which can be easily done by using the shortcuts ctrl-up and ctrl-down) and fix the code so that the errors disappear. Sometimes I can be working for hours like this by continuously improving APIs and never ever having to wait for any compilation or execution delays. Apart from being an amazing feature in itself (since the IDE really understands your entire project in real-time), this way of developing is also extremely satisfying since you see the errors disappear one by one.
This is just one of the awesome features of X-develop, some of the others I prefer are:
a lot of screen estate for your code with minimal IDE artifacts that stand in your way or distract you,
back-in-time debugging,
very sensible code-hyperlinking,
permissive code completion (it works even if there are syntax errors),
extremely fast syntax highlighting,
preserve case in search/replace,
great JUnit and and Subversion support,
intuitive, simple and powerful GUI editor that doesn't introduce a new layout manager.
Now of course there are not only great things to be said. Due to the Java market having been bombarded with free IDEs, Omnicore had to diversify itself and support Mono and .Net as well. This slows down the work they can perform on the Java front since they are only a small company with limited resources. I'm however hoping that the recent interest for more dynamism and agility will see an uptake in their Java user-base, giving them more funds to invest in further developments.
So, if you want an agile IDE that leverages the Java language to its fullest and targets hard-core developers, you owe it to yourself to give CodeGuide or X-develop a try. Don't just use it as your current IDE and search for the counterpart of the features that you already know. In many cases you will not find it because Omnicore has solved the problem in a creative and often much more elegant way.
Thanks Omnicore for making my day a more pleasant one, every day.
Disclaimer: these are my genuine feelings and it's not a marketing ploy! I'm not affiliated with Omnicore and the only thing I have to gain is when they get more users, my preferred tool will become even better. Besides that, the people at Omnicore are really great and have always promptly tried to resolve any problems I had. I thought it was about time I gave something back for the more than excellent support they've given me over the years.
Disclaimer 2: I frequently force myself to work with IDEA and Eclipse for at least a week since I want to make sure that I'm not missing out on the best tools. While they both are excellent IDEs, I never reach the same comfort and productivity that the instant on-the-fly project-wide error checking of X-develop and its debugger provide me.
I have heard of one other IDE that did something similar to what CodeGuide and X-develop do. It is (or was) Borland's JBuilder (JBuilder X to be more precise).
Unfortunately, it suffered from severe performance issues, as well as being buggy (or rather brittle - it gave the impression of a poorly built house of cards);
Hi Corman, that's in fact one of the most impressive things about X-develop, it's really instant and thus extremely fast. I use it on projects with 300kloc and 4 thousand classes, it handles that without any problems. Quite a feat if you consider the amount of information it has to analyse and process.
Hi Michael, it's instant project-wide on-the-fly error checking. Eclipse only checks your currently active file directly, but you have to compile before it check the entire project (which can of course be done automatically when you save your projects). The speed of the error checking is thus much slower and requires a human trigger. I've also found that Eclipse easily gets confused so that the errors are not in sync with the actual code anymore. Really, to feel the difference, you should try X-develop out. Sadly this is one of those things that very difficult to explain in words, everyone usually nods while thinking 'been there, done that'.
I havent used CodeGuide in a while, but I dont see eclipse's deficiencies in this area. The code gets compiled and the project checked when you save the current file, which is just a matter of typing Ctrl+S. Not a problem at all, really. True, eclipse gets out of sync every once in a while (though rather seldom), but that can also be fixed by running a clean on the project.
I do agree that CodeGuide is a leader in this field, and their technology is unique, but I dont think that particular feature is lacking much in eclipse, either
I read your very positive article, and thought I'd give X-develop a go. After the download the first thing I did was write a JUnit test class; and there was no JUnit support. Nor was there any mention of JUnit or how to install it in the help system. Not a good indicator for Java development! You probably already know that JUnit works "out of the box" on Eclipse and Netbeans.
X-develop does have a nice UI, but that is not enough when considering what it is up against.
> Hi Michael, it's instant project-wide on-the-fly error > checking. Eclipse only checks your currently active file > directly, but you have to compile before it check the > entire project (which can of course be done automatically > when you save your projects).
Er, what? That's completely not true, as Eclipse does check the entire project (and other projects which depend on the current project) at the time of save.
I used to be a Codeguide user myself, until Eclipse became competitive with this. Codeguide is a bit faster, but Eclipse is close enough and is generally a more powerful product at this point.
I don't doubt its useful, but if you'd stay off the quicksand you'd be fine anyhow.
IOW, its great you have this tool to make programming in Java tolerable. But maybe a better language would be even better and you could ditch the snowhoes (that make you look like a geek) and actually run on your own.
FWIW, no IDE surpasses the power of the full Smalltalk environment.