Building GUIs from the start conveys a very distorted picture of programming and object-orientation. Students spend their time dragging buttons rather than thinking about building an application. Object-oriented program structure can be represented graphically in a way that makes it easier to understand. Few existing environments make good use of this. The environment is expensive.
Cost is still a big problem with some environments.
One effect of this is the problem for students to work at home - acquiring a license for home use can be expensive. In BlueJ students interact with classes and objects. They can manipulate class structure graphically and textually. Objects can be created and methods of any object can be called interactively. BlueJ has been designed for teaching.