A Discussion of the BlueJ IDE with Two of Its Developers: Michael Kölling and Ian Utting
What's a BlueJ? All you birders out there will immediately think of the songbird in your back yard. But for those of you who choose to dig a little deeper, you will find that BlueJ is a simplified Java IDE, built upon NetBeans technology with the express purpose of introducing new CS students to object-oriented programming at the high school and introductory university levels. Relax and enjoy an interview with Michael Kölling and Ian Utting, lead designers and developers on the BlueJ team.
Dr. Michael Kölling is
designer of the BlueJ
programming environments. Both environments are designed for
beginners to learn the basics of Java, and are widely used by schools
and universities all over the world. He
works as a senior
lecturer in the Computing Laboratory at
of Kent, where he teaches Java to
undergraduate and postgraduate students, and is co-author of a
successful Java textbook, Objects
First With Java.
Ian Utting is a
senior lecturer, also in the Computing Laboratory at the University
of Kent. He has been working on BlueJ since 2001, initially focusing
on the extensions
architecture and more recently on the
with NetBeans, and on extending the reach
of BlueJ to Java ME.
and Ian are co-directors of the Sun
Center of Excellence in Object-Oriented Education
at the University of Kent.
Q: Would you briefly describe BlueJ and give a little of its
[MK] BlueJ is an
integrated development environment that was specifically designed for
learning and teaching object-oriented programming. We're not trying
to be everything for all people, as most of the big IDEs do. In fact,
we have quite a narrowly targeted user group: learners up to the end of
first year university level. Then it's time to move on. But in
return, we think we can make tools for this group better, since we
don't need to make compromises driven by requirements from
professional programmers. Tool support requirements for learners are
actually quite different from requirements for professionals.
The BlueJ system was
developed as the successor to an earlier system called Blue, which
was a similar environment with its own language. Blue was published
in 1995 -- in the same year as Java. It became clear very soon
after that Java would boom, so we decided to build a Java version of
Blue, and that became BlueJ.
It started in
Australia, with John Rosenberg and myself, and the team is now split
between Deakin University in Melbourne and the University of Kent in
England. Sun has supported our project from very early on and has
helped greatly in enabling us to keep this up for so long.
Q: What software license does BlueJ carry and what are the
the restrictions, if any, for download and usage?
[MK] To be frank, the
whole legal/license side of software has always annoyed me. It's not
really something I want to spend a lot of time on. We have our own
"license," which consists of exactly three sentences that
say essentially "Do what you want with it, but you cannot sell
it for money without talking to us." Our thinking was that we
wanted to give it away for free; we are quite happy to not make any
money out of it, but in case someone else did, we would take our
share. It is not open source, though.
Q: Who are the major contributors to BlueJ and how is their
contribution supported? Is there a developer community that
contributes to BlueJ?
[IU] The core software
is developed by the team in Australia and the U.K., whose work is
supported (as Michael says) by Sun through Emil Sarpa. But beyond
that, much of the value of BlueJ is in the material that people
generate and use to teach with it -- examples, lab exercises,
and assignments. This comes from textbook authors (often tailored for
use in BlueJ) and individual teachers across the world.
The BlueJ Way
Q: We see that BlueJ has a distinctly different interface
[Ed: see Figure 1]
than NetBeans or Eclipse. Can you explain why this is?
[MK] This comes back to
the issue we briefly touched on earlier: that the requirements for
learners are quite different than those of professionals. One obvious
aspect is simplicity. We are aiming at a very simple interface that
students do not need to think about. We want to teach programming
concepts, not an IDE. The goal is that the IDE pretty much
disappears into the background, that you have to expend no mental
effort to drive it, so that you can use all you brain cells to think
about your programming task. That certainly doesn't work with
NetBeans or Eclipse for some time when you are a beginner. With
BlueJ, it does work. We have seen this many times.
This does not mean that
this is a simplistic environment. BlueJ does many technically quite
sophisticated things, but they are presented to the user in a clean,
The other aspect is
that we have different tools in the IDE that explicitly support
learning. BlueJ is more visual than NetBeans or Eclipse. We show the
project classes in a diagram, and we show live objects on screen. The
user can then interact with these objects, call arbitrary public
methods directly without writing a test driver, and experiment. These
tools help in building up an understanding of the concepts of object
orientation, of how objects work and interact, and so on. This helps
greatly to build up an understanding of programming that
professionals are just assumed to have in their heads already.
In Eclipse and
NetBeans, you essentially spend your time looking at lines of code.
If all students see are lines of code, they will think about lines of
code. But I want them to think about classes and objects first;
method calls, interactions, and so on -- the big picture, the important
stuff. If we want to get students to think about classes and objects,
we must show them classes and objects.
Q: What major innovations have been added to BlueJ recently?
[MK] There are always
new things to do. Generally, we are very conservative in adding
features, because the small size and simplicity of BlueJ are some of
its greatest assets. We don't want that to go out the window.
But recently, we have
added integrated support for team work (based on CVS and Subversion,
but with a simplified interface). We have also worked on adding
support for Java ME development. This has not been released yet, but
will be in the next BlueJ version.
Q: How do you balance adding functionality without adding to
the complexity of the IDE?
[IU] We operate on the
principle ("You Aren't Going to Need It"). Unless we are
convinced that large numbers of people are going to use a feature, it
doesn't go in. Of course, that leaves us with a bunch of
features that are very important to small numbers of teachers, which
is why we've developed an extensions
(plugin) API. We've got about 20 extensions
listed on our site now, plus any number of truly local ones out there
that we don't know about. They're used for all sorts of
things from program
visualization to programming
Lego NXT robots, as well as supporting research into
beginners build programs.
Teaching and Learning with BlueJ
Q: What is unique about BlueJ that makes it an attractive
learning tool for beginning developers?
[IU] For students, it's
the simplicity. "Professional" IDEs like NetBeans are
real aids to developer productivity, but they are daunting to
beginners who don't initially understand which bits of the
interface they can ignore, and which bits they have to deal with.
Using NetBeans, for them, is like learning to fly starting in an
BlueJ's more like a Cessna.
For teachers, it's
a combination of the support and teaching materials available, and
the way that BlueJ lets them focus on classes, objects, and method
invocation really early, as Michael was saying.
Q: How many Universities are currently using BlueJ? Have I
ever heard of any of them? In what capacity are they using BlueJ?
[IU] We know of about
850 universities worldwide that are using BlueJ, or that used to and
haven't told us they've stopped. It's difficult to
be precise, because BlueJ is freely redistributable, so there's
no requirement for them to tell us they're using it. We know
it's used at Cambridge (U.K., not Massachusetts), Indiana at Bloomington,
KTH in Stockholm, UCSD, and so on. It's also used for younger
students following the AP CS in the U.S., and the Indian ICSE (10th
grade exam) in computing applications. BlueJ is not tied to a
particular curriculum or approach to teaching, so these schools use
it as they wish, but typically as the development platform for their
first programming course (CS 101).
Q: Is there feedback from the educational community as to the
value of BlueJ?
[MK] Yes, lots of it.
BlueJ was first released in 1999, so we have had a good amount
of time to gather experience and get comments. The feedback is
overwhelmingly positive. We get many comments from teachers telling
us how BlueJ has changed the way in which they teach, and they feel
that it has made a huge improvement to their course. We also get
feedback from individuals who had previously struggled to understand object
orientation, and for whom things suddenly fall into place
when using BlueJ.
The BlueJ community is
very friendly, and it's quite nice how our users communicate with us.
Of course, that is greatly helped by the fact that BlueJ is free,
which generally means that users are patient and grateful for what we
do, and less demanding than with commercial software. And those who
don't like the system generally just quietly go away, so we are left
to talk to those who choose to hang around, and that makes our work
Q: Is there an equivalent project using C# as a base language
or Eclipse as a base IDE?
[MK] Not that I know
of. I have seen a couple of projects like that over the years, one
for C#, and another one as an Eclipse plugin for Java, but they seem
to have died again, from what I can see. I am not sure why they didn't
really take off. I guess one challenge for small or community-driven
projects is to provide the stability and professional-level support
that we are doing for BlueJ.
I am actually quite
surprised about this. When we started, I thought we'd have a head
start of a couple of years maybe, and then Microsoft would bring out
their own equivalent system and muscle us out of the market. As it
turns out, Microsoft have copied some of the core concepts from BlueJ
for Visual Studio, but they were late -- they only did this a
couple of years ago -- and then they stuffed it all up by
excluding this functionality from their free, entry-level version of
their system. They just don't get it.
Q: Is there an easy transition process from BlueJ for the
beginning developer and NetBeans for more advanced usage?
[IU] Not until
recently. It seems that many Universities have tended to "let
their students go" after CS 101, and not really supported any
particular advanced IDE. This is fine for the stronger students, but
can leave others floundering. We've been working with the
NetBeans team to produce a plugin for NetBeans that allows it to
manipulate BlueJ projects directly (without conversion), and adds in
a few of BlueJ's icons and views. We believe that that will
provide students with enough support to move up to NetBeans, and the
fact that they can go back to BlueJ to use facilities they are
familiar with, on the same project, should decrease the cognitive
cost of the change for them. We're just bringing that up to
NetBeans version 6.1, and hope to have it available via the Update
Center within the next few weeks.
What is the roadmap for the near future?
[MK] One ongoing task
is always to keep up with the language. So we're keeping an eye on
Java 7 developments, so that we have BlueJ ready by the time it comes
out. There's some time for this yet, though. A little closer is
support for Java ME programming, so that we can get our students to
write for their mobile phones, and maybe support for Sun SPOTs --
they look like devices that are really fun to play with. We are also
preparing a significant overhaul of the editing and code navigation
Overall though, the
main aim is to maintain the feel of the system as a small, simple
tool that does not look overloaded.
Gary Thompson would
like to thank Michael and Ian for their time in helping put this interview together.
|width="1" height="1" border="0" alt=" " />|