Distributed computing offers increased performance over single machine systems by spreading computations among several networked machines. Converting a problem to run on a distributed system is not trivial and often involves many trade-offs. Many higher level communication packages exist but for a variety of reasons(portability, performance, ease of development etc.), developers may choose to implement a distributed algorithm using one of the four Java API communication mechanisms (RMI with Serializable or Externalizable Interface, socket and datagram socket). This paper provides a performance programming complexity analysis of these communication mechanisms based upon experimental results using well known algorithms to provide data points. Numerical results and insights offer guidance towards understanding the communication and computational trade-offs as well as the programming complexities encountered when adapting an algorithm to a distributed system.