Java is a programming language originally developed by Sun Microsystems in 1995. Nowadays, Java is widely used in various fields. This book is to introduce how Java is being used in academic. Contents include Java virtual machine design, cost analysis of Java, popular open source library for research, Java in machine learning, enterprise Java applications and more. This book can be served as a good reference book for those who want to start their research career by using Java as the major development platform or who want to understand more about Java capabilities. Chapter 1 gives a detailed overview on Java. Chapter 2 proposes teaching materials for programming education. The materials are used to create animation by programming, do not require special knowledge of mathematical. Students were able to tackle programming positively by using the materials. Chapter 3 describes how the Spiral Model systemically blends Java concepts to student needs. Also, other pedagogical patterns, such as Early bird, Tool box, Mix Old and New are implemented through Graphics Progressive Projects, to foster the best teaching practices of the introductory Java course. Chapter 4 proposes a method that supports to merge duplicate code into a single module. It suggests how every of duplicate code can be merged by using several code metrics. Chapter 5 describes an ongoing effort to develop a highly-automated approach for migrating Java source-code, such as standard class libraries, to restricted JVMs. The resulting code migration tool is called Monarch, and is built upon the TL System - a general-purpose program transformation system. Chapter 6 proposes a framework for command processing in Java/Swing programs based on the model-view-controller (MVC) pattern. It supports centralized exception handling, premature command termination, pre- and post-processing of commands, undo/redo based on event objects and model listeners, and generic undo/redo commands. Chapter 7 discusses the software complexity to ensure the Quality Assurance of software. Software metrics have been found to be useful in reducing software maintenance costs by assigning a numeric value to reflect the ease or difficulty with which a program module may be understood. Chapter 8 discusses Aspect-Oriented Programming, which (AOP) is an emerging programming paradigm providing novel constructs to improve the overall modularity of a software system. Chapter 9 examines static and dynamic task assignment methodologies in a grid computing environment for dependent tasks. The proposal strategy reduces the average response time of tasks submitted to the grid with respecting the constraints of dependency. Chapter 10 presents a case-based reasoning system applied to the domain of the cooking recipes. Chapter 11 presents the historical background of UnBBayes, its architectural underpinnings, and the major technical challenges behind its development. The use of graphical probabilistic models became an appealing way of enabling information systems to coherently exploit incomplete information. Chapter 12 considers the problems and the solutions that are concerned with the extension of Java with Higher Order mechanisms: that is methods as parameters and closures. The formal definition of such constructs, integrated in Java, is provided together with an implementation which preserves re-targetability and portability of the Java compilers and of the JVM. Chapter 13 aims at designing and developing an application using JAVA technology to estimate the quality of service of the Internet connections through a real-time multimedia applications. This application is especially useful for ISP and for end users who want to estimate the quality of their Internet access. Chapter 14 provides a report on the research that was conducted on to support mobile application development through a Java IDE to better address the difficulties that are faced by Java Mobile developers.