The producer and the consumer are two java classes to implement respectively the generation (sequencely) of the 100 random numbers and the consuming of the numbers. The classes producer and consumer will be executed in two different JVM also on separate HW machine. Each number generated by the producer will be saved in an external text file. Each number read by the consumer will be saved on a different text file so that can be compared with the producer's file. At the start of the producer and at the start of the consumer a variable will be passed to the classes to identify the kind of communication: "socket", "direct","indirect", "pipe", "shared_area". The Socket Java class will be used in producer and consumer to implement the socket communication (client/server -> consumer/producer). For socket communication producer will start to send to a socket, on a pre-defined IP/Port (configurable on an external property), the 100 rundom numbers once the consumer will connect to the same socket. For "direct" communication, SOAP will be used: consumer will be a webservice consumer of the operation provideAnArrayOfHundredRandomNumers() provided by the producer webservice: Tomcat will be a requirement to execute the websevice producer, spring-ws or axis will be used for the implementation. SMTP will be used to implement the "indirect" communication: producer will send the 100 random number via smtp to a mailbox of the consumer (one number for each message .........