Password (Forgotten it?)
16 - 30 of 35   « previous

Objects First with Java, 6e
25 Apr 2016


The sixth edition of the BlueJ book is about to be published.

It’s been a long time since the last edition of the BlueJ textbook - almost four years. But finally we got around to write a new edition that updates the book and brings it in line with current Java language constructs.

If you want to know in more detail what is new in the book, you may like to read this short overview of changes.

The new edition is currently in production, and should be available in the first or second week of May.

BlueJ on the Raspberry Pi
22 Oct 2015


BlueJ is now part of the standard Rasbperry Pi image.

Now you can use your Raspberry Pi as a complete Java development machine with BlueJ (no need for a separate machine).

With BlueJ on the Pi you can control the Pi’s hardware interactively.

You can find a tutorial on how to use BlueJ with Gpios at:

BlueJ 3.1.5 released!
02 Apr 2015


A new release of BlueJ is available.

The BlueJ team have released BlueJ version 3.1.5. This release includes support for the Raspberry Pi 2, and several bugfixes and improvements.

BlueJ 3.1.4 released!
02 Oct 2014


A new release of BlueJ is available.

The BlueJ team have released BlueJ version 3.1.4. This release includes support for Java 8 language features, performance improvements for running on the Raspberry Pi, and several usability improvements and bugfixes.

BlueJ 3.0.9 released!
22 Feb 2013


A new release of BlueJ is now available.

The BlueJ team have released BlueJ 3.0.9. This is mainly a bug-fix release, but it does add the ability to select the interface language from the preferences dialog, and for Mac OS X 10.7+ users allows using BlueJ with Java 7.

Download it now!

The BlueJ Team Are Hiring
23 Nov 2012


The BlueJ/Greenfoot team are currently looking to hire new two team members. We are inviting applications until the 19th December. You can view the official job description and apply online, while one of our existing team members, Neil Brown, has written a more informal description of the job and the team.

The job is an interesting mixture of software development and academic research into computer education. BlueJ is used by several million users worldwide, and has an interesting web-scale data collection project being developed, while Greenfoot is a fast-growing fun visual educational system for kids with new ideas in the pipeline. Not to mention our teacher community websites, such as this one!

If you have any questions about the position then please feel free to contact any of the BlueJ team – Michael can be reached at

Live map of BlueJ use
24 Sep 2012


Is there life out there, other than myself? Find out on this map.

The semester has started again in many places int he world (especially in the northern hemisphere), and BlueJ use is picking up with it.

Have you ever wondered where BlueJ is being used, other than on your own machine? Find out with this map. Here, you can see invocations of BlueJ in other places – live, in real time!

17 Jan 2012


Some members of the BlueJ team will be at the SIGCSE 2012 conference this year, presenting opportunities to use BlueJ for your Computing Education research.

At the SIGCSE 2012 conference in Raleigh, North Carolina (USA), Ian and Michael from the BlueJ team will host a special session titled Building an Open, Large-Scale Research Data Repository of Initial Programming Student Behaviour (Fri, March 2, 1:45-3:00).

In this session, we will present and seek input into a new project that aims to use BlueJ do gather large scale data for computing education research. If you are interested in CompEd research, and you have an idea of what data you’d like to collect, come along and tell us. Or if you just want to find out what this is about – now’s your chance.

Ian, Michael and Neil from the BlueJ team will also be at the Oracle booth in the exhibit area much of the time (doing Greenfoot demos), so come along and say hello if you are in the area.

Objects First With Java - Fifth Edition
13 Dec 2011


A new edition of the BlueJ book “Objects First With Java” is now available.

The fifth edition of the “Objects First With Java” book — the BlueJ book by David Barnes and Michael Kölling from the University of Kent — has now finally been released.

David and Michael worked on this edition for about a year, and it’s good to see the book finally available in the shops. This edition is a substantial update of previous editions of the book. Many examples have been updated with newer, more relevant projects, and additional explanations have been added where experience has shown students find things difficult. A new addition are “video notes” to accompany the book, which will be released over the next couple of months.

The new edition now covers Java 7 constructs, while remaining fully usable with Java 6 as well.

The book is out now in the US, and should become available in Europe and the rest of the world within the next few weeks.

BlueJ 3.0.6 is out now
10 Nov 2011


The next release of BlueJ is now available.

BlueJ 3.0.6 has been released. This is a maintenance release which fixes some small bugs and problems.

In particular, a fix for an issue with the display of class documentation when running with Java 7 has been resolved, various problems in the codepad have been fixed, and some problems with method call result dialogs not displaying have been rectified.

