Timing side channels---an infamous class of security vulnerabilities resulting in leakage of confidential information through differences in the running time of a system---constitute an active research topic since the mid 1990's. Mitigation techniques for such side channels include program transformations intended to remove any dependence of a program's execution time on its confidential inputs. However, results by Coppens, Verbauwhede, Bosschere, and Sutter [Coppens2009] show that some of the proposed program transformations do not account for microarchitectural influences and therefore leave a program vulnerable to timing attacks. This thesis investigates three selected program transformations presented in the literature [Agat2000, Molnar2005, Barthe2006] in the context of programs executed on a Java virtual machine. By the help of information theoretic results of Chatzikokolakis, Chothia, and Guha [Chatzikokolakis2009], we are able to quantitatively assess the effect of each program transformation on information leakage. In particular, we developed a sample-based analysis framework in order to characterize the timing behavior of a given Java program and quantitatively estimate the induced information leakage. We present four case studies including non-trivial Java programs with side channels which are transformed by the selected program transformations and analyzed by our framework. We evaluate the effects of each program transformation with respect to mitigation of information flow and induced execution time overhead. Additionally, we manually replace certain program fragments in a step-wise manner, allowing conclusions about which fragments contribute to a timing channel. Our results include an empirical confirmation of the inappropriateness of two of the three selected program transformations for Java virtual machines with just-in-time compilers. Furthermore, we identify timing channels caused by recursion and other general program elements.