In fact, programming is done by sending messages to the environment. A class is declared by sending a message to another class. A method is declared by sending a message to a class. The state of a program is captured in an image, and programs are executed by sending messages to this image. This imperative model of development makes programmers very efficient.
Development is in a constant iterative mode.
Shipping an application is done by taking a snapshot of the image, and sending it off to the customer. Recovering from a broken image can be tedious. Java code is provided textually and compiled with a compiler one class at the time. The complete class needs to be provided, with all its methods. This style of programming requires more preparation before the program can be first started.