Recent progress in Internet environment and requirement for Internet programming language has made Java as a major programming language for Internet. However, since Java allows code motion and interaction on Internet, efficient and safe execution has become important and more technical needs are emerging for safe and efficient execution of Java programs. This project tries to do practically applicable research based on theoretical background in this newly emerging environment, and it has an approach to solve this problem by combining well developed theoretical research in program analysis and realistic implementation of analyzers. To meet the requirement, the first goal of this project is to present a systematic framework to design practical analysers for Java, which are based on semantics-based analysis. As instances of the framework, we provide two analyses for Java. One is a class analysis for Java, which approximates the set of classes of objects that each expression might refer to. The other is an uncaught exception analysis for Java. The uncaught exception analysis approximates all the uncaught exceptions generated in the method. Since this research seek to improve efficiency and safeness of Java programs through semantics-based analysis, we can prove the correctness of the designed analyzers. In addition, we implement the designed analysers that can be applied to large programs of tens of thousands lines, and integrate them into GNU Java compiler.