All users of BlueJ 3.0+ are encouraged to upgrade to this new version.

Download it now!

10 Million Downloads of BlueJ
29 Oct 2011


The BlueJ environment, a system to learn and teach object-oriented programming in Java, has been downloaded 10 million times.

BlueJ was developed in the Programming Education Tools Group, part of the Computing Education research group at the School of Computing, University of Kent, and is being distributed and used worldwide. BlueJ is currently in use by thousands of teaching institutions, including universities and high schools in 18 natural languages, and has changed the way introductory programming is taught for millions of students.

While downloads numbered in the tens of thousands in the first year, they now run at about 2.5 million per year, hitting a total of 10 million this week, since records began in 2001.

Java 7 for introductory programming — does it make a difference?
31 Aug 2011


The recently released BlueJ 3.0.5 brought full support for Java 7. While it is always good to be up-to-date with the latest versions — what does that actually mean for introductory programming teaching?

Java 7 brought a considerable list of new features to the Java system. Most of them deal with fairly advanced or specialised topics, and will have no influence on introductory teaching with Java. Some, however, will become visible even close to the beginning of programming. Here, we give a short overview of what’s new, and what you — as a teacher of introductory programming — should be aware of.

Java 7 - What’s new

Most of the new features in Java 7 are under the hood or in specialised libraries. These are very unlikely to affect an introductory programming course.

Improvements to the internals of the JDK include changes to the VM to support dynamically typed languages and improvements to the class loader architecture. On the library side, there are new frameworks for concurrency, cryptography and new versions of JDBC and Unicode. All these will not be relevant for most introductory courses.

The two areas that are relevant are “Project Coin”, the code name given to a project defining several small language enhancements, and NIO.2, a new library for I/O. We’ll discuss these in more detail in a moment.

Equally important, what’s not included in this release includes support for closures (known as “Project Lambda”). This would have been the most significant change to Java since the introduction of generics in Java 5 or, arguably, since the original definition of the Java language in 1995. Project Lambda has, however, been deferred to JDK 8 in what’s known as Plan B. JDK 8 is currently scheduled for release in late 2012.

So, which of the new Java 7 features are actually relevant for our intro programming course?


The I/O classes in Java have been improved several times over the years. The release of JDK 1.4 in 2002 brought some significant improvements in the somewhat short-sightedly named NIO library. The naming is rather less than ideal, since it stands for “New I/O”, and the passing of time dictates that everything new will eventually get old.

Which brings us to Java 7 and the New New I/O. So what will this be called now — NNIO? Well, the designers settled on NIO.2.

NIO.2 brings a number of new classes and interface, some with very useful methods. If you are doing any programming that accesses the file system, it’s worth familiarising yourself with these. Particularly interesting are the Files and Paths classes, and the Path interface, which you can find in the java.nio.file package.

All other relevant new features are part of Project coin. They are diamond notation, strings-in-switch and improved exception handling.

Project Coin

Diamond notation

Generic type details on the right hand side of an assignment can now be inferred. For example, where in Java 6 we had to write

    HashSet<String, Monster> monsters = new HashSet<String, Monster>();

to declare a HashSet variable and initialise it with a fresh HashSet object, in Java 7 we can write

    HashSet<String, Monster> monsters = new HashSet<>();

In other words: We do not have to repeat the generic types of the HashSet on the right hand side, and can instead just write <>. (This syntax is the reason that this construct is known as the “diamond notation”). The effect of this is exactly as the Java 6 version above. It is a purely syntactic shortcut. The compiler will fill in the generic types by copying them from the variable declaration on the left, and all behaves just as before. Of course, the old notation is still allowed.

Strings in switch statements

