A Formal Specification of Java TM Class Loading Zhenyu

The Java Virtual Ma hine (JVM) has a novel and powerful me hanism to support lazy, dynami lass loading a ording to user-de nable poli ies. Class loading dire tly impa ts type safety, on whi h the se urity of Java appli ations is based. Con eptual bugs in the loading me hanism were found in earlier versions of the JVM that lead to type violations. A deeper understanding of the lass loading me hanism, through su h means as formal analysis, will improve our on den e that no additional bugs are present. The work presented in this paper provides a formal spe i ation of (the relevant aspe ts of) lass loading in the JVM and proves its type safety. Our approa h to proving type safety is di erent from the usual ones sin e lasses are dynamially loaded and full type information may not be stati ally available. In addition, we propose an improvement in the intera tion between lass loading and byte ode veri ation, whi h is leaner and enables lazier loading.