Java is an object oriented language. The underlying technology for implementing Java objects is JavaBeans.
These are objects designed for intra-process communication. In effect, you bolt JavaBeans together to create Java applications.
In constrast, EJB - Enterprise JavaBeans - are objects designed for inter-process communication. EJBs support distributed processing.
It is a fairly new and complex technology and quite distinct from JavaBeans despite the repeat of the name.
Enterprise Java technologies are discussed more fully below.
A Java application will consist of Java class files plus data files such as images and any other components.
With the advent of JavaBeans, the JAR - Java Archive - file format arrived.
Based on the ZIP format and using LZW compression, a JAR file is a convenient way to distribute a Java application.
As far as Java developers are concerned, the J2SDK - Java 2 Developer Kit - is the current standard.
There are also Integrated Development Environments implemented as wrappers around the J2SDK.
The main J2SDK components can be conveniently divided into tools, class libraries, demo programs and class library source code.
While all Java programs are implemented as a class file, the JFC - Java Foundation Classes - in J2SDK are often referred to as Java APIs - Application Programming Interfaces.
These are what enable Java applications to be architecturally neutral.
The JFCs are basic to Java's portability.
Java's J2SDK provides command line tools.
These include the Java compiler, called javac, the run time environment containing the Java bytecode interpreter,
which is - logically enough - called java,
a debugger called jdb,
javaviewer for running applets and javadoc for document generation.
Java programs are saved with a .java filetype and compiled to a .class file.
Class files can be grouped together in Packages for convenience and in practice any class file not in a Package is assumed to be in the default Package.
Java's class files embody Java technology, and are constantly being extended.
One of the more exciting recent additions to the JFC is the Swing library.
This enables you to easily generate consistent graphical user interfaces in Java.
Previously, you had to use AWT, the Abstract Windowing Toolbox.
All you need to know about it is that it wasn't up to the job and, specifically, applications using it exhibited different behaviours on different platforms.
EJBs are one of the main components of J2EE - Java 2 Platform, Enterprise Edition.
Other important components include JDBC - Java Database Connectivity.
This implements connection to various database systems via a Driver class.
RMI - Remote Method Invocation - provides a straightforward support for distributed computing provided both clients and servers are also written in Java.
For situations where the client or server isn't Java based, Sun provides Java IDL - Interface Description Language.
This is a CORBA based solution which includes a built in ORB - Object Request Broker.
Such solutions are also available from third party developers.
JNDI - Java Naming and Directory Interface - supports network directory services including NIS, LDAP and NDS as well as for RMI and CORBA directory services.
JMS - Java Messaging Service - supports networked messaging services. In practice, this appears to be little used.
Possibly because a separate JMS is necessary for each, vendor specific, messaging service.
Sun is trying to extend Java into every area of computing life - so expect JIVE - Java Interpersonal Relation Interface RSN.
In the meantime, the Java technologies below are already available.
Java Plug-in Software enables you to tell applets or JavaBeans on enterprise intranet Web pages to use JRE - Java 2 Runtime Environment -
instead of the web browser's built in VM.
The Java Card specifications puts Java to run on Smart Cards and memory limited devices.
This enables you to write Smart Card applications which will run on different Smart Card technology - as long as it also uses the Java Card.
To develop Java Card apps you need the JCAE - Java Card Application Environment - which Sun normally licenses to OEMs.
PersonalJava is an application environment for those developing applications for personal devices with network connection capabilities.
It is even available for Windows CE.
Which brings us to the most hyped and least used Java technology, Jini, which oddly isn't an acronym.
Jini is designed to enable hardware devices to recognise and work with each other automatically.
Although we've by no means exhausted even Sun's Java technologies, and have not touched on any from third party vendors,
this should be more than enough to get you through the job interview.