Over the past years research and development on computer architecture hasshifted from uni-processor systems to multi-core architectures. This transitionhas created new incentives in software development because in order for the soft-ware to scale it has to be highly parallel. Traditional synchronization primitivesbased on mutual exclusion locking are challenging to use and therefore are onlyefficiently employed by a minority of expert programmers.Transactional Memory (TM) is a new alternative parallel programming modelaiming to alleviate the problems that arise from the use of explicit synchroniza-tion mechanisms. In TM, lock guarded code is replaced by memory transactionswhich comply with the ACI (atomicity, consistency, isolation) principles. Thesimplicity of the programming model that TM proposes has led to major researchefforts by academia and industry to produce high-performance TM implementa-tions. The majority of these TM systems, however, focus on shared-memory ChipMultiProcessors (CMPs) leaving the area of distributed systems unexplored.This thesis explores Transactional Memory in the distributed systems do-main and more specifically on small-scale clusters. A variety of novel distributedtransactional coherence protocols are proposed and evaluated, against complexTM oriented benchmarks, in the context of distributed Java Virtual Machines(JVMs) - an area that has received much attention over the last decade due itsperfect applicability into the enterprise domain.The implemented Distributed Software Transactional Memory (DiSTM) sys-tem, proposed in this thesis, is a JVM clustering solution that employs softwaretransactional memory as its synchronization mechanism. Due to its modular de-sign and ease in programming, it allows the addition of new protocols in a fairlyeasy manner. Finally, DiSTM is highly portable as it runs on top of off-the-shelfJVMs and requires no changes to existing Java source code.