Perhaps the most well-known feature of Java is its support for so-called applets, light weight applications that may enrich your Web-browser with graphics, multimedia and additional communication facilities. Browsers such as Netscape and Microsoft Internet Explorer have an embedded Java Virtual Machine that enables them to execute Java applets. Applets may also be executed by the Java plugin that has been provided by Sun Microsystems as an alternative to the browsers' built-in virtual machines.
Java offers a number of facilities for networking, including support for retrieving resources by URL, sockets, and remote method invocation. Remote method invocation (RMI) may be considered a light weight alternative for CORBA distributed programming.
In contrast with CORBA (version 2.0), Java allows for sending objects over the network due to its powerful Reflection API that gives runtime access to the properties of objects, including class types and methods.
The Beans framework offers component technology, that allows developers to exchange (beans) objects and inspect their properties in a uniform manner. For example GUI elements, written as beans, can be incorporated at runtime to add the desired functionality to a user interface.
Another well-designed and powerful feature of Java is its native interface, which enables the experienced programmer to embed native code in Java applications. No need to say that from a purists' point of view one should avoid this.
Last but not least, the javadoc facility must be mentioned. The javadoc tool allows for creating documentation directly from the class definitions, that may be annotated with signature descriptions, and information about its author, possible exceptions and comments.