Eclipse as an IDE - What do you find missing as a beginner in Java?
Asked Answered
B

19

16

I am working on a solution that aims at solving problems that newbie programmers experience when they are "modifying code" while bug fixing / doing change requests, on code in production. Eclipse, as we all know is a great IDE. Features such as Code Completion, Open Declaration, Type Hierarchy, Package Explorer, Navigator, Finding References etc aids people in fixing things quicker compared to say using something like Textpad.

If you are a newbie java programmer and you are using Eclipse IDE, what areas of the Eclipse IDE do you think were less helpful/ less intuitive? If you are a seasoned programmer, what are the common issues that newbies look up to you to solve for them?

Please ignore issues related to : Domain Expertise (Business Knowledge), Infra( where to test your change etc), performance related (eclipse search being slow,etc), Skill level in a particular language (think of the developer as a noob) ... and think one language - Java

I did a local survey in my small team and here are some:

  • Newbies using Eclipse to handle code that is written to interfaces where the implementation is supplied at runtime. Doing a 'Open Declaration' will always show you an interface. This could be confusing at times.
  • Eclipse is not intuitive while developing EJBs. Sure, you know all you have to do to create a new bean is to right click and 'Create Bean', however, once created it shows no contextual help to what the next step should be. For instance, generating stubs.
  • When Data Source Mapping with entity beans, changing something screws up the entire flow of things and eclpise never complains / hints.
  • Developing applications that make use of Struts, eclipse doesn't tell you that when you change struts-config.xml, particular web flow would get affected.

At this point, to me, as someone who is interested in collecting opinions for my research, it appears as if Eclipse could use more 'contextual runtime hints'.

I am sure the community would have a lot more to add... Please add more of your negative experiences (just from the code change perspective).

EDIT: I guess, my question was too lengthy and confusing. I am gonna rephrase it a bit and keep it short:

While "making a code change" (not analogous to code formatting, infra related activities, CVS etc... say something like refactoring), what feature(s) of eclipse IDE did you not like / hate the most? Here are the examples:

  • When modifying code that has been written to interfaces: 'Open Declaration /F3 on an object instance shows you the interface when the implementation is supplied at runtime'.
  • When changing apps using EJBs: No contextual help
  • When changing apps using MVCs(Spring / Struts) : No warnings about change impact.
Bubal answered 20/11, 2009 at 15:39 Comment(1)
First indent of short version - I really hated that, but now I am using CTRL+G and it's fine. For MVC's there's a few plugins that help you, I guess Eclipse can not handle all frameworks to support them in.Contingency
S
17

Missing in Eclipse are:

Software visualization, as for example System Complexity View [Lanza 2003]

And also by Lanza, the Class Blueprint [Ducasse 2005]

Post Scriptum: Software visualization in Eclipse: X-Ray provides System Complexity View of Java projects, http://xray.inf.usi.ch/xray.php (via @anjaguzzi and Paul Lammertsma)

Software Visualization

And then collaborative filtering "other developers that edited this method before also edited" [Zimmermann 2005]

And the collection of browsable examples, and autocompletion at the level of these examples. That is, for example if your write

ByteBuffer buf = file.

and hit autocompletion it should search the codebase and the interwebs for examples that convert files to bytebuffers and insert that 10-20 lines there.

And of course also the feature that I can write a Unit test and then the IDE searches the interwebs for classes that pass the test. Yes, this can be done!

This list could go on and on, good starting points for more work are the proceedings of past

which are all under the umbrella of the ICSE conference.

Sash answered 27/11, 2009 at 12:24 Comment(4)
Both System Complexity and Class/Package Dependencies can be added to Eclipse with the X-Ray plugin: xray.inf.usi.ch/xray.php Officially still in beta, but works brilliantly!Agraphia
Soo...these are the problems newbie programmers experience? :)Estellestella
@robert my suggestions are visionary rather than incremental, for sure. How to get from type A to B is a problem newbies face very often, also search by writing a test might help them a lot.Sash
They're great suggestions, no doubt; great responses to another question :pEstellestella
D
5

For me, most of the newbie problems in Eclipse come from one of it's strengths, its configurability & plugin structure.

When I need to change a property in Eclipse, I always seem to have to spend a few minutes working out where to change it. Example: changing the Java editor to insert 4 spaces instead of a tab. The search bar in the properties is always welcome :-)

That and the lack of documentation for some of the plugins always makes for fun when I'm setting up a project.

EDIT: You can always show the classes that implement an interface using ctrl-T.

One thing I would add is that when I have a complex project, I tend to use Refresh & Project->Rebuild All *a lot". And I use TortoiseSVN to maniuplate stuff outside of Eclipse, because a lot of times this is easier (some refactoring for instance). However, if I'm modifying the project outside of Eclipse, I *always" quit Eclipse, and do a full refresh and build when I restart it. Otherwise Eclipse gets very confused sometimes.

