It was designed to adapt to an evolving environment. For example, if A distributes an upgrade to its libraries then all of the software from B will break. 3DPC Inc. 3DPC released a new version of the graphics library which several computer manufacturers bundled with their new machines. Customers of Archimedes that bought these new machines discovered to their dismay that their old software no longer worked. By making these interconnections between modules later, Java completely avoids these problems and makes the use of the object-oriented paradigm much more straightforward.
Libraries can freely add new methods and instance variables without any effect on their clients.
An interface is simply a specification of a set of methods that an object responds to. It does not include any instance variables or implementations. However, in Java, finding out based on the runtime type information is straightforward. It is also possible to look up the definition of a class given a string containing its name. This means that you can compute a data type name and have it easily dynamically-linked into the running system.