Password (Forgotten it?)
16 - 24 of 24   « previous next »

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.

Get your own BlueJ mug!
16 Jun 2011


You can now earn yourself a BlueJ coffee mug by uploading a resource to the Blueroom.

Since opening this site a few weeks ago, quite a lot of teachers signed up. We’re now more than 230 people here, all in less than four weeks. And there were some interesting discussions. All that is good.

One other area where we hope the Blueroom can help instructors is with sharing of resources. So far, only very few resources have been uploaded.

There may be many reasons for it - you are too busy right now, you think your resource is not really interesting to others, you just want to put some finishing touches to it and didn’t yet get around to do it…

One thing it is not is that there are no resources. We know they are out there. We talk to many BlueJ users and we have seen them!

We know that many of you have a lot of stuff. It can be anything that you use in your BlueJ-related teaching: slides, projects, worksheets, lesson plans, course outlines, videos – anything!

So, to encourage you to upload what you have, we are giving away free BlueJ Coffee Mugs to everyone who uploads a resource to the Blueroom before the end of June!

That is: a free mug, with a BlueJ icon on it, for every person who uploads any resource before end of June!

Call it marketing, or call it bribery. Whatever it is — it is your chance!

And remember: Resources don’t have to be polished or finished or spectacular. The sharing model is a wiki model: the whole community can then help improving, fine-tuning and extending a resource. The important thing is not how perfect it is, the important thing is to get the idea up here in the room. (See also our sharing manifesto.)

So, go and trawl through your teaching folders now and see what you got! Happy uploading.

Off to a good start
24 May 2011


In less than four days, the Blueroom is up to more than 100 members.

How many people out there use BlueJ?

The answer is: We have no real idea.

We know download numbers, and we know of a good number of institutions who have told us over time that they use BlueJ, so we know you are out there. But when we discussed opening the Blueroom, and whether it would be worth the effort to set up and maintain this site, we were not sure how many teachers would be interested to join up. Would we get enough of an audience?

So far it looks like we needn’t have worried. Only four days in, and we have more than 100 people signed up. It looks like there is sufficient interest out there.

The next question is: Interest in what? Why are you here?

Remember, this site is only as useful as you make it. I expect a good number of you are here to see whether you can find some good resources. That works only if some of you are actually willing to share your resources!

So, please have a think: Do you have a BlueJ assignment that you are using? Some slides? A worksheet? Assignment ideas? A lesson plan?

Any of that would probably be of great interest to other educators, so please, upload it here. I am very aware that many of you think your material is not quite ready, not polished enough, not finished. But please, upload it anyway! Seriously, if you wait for it to be finished, we will never see it.

It is better to post something raw than not post at all!

For now: Welcome, and nice to see you all here!

2010 BlueJ Downloads
23 May 2011


Annual BlueJ download numbers have increased to over 2.5 million for 2010. A huge increase - and we have no idea why.

Since 2001, we have been monitoring downloads of BlueJ from our server, So far, download numbers have increased every year, sometimes by significant amounts. We often had growth rates of 20 to 40%.

Last year, however, has been unusual. We saw an increase in downloads of 80%! And we have no real idea where this comes from.

Ever since we started distributing BlueJ, we expected growth to level out at some stage. Some time, we thought, we must reach a saturation point.

Well, it looks like we’re not at that point yet.

20 May 2011


Welcome to the new Blueroom. To make it work, your help is needed. It is what you make of it!

With the Blueroom, we have created a new platform that allows you to share resources and have discussions. Whether this is useful will depend entirely on you!

As we all know, the usefulness of a community site stands or falls with the content: as long as there is nothing here, it’s a waste of space, and then people don’t come back, and then there’s nothing here. The typical vicious circle.

On the other hand, if people post resources and have interesting discussions, then other instructors might come back, add more interesting questions and discussions, etc. Over the next few weeks or months we will see whether we can lift this off the ground to reach critical mass to make this an interesting site.

Whether this will be an interesting site depends on you. Don’t wait for ‘the others’ to start a discussion, or to post something - just do it. There is no ‘them’, there is only ‘us’.

The resource model on this site is based on a wiki editing model: Resources are not owned by their creator, they are owned by the community. Once a resource is there, anyone can edit it. So please do! If you see something where you can make an improvement — do it! Fix an error, add an improvement, add a comment or some feedback, make translations — whatever you can do.

Also, if you have your own BlueJ teaching material — exercises, slides, project ideas, anything — please post them here. Others will be grateful.

So, let’s see whether we can manage together to create some interesting content and make this site useful to us as a teaching community.

Again, welcome, and please do participate!


Blueroom Opening
21 May 2011


The Blueroom has now opened its doors. Welcome! We hope you find the site useful, and if you have any troubles, please get in touch.

The Blueroom has been developed by the team behind BlueJ to support teachers who are using BlueJ, by allowing them to get together, talk, and share materials.

16 - 24 of 24   « previous next »

Created by

Copyright University of Kent, 2009-2013. Contact us.