4. Java
Application
s
Physical
Virtual
Instruction Set
Figure 1: Java Virtual Machine is emulation within Physical Machine
The Java Virtual Machine is responsible for interpreting Java bytecode, and translating this
into actions or operating system calls, as in Figure 2, Java source code passes through two stages (
compile and interpret) before getting executed on physical CPU. The intermediate form is the
ByteCode which is a set of instructions known only by Java Virtual Machine (JVM). JVM is
executing ByteCode in the same manner as real CPU is executing instruction set through fetch-execute
cycle and the output will machine code that is executable by local host physical machine
For example, a request to establish a socket connection to a remote machine will involve an
operating system call. Different operating systems handle sockets in different ways - but the
programmer doesn't need to worry about such details. It is the responsibility of the JVM to handle
these translations, so that the operating system and CPU architecture on which Java software is
running is completely irrelevant to the developer.[4]
5. Java source
code
Figure 2: Java source passing through java compiler and java interpreter
16. Figure 5: Java Agent is building Mapping table in phase one
6
When phase one is finished the personalization Agent will direct the dispatcher of the
operating system to the native code in dll rather than send it to Java Virtual Machine as in figure (6)
21. %
Figure 6: Java Agent is mapping byte code to native in phase two
7
Central
execution unit
Java Virtual machine
*%
+
Tc = Time to compile Java source code
Tp = Time to interpret Java Byte code
Tb = Time to execute binary code
Texe = Time to execute Java Program
Texe = Tc + Tp this is without personalization
Personalization
Agent
due to the fact that binary code is executed directly, and the following equation is
describing the proposed system with personalization
It is obvious that when is small then the overall performance of the system is is going high. Figure
(7) presents the machine code corresponding 'printf' c language function compiled using visual studio
6.0.
Figure 7: Java Agent perceived requested machine code
25. 6. CONCLUSIONS
/
1- Java program can be personalized to certain platform according to the interpretation of its
binary images, which represents executable format adopted by that platform. The personalized
java programs showed an increased performance level due to the low level linkages of binary
code; this binary code is hold by DLL ( dynamic link linbrary) files.
2- Java program can be personalized to open source operating systems like Unix and lunix more
easier that windows operating system due to its readability and matching to source code in Java
program.
7. REFERENCES
1- Sheng Liang, The Java Native Interface, Programmer's Guide and Specification, ADDISON-WESLEY,
USA, 1999.
2- Fabio Bellifemine, Giovanni Caire, Tiziana Tucco and Giovanni Rimassa, JADE Progammer's
Guide, TILab S.P.A, 2010.
3- Chris H.Pappas William H. Murray, The complete Reference visual studio 6.0, McGraw-
Hill, 1998.
4- David Reilly, Inside Java: Java Virtual Machine, 2006.
5- Abhishek Singh, “Identifying Malicious Code Through Reverse Engineering: Portable
Executable File Format”, Advances in Information Security Volume 44, 2009.
6- David Reilly, “Inside Java: The Java Virtual Machine”, accessed at:
http://www.javacoffeebreak.com/articles/inside_java/insidejava-jan99.html.
7- P.Shvaiko, J.Euzenat., “Ontology Matching : State of the art and Future Challenges”, IEEE
Transactions on Knowledge and Data Engineering, 2013.
8- Pratibha S. Yalagi and Dr. Sulabha S. Apte, “Exploiting Parallelism for a Java Code with an
Efficient Parallelization Technique”, International Journal of Computer Engineering
Technology (IJCET), Volume 3, Issue 3, 2012, pp. 484 - 489, ISSN Print: 0976 – 6367,
ISSN Online: 0976 – 6375.