Daiseydaisi answered 20/11, 2009 at 17:38 Comment(0)
U
5

"newbie issues" I've seen myself (I've used Eclipse for a good while, but it keeps "surprising" me occasionally) and helping colleagues just starting to use Eclipse:

  • It's large and complex enough to be very intimidating to some at first. Seems people consider netbeans easier to use initially. One colleague took refuge with the VI editor for a god while...
  • Installing plugins can be tricky (finding site URLs, awareness of plugins, why is "install"+"update" under the Help menu???)
  • Updates are still slow (but much better than before) with Eclipse 3.5/Galileo. It's difficult to understand which plugins to install just by their name sometimes.
  • Any platform besides Mac - preferences under the Window menu seems illogical?
  • Understanding how to set the project class path neatly. Setting the right project JDK version.
  • Lack of or unexpected interaction between ant/maven build tools' classpath and that of eclipse's (ant/maven clean causes Eclipse compiler errors when classpath is shared etc.).
  • Views and (large number of) perspectives are confusing/overwhelming at first. Which are useful when? How to drag views to the desired location or restoring closed ones?
  • Some JDK/Eclipse version combinations required too much PermGen space than available by default, took a while to diagnose.
Usk answered 24/11, 2009 at 23:50 Comment(0)
E
4

I think the biggest problem I faced (and still face) with Eclipse is that it isn't particularly aware of standard technologies that surround modern Java development. If I'm developing an application, it might include the following:

  • Spring
  • Maven
  • JSF/Struts 2
  • Subversion
  • JUnit

I think Eclipse handles those technologies in increasing levels of awareness: (so JUnit will be fine, it works out of the box; Subversion requires Subclipse, and it's a little ropier than the CVS support; JSF needs some WTP tooling to be installed; Maven...you're probably best off setting up your own external tools commands rather than trust M2Eclipse, unless it's become dramatically better in recent times; and Spring, well, as you say, try ctrl-clicking on a method and you'll almost certainly get an interface, because the implementation is hidden away behind a Spring config file).

Getting all of that to play together and check out/compile, then later compile/run tests/check in is the difficult bit. The code change itself is probably easy :)

Estellestella answered 26/11, 2009 at 10:14 Comment(2)
+1, it's so true, especially for Spring and Maven. SpringSource Tool Suite (springsource.com/products/sts) adds a little comfort, however, still a lot os missing.Hartung
M2eclipse has become really nice recently. Works wellPinniped
M
3

For me, the biggest hurdle to learning to use eclipse effectively was understanding where to set the classpath and also how to figure out exactly what is included on the classpath for various stages of development (compile, build, test). I was confused for a long time about the difference between compile time, debug configurations, and run configurations classpaths. Then if you throw ant into the mix (which automatically creates a run configuration ) it makes it even more confusing for newbies.

Mikiso answered 20/11, 2009 at 15:59 Comment(1)
this kind of qualifies as infra (setup/build related). assuming that your class paths are correct, you are going to change a method / class or whatever, what did you find it difficult? (for instance, when you are about to change a method name, it is an intutive thing in eclipse to right click and look for references - when I was a newbie, this was one of the positive reasons for using eclipse. Today,I am here to collect all negative opinions :-)Bubal
H
2

As a beginner, I didn't do EJB or Struts stuff. Or even data source mapping. So I think the question's title may be a little misleading.

I would have appreciated having something like JadClipse built in to "look at" library code when I hit it in debugging or such. But it should be made VERY clear that this is "reconstituted code" and not meant to be hacked around in.

Second, noobs need to be made much more aware that Shift-F2 will get them the API documentation for whatever class/method they're looking at. I know too many novice Java programmers who explore their APIs with nothing more than code completion; they're missing many valuable hints provided by the library authors.

Hiram answered 20/11, 2009 at 15:47 Comment(1)
Seconding the lack of a decompiler.Middlebreaker
C
2

A mindreader which generates code on the fly, so that a single click is sufficient to complete a project.

Cryostat answered 27/11, 2009 at 18:39 Comment(0)
M
2

I found Visual Studio easy to pick up, I tried clicking on each button at least once, and figured out what the whole thing does. It's thought out by a single design team at the highest level, and everything follows the standards top to bottom, more or less.

Then, I play with Eclipse. In technical terms, it's janky at best. Look at the preferences dialog; it's an overwhelming trainwreck, unless you already know exactly what you're looking for, and what the developer working on that feature decided to call it.

Eclipse's configurability relies on the fact you already know how to configure it. The learning curve there is awful, and the only saving grace is that most of the defaults are okay to begin with.

Middlebreaker answered 29/11, 2009 at 4:41 Comment(0)
D
2

