BlueJ
Encyclopedia
BlueJ is an integrated development environment
Integrated development environment
An integrated development environment is a software application that provides comprehensive facilities to computer programmers for software development...

 (IDE) for the Java programming language
Java (programming language)
Java is a programming language originally developed by James Gosling at Sun Microsystems and released in 1995 as a core component of Sun Microsystems' Java platform. The language derives much of its syntax from C and C++ but has a simpler object model and fewer low-level facilities...

, developed mainly for educational purposes, but also suitable for small-scale software development
Software development
Software development is the development of a software product...

.

BlueJ was developed to support the learning and teaching of object-oriented programming
Object-oriented programming
Object-oriented programming is a programming paradigm using "objects" – data structures consisting of data fields and methods together with their interactions – to design applications and computer programs. Programming techniques may include features such as data abstraction,...

, and its design differs from other development environments as a result. The main screen graphically shows the class structure of an application under development (in an UML
Unified Modeling Language
Unified Modeling Language is a standardized general-purpose modeling language in the field of object-oriented software engineering. The standard is managed, and was created, by the Object Management Group...

-like diagram), and objects can be interactively created and tested. This interaction facility, combined with a clean, simple user interface, allows easy experimentation with objects under development. Object-oriented concepts (classes
Class (computer science)
In object-oriented programming, a class is a construct that is used as a blueprint to create instances of itself – referred to as class instances, class objects, instance objects or simply objects. A class defines constituent members which enable these class instances to have state and behavior...

, objects
Object (computer science)
In computer science, an object is any entity that can be manipulated by the commands of a programming language, such as a value, variable, function, or data structure...

, communication through method calls
Method (computer science)
In object-oriented programming, a method is a subroutine associated with a class. Methods define the behavior to be exhibited by instances of the associated class at program run time...

) are represented visually and in its interaction design in the interface.

History

The development of BlueJ was started in 1999 by Michael Kölling
Michael Kölling
Michael Kölling is a professor and software developer currently with the School of Computing at the University of Kent. Originally from Bremen, Germany, he is also a key member of the team that developed the BlueJ and Greenfoot Java learning environments. BlueJ is used in over 900 institutions...

 and John Rosenberg at Monash University, as a successor to the Blue
Blue programming language
Blue is a system for teaching object-oriented programming, developed at the University of Sydney, Australia. It is an integrated development environment and a programming language. Blue has been used for teaching since 1997...

 system. Blue was an integrated system with its own programming language and environment. BlueJ implements the Blue environment design for the Java Programming Language.

BlueJ is currently being maintained by a joint team at the University of Kent
University of Kent
The University of Kent, previously the University of Kent at Canterbury, is a public research university based in Kent, United Kingdom...

, Canterbury, England – where Kölling now lectures, and La Trobe University
La Trobe University
La Trobe University is a multi-campus university in Victoria, Australia. It was established in 1964 by an Act of Parliament to become the third oldest university in the state of Victoria. The main campus of La Trobe is located in the Melbourne suburb of Bundoora; two other major campuses are...

 in Melbourne, Australia.

In March 2009, the BlueJ project became free and open source software
Free and open source software
Free and open-source software or free/libre/open-source software is software that is liberally licensed to grant users the right to use, study, change, and improve its design through the availability of its source code...

 , and licensed under GNU GPL with Classpath exception .

Features

