BlueJ 3 and 4 Extensions


BlueJ offers an extension API that allows third parties to develop extensions to the environment. Extensions offer additional functionality not included in the core system.

BlueJ 5.0.0 has a rewritten extensions API explained here. This page still exists for those interested in extensions for BlueJ 4 and older only.

Installing BlueJ 3 or 4 extensions

Extensions are installed by placing the extension jar file into an extension directory. BlueJ has three separate locations for extensions, each giving the extension a different scope. The locations are:

Location Availability
<BLUEJ_HOME>/lib/extensions (Unix), or <BLUEJ_HOME>\lib\extensions (Windows), or <BLUEJ_HOME>/BlueJ.app/Contents/Resources/Java/extensions (Mac, Control-click BlueJ.app and choose Show Package Contents) For all users of this system in all projects.
<USER_HOME>/.bluej/extensions (Unix), or <USER_HOME>\bluej\extensions (Windows), or <USER_HOME>/Library/Preferences/org.bluej/extensions (Mac) For a single user for all projects.
<BLUEJ_PROJECT>/extensions For this project only.

Writing extensions

To find out how to write your own extensions for BlueJ 4 and earlier, read the Guide to Writing Extensions for BlueJ. You will also need the BlueJ Extension API documentation.

Available extensions for BlueJ 4 and earlier

Cleaning a BlueJ project
Description:

This extension adds a menu item to projects which deletes all .class and .ctxt files from the project, as well as the (generated) doc folder. This avoids some confusion when using a BlueJ project directly in other IDEs such as NetBeans.

Limitations:

After cleaning a project, the class diagram is not updated to reflect the missing .class files. You must either close and re-open the project, or use Tools/Rebuild Package menu item to force re-compliation.

Author: Bluej Team (Ian Utting)
 Download:
CleanProjectExtension.jar
 Sources:
CleanProjectExtension-src.zip
Grading student projects using INGInious
Description:

INGInious is a webapp and a BlueJ extension which allows students to submit, and receive instant feedback on, BlueJ projects. It is Free and Open Source.

Author: Anthony Gégo and Guillaume Derval. Université catholique de Louvain. Belgium
 Web site :
http://inginious.org/
A Simple GUI Builder
Description:

'Simple GUI Extension' is an extension for fast GUI design, not only for beginners. It contains list of basic swing components which you can add using drag and drop. It is possible to set some properties and events via the properties table. It is also possible to set components' size and position through mouse dragging or to change foreground or bacground color via pop-up menu. Menu generator is also included.

Author: Tomáš Svatek, University of South Bohemia, České Budějovice, Czech Republic
 Web site :
http://gbluej.slunecnisoustava.eu/
PMD as a BlueJ extension
Description:

The PMD Extension for BlueJ is a wrapper for the open source code analysis utility PMD.

This extension gives the BlueJ user a handy way to quickly run the PMD source code analyzer on a Java class in BlueJ. It adds a PMD menu item to the BlueJ class menu. PMD finds common programming flaws like unused variables, empty catch blocks, unnecessary object creation, duplicated code, and so forth. This extension works with any version of PMD and works under Linux or Windows.

Authors: Ted Mittelstaedt, from an original by Tom Copeland
 Web site : https://github.com/pmd/pmd-bluej
Class Card - A Better UML Extension
Description:

An improvement over the original UML Extension, this one allows you to show more than one class display, and to move class displays around the screen. Available in English and German.

Author: Michael Steinhuber
 Web site :
http://klassenkarte.steinhuber.de
A Multi-Project Workspace Handler
Description:

This BlueJ extension allows you to easily manage (i.e. create, import/export and switch between) multiple BlueJ projects. Some neat features help you to auto-position package windows or to handle bunches of jar files economically (e.g. when correcting students' exercises).

Author: Manuel Haim
 Web site :
http://multiproject.sf.net
Identifying the roles of variables
Description:

The Roles of Variables BlueJ extension is based on Sajaniemi's Roles of Variables theory, which describes the common ways in which variables are used in programming. The extension allows users to annotate their programs with labels based on these roles, and uses an automated system to check whether the actual use of the variable is consistent with that role assignment.

The download is a zip file containing the extension JAR file ( roles_of_variables.jar) as well as documentation and source code.

Author: Craig Bishop and Colin Johnson (University of Kent)
 Download:
rolesOfVariables.zip
CNU BlueJ Code Formatter
Description:

CNU BlueJ formatter is a BlueJ extension that integrates Eclipse's code style formatting capabilities into BlueJ's editor. The formatter adds a "Format" button to the editor, and formats compiled source code according to a set of style properties specified in a properties file. These properties can be customized using a simple dialog interface accessible from BlueJ's Preferences option. For convenience, the formatter comes with an installation executable JAR file.

Note: Requires BlueJ 2.2.1 or later.

Author:

Roberto Flores, Christopher Newport University

Web site:
http://cnubluej.pcs.cnu.edu/
Objectdraw Invoker
Description:

An extension to make it easier to work with the objectdraw library. If any class in a BlueJ class diagram extends the objectdraw Controller class, this extension adds a menu item to the class which will create an object, place it on the BlueJ object bench and invoke its startController() method. I.e. "run" it inside BlueJ rather than as an external Applet.

Note: Requires BlueJ 2.2.0 or later.

Author: Tom Murtagh (with help from Ian Utting's ACM Invoker code)
 Download:
objectdrawinvoker.jar
Programming Lego NXT Robots from BlueJ
Description:

A simple extension which compiles and deploys programs using the JeLOS operating system for Lego NXT robots from BlueJ. When you right-click on a class in the class diagram you get a menu item which can be used to either just comile all files or upload the program to the robot (and even run it).

Author:

David Bowes, University of Hertfordshire

Web site:
http://homepages.feis.herts.ac.uk/~comqdhb/lego/bluej.php
Main Program Runner
Description:

An extension to allow direct invocation of a main method. If a class contains a properly declared main method, this extensions adds a menu item "Run Main Method" which directly invokes it. This makes the main method much more obvious, if that suits your style, and also helps you get the declaration right; if it's not public static void main(String [] args) you won't see the menu item.

Author: BlueJ team (Ian Utting)
 Download:
MainRunner.jar
SyntaxSourcePrinter
Description:

Supports colour printing of source code from within BlueJ using the syntax colouring used in BlueJ's editor. This new version not only sends source code to printers, but also saves HTML or RTF to files, for inclusion in course notes or slides.

The extension adds a new "Print" menu item to the context menu of classes in the BlueJ Class Diagram. It obeys the colour settings in the file moe.defs.

The downloadable Jar file includes the source code of the extension, please tell Marc about any additions or improvements you make.

Author:

Marc Seidemann

Download:
The 12 Oct 2007 version.
ACM Invoker
Description:

An extension to make it easier to work with the ACM Java Task Force library. If any class in a BlueJ class diagram implements the acm.program.Program class, this extension adds a menu item to the class which will create an object, place it on the BlueJ object bench and invoke its start() method. I.e. "run" it inside BlueJ rather than as an external Applet.

Note: Requires BlueJ 2.2.0 or later.

Author: BlueJ team (Ian Utting)
 Download:
ACMInvoker.jar
Submitter
Description:

Allows submission of projects to specified address via email (including secure SMTP), ftp, http(s) or file copy. Highly configurable.

Note: There have been four maintenance releases since the major release on 16 Jan 2007. The first (2 Feb 2007) de-cluttered the preference panel and fixed a significant information leak in the https implementation. The second (12 Sep 2007) fixed a sever problem with email-based submission when using Java 6. The third (25 Sep 2007, which shipped with BlueJ 2.2.1) fixed a character-set problem with FTP passwords. The fourth (21 Oct 2008, which shipped with BlueJ 2.5.1) added support for a sortable isodate submission scheme parameter.

Authors: BlueJ team (Ian Utting, Damiano Bolla, Cecilia Vargas)
 Documentation: Submitter documentation
Download:
The 21 Oct 2008 version . Install by overwriting the existing submitter.jar in your BlueJ installation with this new version.
Checkstyle
Description:

Allows automated checking of coding styles. Coding styles can be specified flexibly in an external file. This is a major update to this extension, including:

  • Now uses the latest Checkstyle release, v4.3
  • Simpler one-jar installation
  • Allows configuration files to be read from URLs in addition to local files
  • The documentation has additional tips useful for lab-based or cloned setup
Author: Rick Giles and Stephen Edwards
 Documentation:
http://bluejcheckstyle.sourceforge.net/
 Download:
The latest version from sourceforge
3D Environment Extension
Description:

Env3d is a 3D engine written in Java aimed at students of computer science. This engine makes it very easy to visualize objects and create 3D applications.

Using the BlueJ extension, students can literally create an object and "drop" it into a graphical 3d environment. Texture mapping and model loading (.obj format) are supported.

When used standalone, students can create animation and fully interactive environment. An example of the "world-of-zuul" in 3D is included.

Feedback and comments are very welcome.

Author: Jason Madar, Capilano College, British Columbia, Canada
Web site:
http://env3d.org/beta/
patternCoder: A Design Patterns Extension
Description:

Provides a wizard which guides the user through the process of adding a Design Pattern or binary class relationship to a BlueJ project. The user can select a pattern or relationship and choose specific names for the component classes. A set of basic classes are then generated. The classes have sufficient code out-of-the-box to allow exploration of the behaviour with no additional coding. They can then be edited to meet the requirements of specific problems. A selection of patterns and relationships is provided, and other patterns can be defined using XML files and added into the extension.

Authors: Michael Nairn, Jim Paterson and John Haddow, Bell College and Glasgow Caledonian University
Web site:

http://www.patterncoder.org/

A Class Wizard
Description:

The "Class Wizard" enables BlueJ users to quickly and easily create or edit classes and class' components (attributes, methods, constructors, and so on) using the syntax of UML. The Wizard can be used before or after creating classes and editing their source code in the BlueJ text editor.

Note: There are two versions of this extension, depending on which version of Java you are using.

Authors: Korean BlueJ Users Group (KBUG)
Download:

ClassWizard.jar for Java 5
ClassWizard_for1_4.jar for Java 1.4

UML Extension
Description:

Displays a simple popup for a BlueJ class in the form of a UML Class icon. Details of what will be displayed, and the precise syntax used can be configured via the preferences panel, or the BlueJ properties files.

Authors: BlueJ team (Ian Utting)
 Documentation: Here
Download:
UMLextension.jar (if necessary, right-click and 'Save...')
BlueJ Extension Manager
Description:

The BlueJ extension manager checks whether updates are available for any installed extensions. It can also check for availability of new extensions, and lets you install or delete extensions.

Note: prior to BlueJ 3.0.6, this extension also checked for updates to BlueJ itself. This function is no longer available, but users can find out whether a newer version of BlueJ is available using the Help/Check Version menu item in BlueJ.

Authors: BlueJ team Kent (Ian Utting, Damiano Bolla)
 Documentation: Documentation for users and documentation for extension writers
Download:
extmgr.jar (if necessary, right-click and 'Save...')
BlueJScript
Description:

The BlueJScript extension is a JavaScript interpreter embedded in a BlueJ extension. You can use it to rapidly prototype your own extensions, or to produce truly interactive HTML-based BlueJ tutorials like Purple Cow or BlueJScript Shapes To try them out, download and install the extension, then download and unzip a tutorial and open it as a BlueJ project. (Note: the BlueJScript Shapes tutorial contains audio, and won't work on a system not equipped to handle Java audio).

Authors: BlueJ team Kent (Damiano Bolla, Ian Utting)
 Documentation: Documentation for script authors
Download:
bluejscript.jar (if necessary, right-click and 'Save...')
Jeliot 3
Description: Jeliot 3 is a Program Visualization application from the University of Joensuu, Finland, and the Weizmann Institute, Israel. See the Jeliot web page. This extension integrates Jeliot in BlueJ.
Authors: Antoine Pineau, Niko Myller, Andrés Moreno and the Jeliot team
 Documentation
and download:
http://cs.joensuu.fi/jeliot/downloads/bluej.php
Remote File Manager
Description: Extension to open, edit, and save projects from/to a server with a sftp daemon without having to know how to use Unix. The extension tries to mimic traditional file dialogs.
Author: Jonathan Chapman, Appalachian State University
 Documentation
and download:
http://www.cs.appstate.edu/projects/rfm/
Sequence Diagram Editor
Description: An editor that allows the manual creation of sequence diagrams, and links in with BlueJ. Updated September 2006 to work with more recent versions of BlueJ (my fault, not theirs) by Ian Utting.
Authors: Matilda Östling, Jürgen Börstler
 Documentation: (included in download)
Download:
SD_Editor.zip (includes documentation and source code)
GetterSetter
Description: Supports automatic generation of getter and setter methods, as well as a GUI dialog to use these methods to edit an object's state.
Authors: Milton Jesús Vera Contreras
 Download:
GetterSetterExtension.jar
 Sources:
GetterSetterExtension-src.zip