Here are basic missing features as far as I know :

  • Show the beginning '{' when you are at the end '}' where beginning '{' is out of the view
  • Automatically synchronize the editor with package explorer
  • Go to different view (package explorer, outline, etc) with keyboard
  • Inline find, which does not open a dialog.
  • Go to next error location with keyboard
  • Go to next/previous structure with keyboard
  • More stability in general.

These features work great in IntelliJ. Especially #1 and #5 are really useful.

Distraction answered 29/11, 2009 at 5:13 Comment(0)
O
2

I was a noob to eclipse recently, mostly doing Android and BlackBerry stuff. And one thing that eludes me to this day is the massive multitude of options and settings and various places they can be found in. For instance, if you have a plugin installed (say BlackBerry plugin), the setting might be found in the general prefs or BlackBerry prefs or the project prefs.

It's always a hunt.

Outoftheway answered 29/11, 2009 at 5:22 Comment(0)
S
1

VCS integration - typically the developer is also new to merging changes, keeping working copies in sync, resolving conflicts and so on. There are often several ways of achieving the same thing in Eclipse and I've seen this cause confusion on several occasions (actually, I've seen this with experienced developers too; they know Subversion but not Eclipse, and the latter tries to 'hide' the underlying repository operations).

Sweatband answered 20/11, 2009 at 16:29 Comment(1)
@Sweatband : VCS integration - would be infra. Assuming that the code is already setup and the developer is ready to do his/her change - what kind of problems would a developer face in such a scenario?Bubal
D
1

I think the issue with all IDEs for beginners is the disconnection from the tool chain: how the compiler takes some source and compiles it to bytecode which I then run using the VM with a correctly configured classpath.

As a dev I love the fact I don't need to deal with this - and I've never found myself unable to do what I want concerning more complex build configurations - but it's too important for beginners to understand what's happening when you press that Play button to be ignored.

Deadline answered 20/11, 2009 at 16:30 Comment(0)
K
1

when i first tried using eclipse i absolutely hated it's coplexity.. you had to do a whole bunch of things befor you were able to start working. furthermore you have way to many options to check and it's not always selfexplaining what each button does.

instead i started using netbeans. way more intuitive and easier to handle. check there gui.. not to much buttons and most of the time you know what the button does even if you have no clue of java (as i had at that time).

when i changed back to eclipse (due to some features not supported in netbeans) it seemed far easier to work with it. so some part of the gui might just be added in a not intuitive way and beginners will definitly have a hard time with it.

Kitti answered 22/11, 2009 at 12:35 Comment(0)
P
1
  • simplicity
  • clearness
  • consistency

I might write it much more in detail, but i think, that eclipse is overweight and much too much oriented on features - instead of ease of use. IMO, this concerns beginners as well as professionals.

Platinous answered 27/11, 2009 at 11:43 Comment(1)
I'd second that one and then some; "infinitely configurable" isn't a good thing, unless you really, really, really want to sort through a wall of buttons, knobs, and switches to do something common, like changing a tab to four spaces.Middlebreaker
S
1

Eclipse has no visual designer for Swing components.

Compare that to Visual Studio, where:

  • click 'new form'
  • drag buttons and text boxes onto the form, move them around, add some labels
  • double click on a button, add some code
  • done, one quick application, show it to the boss, get paid/promotion/coffee break

In Eclipse you either have to use Netbeans instead (ie not Eclipse...), or use IBM's SWT, or code the Swing forms by hand.

I feel it would be very nice to have a great wysiwyg forms designer in Eclipse for Swing forms.

Simony answered 30/11, 2009 at 6:42 Comment(0)
G
0

The other confusing part is that for web development there is a separate version that needs to be used! Well I didn't like this at all and I know that a lot of people just don't about this.

Guenon answered 20/11, 2009 at 17:50 Comment(0)
J
0

Eclipse is missing Maven Embedded in standard distribution , Maven would help any user in getting their program all the jars and better library management . Netbeans already has this tools. Also eclipse misses integrated tools for hibernate , spring , xfire and tomcat deployment using maven.

Check this site http://maven.apache.org/

Joleen answered 30/11, 2009 at 7:46 Comment(0)
D
0

All of my other problems with Eclipse have already been mentioned except one: It's slooooooooow. Was their goal to prove the "Java is slow" people right? I'm guessing this is related to the "Eclipse does everything", but I stopped using it because it lags every time I click on anything. Change tabs? Lag. Open preferences? Lag. Change tabs in preferences? Lag. It's like using Photoshop with 32 Mb of memory.

Oh and it's incredibly ugly. I wish I could get it with real GTK+ integration.

Dorri answered 30/11, 2009 at 7:53 Comment(1)
And apparently having a real problem with Eclipse gets me modded down with no explanation?Dorri
K
0

The android SDK integration is full of jank. xml layouts don't render correctly. Code completion doesn't work well. IBM needs to fix the jank for sure.

Kassel answered 20/8, 2010 at 8:38 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.