The variable used in switch statements can now be of type String. For example

    switch (command) {
       case "go" : 
       case "help" : 
       default : 

Before Java 7, strings could not be used in switch statements.

Improved exception handling 1: multi-catch

It is now possible to catch multiple exceptions in a single exception handler. For example:

    try {
        file = new File("readme.txt");
    catch (FileNotFoundException | UnsupportedEncodingException ex) {

As you can see in this example, the catch clause can list multiple types of exception in it’s header, separated with an OR symbol, to catch any of these types of exception.

Improved exception handling 2: try-with-resources

The second new feature relating to exceptions is called try-with-resources. It solves a hard problem: It was previously surprisingly hard to correctly guarantee that resources (such as files or network connections) were correctly closed in the case of an exception.

The new construct solves this. Look at this example:

    try (FileWriter writer = new FileWriter(filename)) {
    catch (IOException e) {

Before Java 7, the standard way to close a resource (a FileWriter in this example) would have been in a finally block, which followed the catch block. In Java 7, the FileWriter is opened in round brackets following the try keyword, marking it as a resource to be auto-closed. Once the try/catch block is completed, the resource will automatically be closed by the Java runtime system.

For classes to be used with the auto-close mechanism, they must implement the new AutoCloseable interface. All the relevant classes in the Java library have been retrofitted to implement this interface.

That already sums up the relevant Java 7 changes. As we can see — not much to worry about here. (This will be different next year, when JDK 8 will bring us closures. I expect we will have to have a lively discussion then about how to treat these in a first-year course. But we can leave that for a while.)

To find out more about the new constructs in Java 7, see this summary. The next version of the Object First book (5th edition, to be released in late October) includes discussion of these new features.

If you have any questions or comments, please use the discussion forum here in the Blueroom.

BlueJ is 12 today!
23 Aug 2011


It’s BlueJ’s birthday today.

The BlueJ system has quite a longish history by now. Many people were involved over the years, in several different countries. The first full release, Version 1.0, was on 23rd August 1999, when the project was located in Melbourne, Australia. That makes it a full 12 years since inception.

We have come a long way since then. Let’s all have a drink to the next 12!

BlueJ 3.0.5 is out, supports Java 7
16 Aug 2011


BlueJ 3.0.5 has now been released. Get it while it’s hot!

Those of you paying attention will have noticed that this news item is a little delayed. BlueJ 3.0.5 was, in fact, released a couple of weeks ago. However, I have been on holiday, so I haven’t kept up with writing news announcements. Sloppy, I know, but sometimes some time out with the kids takes priority :)

Anyway, while I was relaxing in sunny Illinois, the rest of the team, mainly Davin, Neil and Phil, were busy at work and finalised the BlueJ release and got it out the door.

Many of the new features have already been presented in a previous news item, so I won’t repeat that here. However, there is one additional new feature:

BlueJ is now fully compatible with Java 7.

This does not only mean that BlueJ runs on JDK 7, but also all new language constructs are fully supported.

With this release, we managed to get Java 7 support out only three days after Java 7 itself was officially released. Not too bad, I think.

Have a great summer everyone.


BlueJ 3.0.5 coming soon
18 Jul 2011


BlueJ version 3.0.5 is being prepared for release and includes some new features. It should be out within a week or so.

We are currently preparing the release of the next BlueJ version - 3.0.5.

It is numbered as a bug fix release — only a minor point update — as bug fixes are indeed the main priority. However, it also includes a small number if functionality changes. These include:

Scope colouring and comments

Comments are now displayed better at the beginnings and ends of scopes. For example, this is a display from BlueJ 3.0.4:

Image Alt Text

There are two places here where the scope colour is ended by a comment. Both after the if statement and at the end of the ‘up’ method, the trailing comment stops the scope colour. In version 3.0.5 this has been changed to include the comment in the coloured area:

Image Alt Text

Recording of method calls

As some readers will know, the BlueJ terminal has an option to record method calls made interactively. This can help to document project testing, but also in the introduction of the syntax of method calls. The format of these calls has been improved to show Java syntax better than before.

Treatment of non-ASCII characters

Character encodings have been a very long standing annoyance with BlueJ for people who use non-ASCII characters and work on multiple platforms. Up to version 3.0.4, BlueJ used the local platform’s default character encoding for its files. Since the platform encodings are different between different operating systems, non-ASCII characters were garbled when transferred from, say, Windows to MacOS.

If, for example, I wrote my last name — Kölling — properly in the source code, it would not survive transfer of the project to a different system.

As of BlueJ 3.0.5, all files are encoded in UTF-8, and it should be safe to transfer projects between systems, even if they contain local language characters.

JUnit 4

JUnit has been upgraded to JUnit 4. This changes the syntax of unit test methods to use annotations instead of prefixed method names.

The JUnit 4 support in BlueJ is based on a contribution by Patrick Doran-Wu, working with Rachel Cardell-Oliver, from the University of Western Australia. Many thanks for implementing this and contributing it back!

Apart from the changes listed here, BlueJ 3.0.5 includes a good number of bug fixes. (If you are interested, you can see the complete list in our bug tracker database.)

We would also like to thank the many translators who have again contributed translations of the interface into other languages. We are currently in the process of final testing and incorporating some interface translations. Once that is completed, we are ready to release. I expect this will be in about a week.

16 - 30 of 35   « previous

Created by Supported by
Copyright King's College London, 2017. Contact us.