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 the lead designer of the BlueJ and Greenfootprogramming 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 the University 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 collaboration with NetBeans, and on extending the reach of BlueJ to Java ME.
Michael 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 history?
[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, clear way.
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 YAGNI 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 how 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 A380. 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 very nice.
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.
Q: 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 functionality.
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.