Eclipse Zone is brought to you in partnership with:

Wayne Beaton is employed by The Eclipse Foundation where he works as an evangelist, spreading the word and helping folks adopt Eclipse technologies. Wayne has extensive experience in object-oriented software development and is a strong proponent of refactoring, unit testing, and agile development methodologies. He is also the editor-in-chief of Eclipse Corner, PMC Lead for the Technology Project, Project Lead for the Examples Project, and an advisor for osbootcamp. In 1982, he received the prestigious Chief Scouts Award from then-Governor General Edward Schreyer. In 1984 his team was selected to represent beautiful British Columbia in the Kinsmen Voyageur Relay. In his spare time, he writes down meaningless accomplishments from his youth in a lame attempt to impress the reader. Wayne is a DZone MVB and is not an employee of DZone and has posted 77 posts at DZone. You can read more from them at their website. View Full User Profile

Java in the Eclipse IDE for Education

02.19.2010
| 6771 views |
  • submit to reddit

The IDE for Education (ide4edu) project has made some progress over these last few months with the help of some undergraduate students. Most of the effort has been around making Eclipse just a little easier to use during those first few months of learning.

For the first time user, the flexibility of the JDT is more than is required. Initially, we forked bits of the JDT code and tweaked it to suit our needs. In a relatively short period of time, it became clear that we needed to be a little more radical with our efforts. Forking just isn’t the right way to go. For starters, we ended up with a lot of code that accesses non-public APIs. More important, however, it was just really hard to make significant changes to things like wizards. So, we completely reimplemented the New Java Project and New Class wizards.

Here’s the New Class wizard:

Given our audience, we decided that we could make some assumptions on the user’s behalf. We ask only for the information that we actually need. At this point, the appearance of the wizard is dynamic. The very first time the user asks for it, they are only asked for the name of the class (current implementation also asks for a package, but we’ll probably hide that as well). We assume that, if the workspace is empty (i.e. they’ve never actually created a project of their own), than they don’t need to be bothered to understand things like projects. When they create their first class, we build the first project automatically. As the student’s understanding increases (as determined by the state of the workspace), additional fields are exposed.

When the “Project Name” field is available, the user is free to type whatever name they want there. If the name they type is for a project that doesn’t exist, the project is created. Automatically created projects are built using what we believe are reasonable defaults for students in their first few weeks and months of education.

We’re trying really hard to keep these wizards simple. The dynamic nature of the wizards has been the source of some debate. Is it correct to change the appearance of the wizard? We’ve discussed providing some mechanism to let the user know that the change has occurred. We’ve also talked about making a more general mechanism for determining the competency level of the student so that we can better tune more aspects of the delivery.

One thing that fell out of this implementation is a clear separation between the user interface and the underlying behaviour. This is implemented in two layers: there is a NewJavaClassConstructor type that knows how to actually build a class (and project if necessary), and there is a corresponding wizard that knows how to use the NewJavaClassConstructor to do the the heavy lifting. This separation should allow us to leverage the constructor behaviour in other contexts (I dream of coming up with an entirely different create user interface paradigm).

We’re still pretty far away from a proper release. We have a lot of testing to do, still have a lot more code using non-public APIs than I’m comfortable with, have some work going on to introduce a Scheme environment for students, and are hopeful for some Prolog support. In the meantime, I’m turning my attention to fixing the build (basing it on Athena) so that we can do a better job of getting what we have into the hands of more students to get more feedback.

Hey students and mentors, the Google Summer of Code 2010 has been announced. Keep ide4edu in mind when you’re proposing your summer project!

From http://dev.eclipse.org/blogs/wayne

Published at DZone with permission of Wayne Beaton, author and DZone MVB.

(Note: Opinions expressed in this article and its replies are the opinions of their respective authors and not those of DZone, Inc.)

Tags:

Comments

Gabor Farkas replied on Wed, 2010/03/03 - 6:35am

Great ideas! I'm currently working with a bunch of highschool studends. I found that indeed, Eclipse at first sight is quite scary for them. All the stuff in the project and class wizards ...

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.