The features of BlueJ are designed as an aid to learning object-oriented programming concepts, as well as an aid to program development itself. As a result, some commonly available tools differ from other environments, some tools are absent, and other tools are provided not commonly found in development environments. The features include:
  • Representation of object orientation
    Object-oriented programming
    Object-oriented programming is a programming paradigm using "objects" – data structures consisting of data fields and methods together with their interactions – to design applications and computer programs. Programming techniques may include features such as data abstraction,...

     – the concepts of classes
    Class (computer science)
    In object-oriented programming, a class is a construct that is used as a blueprint to create instances of itself – referred to as class instances, class objects, instance objects or simply objects. A class defines constituent members which enable these class instances to have state and behavior...

     and objects
    Object (computer science)
    In computer science, an object is any entity that can be manipulated by the commands of a programming language, such as a value, variable, function, or data structure...

     are presented in a visual manner. Both have distinct visual representations, and it is easy to demonstrate that code is associated directly with a class, that an object has a class type, and that the class type of an object directly determines its available methods and fields as well as its behavior.
  • Simplicity of the interface – The user interface is simpler than in full-scale professional environments, and thus easier to learn. The goal is for the development environment to "disappear". Students should be able to concentrate on the programming task without the need to struggle with the environment.
  • Object interaction – Programmers are able to experiment with objects by creating objects on the "Object Bench" and calling individual methods interactively (including passing of parameters and inspection of results). This is intended to encourage early and frequent testing, and experimentation to help understand the programming model.
  • The "Code Pad" – The code pad is a tool that instantly evaluates arbitrary Java expressions and statements.
  • Regression testing – BlueJ supports regression testing via an integration of JUnit. In addition to manual writing of JUnit classes, interactive tests can be recorded and JUnit test cases can be automatically created from these recordings.
  • Group work support – BlueJ provides simple support for group work via a subset of CVS and Subversion functionality.
  • Java ME support – Java ME (Micro Edition) projects can be developed and deployed from BlueJ.
  • Flexible extension system – Extensions (a.k.a. Plug-Ins) can be developed using a public extensions API to extend the functionality of the core environment.
  • Jar files and applets – Creation of executable jar files and applets is built into the system.
  • Translations – The BlueJ system interface has been translated into at least 14 different natural languages.


The visual interaction features of BlueJ were designed to allow one to delay the introduction of certain programming concepts considered difficult or problematic by educators. These include:
  • Syntax
    Syntax of programming languages
    In computer science, the syntax of a programming language is the set of rules that define the combinations of symbols that are considered to be correctly structured programs in that language. The syntax of a language defines its surface form...

     such as public static void main(String[] args) – which requires unnecessarily introducing the keywords public and static, as well as method arguments and arrays. BlueJ allows arbitrary classes to be instantiated and arbitrary methods to be invoked interactively.
  • Program input/output. In BlueJ both the parameter values for and the return values from method calls can be entered/inspected directly, so there is no need for students to deal with terminal I/O or write graphical user interfaces when they are still struggling with the basic concepts of programming.


The program is a fully functional development tool, commonly used by schools, colleges, and universities.

Some of the features BlueJ pioneered in modern development environments, such as interactive instantiation, direct object interaction, unit test recording, the editor "navigation view", and scope highlighting, are generally useful for software development, however, are not usually found in other development environments. Some attempts were made to replicate some of these features: For example, Microsoft's Visual Studio
Microsoft Visual Studio
Microsoft Visual Studio is an integrated development environment from Microsoft. It is used to develop console and graphical user interface applications along with Windows Forms applications, web sites, web applications, and web services in both native code together with managed code for all...

 replicated BlueJ's object bench feature, however, it remained somewhat obscure because it is not included in all versions of that environment.

Pedagogy

The pedagogical approach represented in BlueJ is based on constructivism and visualisation. Working with the BlueJ environment provides concrete experiences for abstract concepts, such as the class/object relationship, object instantiation, method calling, and parameter passing. These abstract concepts are traditionally hard to understand for novices, and providing concrete representations of them is intended to help the learning process. Visualisations of the processes and structures (such as objects on the object bench, and object inspectors) support this process.

The goal of this approach is for beginners to more easily develop a consistent mental model of object-oriented systems, their properties, and their execution.

Limitations

Although BlueJ is a useful tool for learning the basic concepts of Object-oriented programming, its features are too limited to be used as a mature development tool for a trained programmer. It misses some of the highly appreciated features of popular IDEs (e.g. Eclipse and Netbeans) such as live code checking and error detection (by means of continuous compilation).

Current Release

As of 1 August 2011, the latest stable release is BlueJ version 3.0.5 which is extremely user-friendly and marks blocks for the user using specific colors for specific blocks. For the professional programmer, this is not of much importance but to an aspiring learner, it is a boon.

A book, Objects First with Java – a Practical Introduction Using BlueJ written by David J. Barnes and Michael Kölling
Michael Kölling
Michael Kölling is a professor and software developer currently with the School of Computing at the University of Kent. Originally from Bremen, Germany, he is also a key member of the team that developed the BlueJ and Greenfoot Java learning environments. BlueJ is used in over 900 institutions...

, is also available.
The source of this article is wikipedia, the free encyclopedia.  The text of this article is licensed under the GFDL.
 
x
OK