I'm an experienced C/C++ programmer getting into Java and looking for a good IDE with VIM integration or a VIM plug-in that let me use the same key mappings for things like editing, cscope and omnicompletion functionality. What I mean is that whatever native functionality is provided by the IDE can be mapped to the equivalent vim key bindings. It should run on both Windows or Linux. I don't care if I have to pay for both the IDE and the plug-in as long as they meet my needs.
The most recent question I saw dealing with this type of question here on SO is over a year old and I'm sure the 'state of the art' has changed since then.
I want to hear from people with actual hands on experiance with these IDEs and VIM plug-ins.
Why not just use VIM?
You know exactly what it can do and how it can be extended, and it appears to be what you want anyway.
You will not be satisfied by any emulation as it will fall short, and with your current mindset you will not like having to learn a new editor. It is, however, what I will recommend you to do. The things modern Java IDE's can do are miles above what VIM can do because they know your source intimately. You will benefit the most from an IDE if you use its default configuration, and I do not know any which wants to look like vi/vim.
When THAT is said, you might find http://ideavim.sourceforge.net/ interesting. IDEA is the only common place Java IDE left which makes money...
There's a VI plugin for IntelliJ. I've never used it, so can't comment on its userfriendliness, but IntelliJ itself is excellent.
Recently when I've been coding Java at work I've been using vrapper It has some minor usability bugs and some missing features (such as cit) but it really seems to work well in just providing basic vi editing functionality.
Ok, it seems I misread the original question a bit by looking too much at the other answers. I don't really know how easily you can map Eclipse's native omnicompletion functionality to the corresponding vim mappings. However I think you can be very productive with the bindings provided by wrapper and by learning just a few of the most important coding assistance keys in Eclipse.
There might even be a Stackoverflow question about this but the most important shortcuts I've found are:
ctrl+space for "omnicompletion"
ctrl+1 for opening the menu of suggested quick fixes for an error or warning
shift+ctrl+t for opening a type
I've been using the viplugin for eclipse (http://www.viplugin.com/viplugin/)
It's quite good, fights a little bit with refactoring, but most of the main editing commands work. I still have to use vim for complex regex work, but I only have to do that about twice a year.
Unfortunately it's commercial (€15) and development seems to have slowed a lot. It seems to be currently more feature complete than vrapper, but I haven't tried that.
I'm also researching VIM / Eclipse integrations, and these seem most interesting:
Vrapper
Eclim
(according to this Hacker News discussion and this other SO question)
Looks like there is one for netbeans, (a stack overflow thread) Is it possible to use VI or VIM keymap in NetBeans?
Related
As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 10 years ago.
I'm pretty new to Java, and I need to build up programming environments for it (editing, compiling, testing, debugging, and deploying/making jar files).
And, even though I'm not a super expert of emacs, I'm a big fan of this wonderful tool.
Here comes my question.
Is it wise to use emacs for Java development? Is Eclipse better for Java development?
And, what people normally use for Java development environment? I mean, using what tool may result in getting more help than otherwise?
As a die-hard Emacs user and professional Java developer, I can say that I choose Eclipse hands-down for Java, and Emacs for everything else. Every tool has its advantages, and I try lots of tools. But the ecosystem surrounding Eclipse is unparalleled (even by EmacsWiki!) and Eclipse has the best Emacs emulation of any editor I've ever found if you install the Emacs+ plugin (by MulgaSoft).
Depending on the type of Java programming you're doing, Eclipse has no competition, i.e. if you're working with anything related to Google technologies (GWT, App Engine, Android). The Mylyn component to Eclipse interfaces with just about every task management tool out there, which is fabulous if your work in a corporate environment that uses JIRA, Mingle, VersionOne, Bugzilla, etc.
My experiences with JDEE, while favorable and interesting, put in a distant 3rd place to Eclipse and Netbeans, respectively. I haven't really worked with IntelliJ, so I can't comment on that front.
I think it's pretty critical to understand that there is a hard, non-subjective line between "AST editors" (Eclipse/NetBeans/IntelliJ) and text editors like emacs, vi, slickedit, etc. etc.
In Eclipse/NetBeans/IntelliJ they compile all the code and read that byte code back into a large, fully connected and cached internal AST. So for example when you rename a method, they follow the AST to all code in the project that uses said method and update all usages.
This is significantly different than a text find/replace which is what you get from a text editor.
Java is a strongly typed language which is an incredible advantage when using an editor that knows how to follow and manipulate that type structure.
malabar-mode is the best existing solution for Java development in Emacs. It has nice maven integration, groovy shell, semantic support, etc...
Java IDE certainly outgun anything Emacs has to offer in terms of features related to refactoring and code analysis, but other than that the Emacs experience is way better - much more powerful editor, simpler and vast ecosystem of extensions and an overall aura of greatness ;-)
It's all a matter of taste in end - whether you prefer click-based programming, when everything happens in menu and popups or prefer to go down to the bare metal, write the code more carefully(because there won't be a tool to analyze it for you) and create...
If you go for IDEs do yourself a favor, ignore all the Eclipse propaganda and have a look at the competing projects - I personally recommend you IntelliJ IDEA. In the end one decides for himself, but the decision should be made objectively and not based on statements like "everyone is using Eclipse"...
Most of the Java developers I know use Eclipse. I prefer Emacs, and at times, NetBeans. Mostly I prefer to do all my editing in Emacs and use NetBeans only to generate the build file. I recommend NetBeans over Eclipse because it has a better Emacs mode and is lighter on resources (relatively!). If you are looking for a full Java IDE for Emacs, try JDEE.
Emacs is a fantastic editor which is very useful - when you take the time to learn it well.
Eclipse/NetBeans/IntelliJ are each a fantastic Java IDE which is very useful - when you take the time to learn it well.
The amount of additional functionality that is available in Eclipse because it knows by heart that you are working with Java code and understands that code, is so large that it is difficult to tell in a few sentences. Let me give a few examples:
Hovering the mouse over any identifier shows its javadoc in a popup.
A single keypress can let you choose any implementation of the interface at the cursor location, including sub-classes.
You can easily refactor things, i.e. change orders of parameters in a method call or rename it and Eclipse will change it in all files where it is used.
The builtin Eclipse compiler is very robust so even with errors elsewhere in your source, you can still refactor code giving you more freedom to work.
The list goes on and on. There are, however, plenty things that Eclipse is not very good at, and in those cases it can be beneficial to open the files in other editors, like Emacs or vim.
So, learn your tools well, and have more tools than just a hammer.
Ultimately, this comes down to what works best for you. Try emacs, IDE's, and other tools as you see fit and then use what you like and find easiest.
I have a co-worker who says he often has emacs and NetBeans up at the same time. He uses emacs for editing and NetBeans for investigating errors, building, testing, etc.
While I've dabbled off and on with Java for years, I'm just starting to get into it seriously due to a new job where it is the main development language. Previously, I've used emacs for most of my development; it's editing power is quite nice to have. However, for larger projects I find that for many things an IDE is nice also. So, I may adapt my co-worker's strategy of running both emacs and NetBeans simultaneously.
Prior to working on this job I'd worked a little with Eclipse, which I liked. However, NetBeans is the defacto standard where I'm now working, and has some good points, so I'm working on learning that.
Recently I learned of CEDET, which looks to be a way of wrapping an IDE around emacs. Unfortunately, I've not had time to investigate it yet, but you may find it worth a look.
I am using Netbeans but there are some limitations to it, like absence of a back-forward navigation in the tool-bar (am used to it), variable renaming in a class, not changing the caller methods etc. Eclipse seemed better to me.
Best would be to try using the community edition of Idea IntelliJ . I have used their premium edition, and must say the developer experience in terms of usability friendliness and refactoring help is much better in IntelliJ. Also, there are some really neat short cuts for example to show you all the child class of a particular class in one view (And then letting you choose which to open), refactoring help and lots more.
The community edition would also have most of the features.
I am an Emacs lover probably because I love the key binding and I am able to do things very quickly. I also use Eclipse IDE for my Java/Android/Python/ development because it is free, most of my peers use it, and it works. I find myself switching between emacs and Eclipse and the workflow just isn't great. What I would like to do is setup the key bindings in Eclipse so that they are like Emacs.
Can someone suggest the best Eclipse plugin I could use for this. Or can anyone talk about how they've used Eclipse to be more Emacs like. Thanks in advance
No plugin needed for basic Emacs keybindings!
Go to
Windows → Preferences → General → Keys
and select Emacs scheme.
It won't provide all Emacs commands (obviously) but it covers the things you can't live without such as navigation, selection, cutting / pasting etc.
I have to second the recommendation of Emacs+. I've been using and loving Emacs since the dawn of time and the key bindings and functionality of Emacs are hard-wired into my fingers and brain by now. Before Emacs+ came along, I found Eclipse to be a complete bear to use, as years of muscle memory and knowing how to get things done without even thinking about it, were not only useless in Eclipse, but in fact detrimental.
Emacs+ has fixed all of this for me. Now using Eclipse is nearly as seamless as using Emacs, plus I get all the features of a modern IDE. It's practically the best of all worlds. The only thing I still really miss from Emacs is M-q filling of "//" comments.
I should also point out that this is far more than a simple set of key-bindings. It faithfully reproduces a lot of subtle Emacs behavior that you take for granted, until it's not there.
First try turning on the Emacs key bindings in your key preferences. If that doesn't give you all that you need, then you might try installing the Emacs+ plugin. Of course, if you have any elisp customizations, I think you might be out-of-luck.
Personally, I always prefer to just learn editor-centric way to do things so that I am not helpless when I sit at someone else's computer.
The Emacs+ plugin does a good bit better job providing Emacs keys than the standard Eclipse install.
I enabled the Emacs key 'scheme' as #aioobe suggested a long time ago in all my copies of Eclipse. However, recently, a new form of perverse behavior popped up in some of my Eclipse installations: I type any one of several Emacs commands, such as Ctrl-L (to center the window), and this annoying dialog box pops up, offering me the correct Emacs action for that key and another option, which comes from nothing I recognize, but is certainly NOT an Emacs key binding.
This is problematic for two reasons 1) it pops up out of the blue, in some but not all projects (I haven't figured out a pattern yet) 2) it is obviously a violation of the promised support of an Emacs key scheme, a violation that only emerged recently, making the Emacs support far less valuable.
Emacs support in Eclipse was never very complete, but I would like to get back to the state I had a few months ago, when Ctrl-L, Ctrl-D and Ctrl-K all worked correctly as Emacs keys w/o this annoying dialog in all projects.
If Emacs+ worked in Indigo and Juno, I would try that. But as it is...
I'm looking for the following:
A nice debugger that allows me to easily view variable values if I use breakpoints.
Works very nicely in Windows 7.
Has something similar to the Toolbox pane in Visual Studio.
Built in intellisense, and code completion with the TAB key.
Long term support. I mean something that will last and stay in active development for years. I don't want a pet project IDE that will stop developing in a year. I'm just learning so it'll be very dificult at first to switch IDE's.
I'm new so I don't really know which IDE provides what I need between the two. Any help?
Well, I switched from Eclipse to Visual Studio, and I use both just about every day.
I found it hard to get used to the little differences at first, but now I am proficient in both IDEs.
I can't speak to whether or not Netbeans would be easier to learn, but Eclipse shouldn't be hard at all.
Both IDEs will provide all of the features that you have listed, and you should be able to customize both of them to get them to work almost exactly like Visual Studio.
So you want to learn Java and your first question is about which IDE to learn ? I suggest you look at BlueJ which is an IDE designed for people who want to learn Java. From my, I admit limited, experience with the IDEs you mention, BlueJ is the one which gets least in one's way when trying to learn Java as opposed to learning the IDE. Once you've exhausted BlueJ's capabilities there is an easy progression to NetBeans through a plug-in but you would probably not find it too difficult to step up to Eclipse instead.
Yes, I know you want to choose between Eclipse and NetBeans but BlueJ might be of interest.
This is a common debate, and there are obviously merits on both sides (this might be better served as a community wiki page). I prefer Eclipse, but to answer your questions as well as I can briefly:
Works very nicely in Windows 7.
Both are fine.
Has something similar to the Toolbox pane in Visual Studio.
Sorry, not familiar. Neither are short on panes, though Eclipse has a richer cache of third party plugins that might give you the experience you want.
Built in intellisense, and code completion with the TAB key.
I believe both are Ctrl-Space by default. If you're working in Java in Eclipse, there's an automated pop-up after a half second delay each time you type a separator (.) character.
Long term support. I mean something that will last and stay in active development for >years. I don't want a pet project IDE that will stop developing in a year. I'm just >learning so it'll be very dificult at first to switch IDE's.
Both are very mature products. I'd imagine Eclipse's fortunes are a little more secure simply because NetBeans might experience some turbulence during the Oracle acquisition of Sun.
My only other comment is that it's always seemed to me that Netbeans had far nicer "click-and-go" project templates out of the box, while Eclipse offered richer third party library integrations and a better debugger.
Probably both will do. Personally, I'd rather use Netbeans, because it's easier to get started right-out-of-the box. Eclipse depends more on plugins.
Why not try both and see which one suits your individual tastes more?
Both are find but if you want to build GUI's, Netbeans has the edge as it has a built in GUI builder, including a toolbox of controls to use with it.
Eclipse does not have a GUI builder. The commercial Eclipse distribution, MyEclipse does have a GUI builder - it's actually the one from Netbeans.
Neither Intellij IDEA is the Cadillac of Java IDEs
Netbeans = Great out of box experiance
Eclipse = Highly customizable with plugins and (so I've heard) slightly better intellisence-like capabilities.
If possible, I'd say try both (despite the bandwidth problem). If you get basic Java Development versions, the sizes aren't that big (48 MB for NetBeans and 92 MB for Eclipse)
I personally prefer NetBean's in-built capabilities since I don't like having to install plugins to make my experience the way I want it (and not all Eclipse plugins are free) but most of my fellow java devs prefer Eclipse's simplicity and ease of use.
I think you should try Intellij Idea, it the most powerful-intuitive java IDE I've never seen (http://www.jetbrains.com/idea/index.html). The new Community Edition is free and more than enough for java developpement. As it is highly configurable you can choose 'TAB' for auto completion, but I think you can learn from existing combinations that are well design.
Regards.
Java has some really nice IDEs available and many will do what you require.
I dont know you, but I use VS with Resharper so I m very used to those shortcuts, if you do too then have a look at IntelliJ ( they have a comunity edition)
Otherwise you can get eclipse and get the IntelliJ keymap ( or try to get the default VS keymap)
Netbeans is nice too, but I had some problems with it ( ie didnt build, rancomly crashing, etc)
Also most offer Source Control integration ( in Eclipse you have many flavours of subversion for example)
I guess you ll have to play around and find what suits you
Cheers
Emacs and Java change propagation
Hi,
I'm mostly used to code in IDE like Eclipse but I wanted to try emacs. Because I keep hearing about how much better it is than big IDE like Eclipse and Visual Studio.
So I was looking at what emacs provides for Java (with the JDEE extension) but it doesn't seem as complete as Eclipse.
One of the most important thing I look for in a Java editor is change propagation and error notification. For example if I rename a class, I want to be able to have all the declarations of this class renamed automatically. And if I delete a method, I want to be able to see all the place where this creates errors.
I didn't find those things in emacs, and this is a showstopper for me, I can't see how I could work on big projects without those features.
So my question is : those features don't exist or is it just me that haven't looked at the right place?
Emacs can be better that Eclipse, but the question is "for what"? Emacs (and VIM) are generally smaller, faster and optimized for text editing and navigation*. In recent versions Eclipse are quite capable for editing and navigating java code but with different "style".
If you are willing to learn Emacs then learn it. You will get experiences on your own and it is very important for a developer (you are the only one can decide what is work for you). But learning Emacs does not mean to "throw out" Eclipse, they can co-exist quite well if you use ant or maven-based project building and a source control system. You can for example do all editing in Emacs while for debugging and refactoring use Eclipse.
There are some interesting thought in this thread about Emacs and java development. Also there is an interesting read and conclusions about Emacs and Eclipse from someone who tried both environment.
If you are not an expert Eclipse user yet you should look at the powerful editing and navigating features of Eclipse before starting Emacs:
10 Eclipse navigation shortcuts every java programmer should know
Effective Eclipse: shortcut keys
Effective Eclipse: custom templates
Effective Eclipse: fix it quickly
Back to the question: there is an Emacs extension called Xrefactory for Java but it does not support Java 1.5 features so it is useful only if you use Java 1.4 or older.
(*) of course they are much more, I know :)
Emacs is an incredible editor, with good support for developing in C. For developing in Java there is much better support in one of the Java IDE's which has deep knowledge about the programs being edited. You probably want something like Eclipse, JDeveloper or Netbeans.
In my opinion you will not be satisified with developing Java with Emacs, and you should use another tool.
I don't know much about Emacs (so you may regard the following as off-topic), but I work with both Eclipse and VIM.
I use Eclipse for big Java projects, and I can't live without the large-scale features (cross-project renaming/refactoring etc.). I use VIM for small scale stuff (e.g. knocking up code for StackOverflow examples in multiple languages).
Eclipse and VIM have very different capabilities and consequently I use each bearing this in mind. I don't expect VIM to do the heavy lifting, but on the other hand I don't expect Eclipse to start in a keystroke and to be able to write a new (small) project in a few seconds (in whatever language I require - not restricted to Java). Perhaps you should look at the Emacs/Eclipse pair in a similar light ?
What modes are the best?
And any tips or tricks that make developing java in emacs a bit better.
For anything else than casual Java editing, many people recommend the Java Development Environment for Emacs.
Eclim is a project that uses eclipse running in headless mode to provide features to Emacs such as in-line error checking, auto import management, basic refactoring, etc.
It's much easier than JDEE to set up and when paired with something like YASnippet I find myself more productive than I was in Eclipse. I currently have to go back for step through debugging and some project management, but I am pretty happy with it. If combined with something like JDIbug I think I would have even less reason to ever use eclipse directly.
Hope this helps
The best Java debugger for Emacs I've used is jdibug.
I have used JDEE over two years.Unfortunately,it was too old and stopped.JDEE doesn't support new features since Java 5,e.g, we can't create enum type using JDEE. And the author didn't answer any questions.I am still using Emacs+JDEE,but I can't see the future of JDEE.
Java refactoring for emacs:
http://www.xref-tech.com/xrefactory-java/main.html