Password (Forgotten it?)
16 - 30 of 38   

BlueJ 4 released
09 Mar 2017

A new version of BlueJ with many new features, including the new language Stride, is now available for download.

BlueJ version 4 has now been released. This version includes numerous new features, including the brand new Stride editor and language, support for JavaFX development, a rewritten interface, support for version control via GIT, and more.

We will talk about several of the new features separately and in more detail here in the Blueroom over the next few weeks, giving you more information and a chance to tell us what you think.

Until then, get the new BlueJ 4 here.

BlueJ 4 Preview 2 is out
10 Dec 2016

BlueJ 4 Preview 2 is now available for download, providing many improvements over Preview 1.

While this release is still a preview, it is now getting much closer to the final release version. In Preview 1, we added Stride to BlueJ, including the new frame-based editor.

In Preview 2, we did a lot of interface re-design and polishing, including rewriting the BlueJ interface in JavaFX.

BlueJ 4 Preview 2 is now available for download from the BlueJ website.

Start experimenting with BlueJ 4
15 Aug 2016

Fancy a new editing paradigm?

Waiting for BlueJ to support Git?

We have just released the BlueJ 4 Preview.

BlueJ 4.0.0 Preview provides many new features and functionalities, most importantly:

  • Frame-based editor: an explanation of frame-based editing, and more information on our new editor, is available here.

  • Automatic error display in Java code, and switching to red-underline + tooltip.

  • Tabbed editing.

  • Supporting Git.

You can get BlueJ 4 Preview and post any feedback in this discussion thread.

Let us know what you think!

The BlueJ Team.

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.

16 - 30 of 38   

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