•10 Tips for Killer Website Design
•7 Sure shots ways to improve your website
•Attracting Visitors and Improving Your Search Results
•Chasing the Search Engines Algorithms
•Crash Course in Getting a 1 Google Ranking
•Design Basics
•Design Your Site for Traffic in 2005
•Designing A Website That Sells
•Googles Good Writing Content Filter
•How to Write Effective Web Copy
•How to Write Title Tags for Your Web Pages
•JSP Actions
•JSP Directives
•JSP Scripting Elements and Variables
•JSP
•Java Brewing A Tutorial
•Java How to Send Email in Java
•Java Intro to JSP
•Java JSP Browser Detection
•Java JSP Syntax
•Java JSP versus ASP
•Java MySQL Database Connection
•Java Programming Language
•Java Virtual Machine
•Java myths
•JavaBeans
•Linux Commands
•Make Money Fast With Google Adwords
•Make Money On The Internet What Is Your Niche
•Make Money Quick With Google Adsense
•PHP Redirects
•Ranked 1 at Google for Invisible Entrepreneurs But No Traffic
•Ruby Basic Input Output
•Ruby Classes Objects and Variables
•Ruby Containers Blocks and Iterators
•Ruby and the Web
•SEO One Way Web Links 5 Strategies
•SEO Success Step Two Attracting Search Engine Attention
•The 10 Best Resources for CSS
•The 3 Best Website Traffic Sources
•The 5 Biggest Mistakes Almost All Web Designers Make
•The Click Fraud Problem
•The Five Ways You Should Be Using Keywords
•The Three Principles Of Image Optimization
•Top 5 Secrets to Making Money with Adsense
•True Paid Inclusion Programs are a Thing of the Past
•Understanding Web Logs And Why it Matters
•Index
•Rename underscores.sh
|
Web Hosting Tips for Webmasters -
Java Virtual Machine
Inside Java :
The Java Virtual Machine
By David Reilly
Inside Java offers a glimpse behind the Java platform, and related
technologies. This month, we examine the Java Virtual Machine, which
allows Java code to be executed on a wide variety of hardware and
software environments.
At the heart of the Java platform
lies the Java Virtual Machine, or JVM. Most programming languages
compile source code directly into machine code, suitable for execution
on a particular microprocessor architecture. The difference with Java is
that it uses bytecode - a special type of machine code.
Java bytecode executes on a special type of
microprocessor. Strangely enough, there wasn't a hardware implementation
of this microprocessor available when Java was first released. Instead,
the processor architecture is emulated by what is known as a "virtual
machine". This virtual machine is an emulation of a real Java
processor - a machine within a machine (Figure One). The only difference
is that the virtual machine isn't running on a CPU - it is being
emulated on the CPU of the host machine.

Figure One - JVM emulation run on a physical CPU
The Java Virtual Machine is responsible for interpreting
Java bytecode, and translating this into actions or operating system
calls. 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.

Figure Two - JVM handles translations
The Java Virtual Machine forms part of a large system,
the Java Runtime Environment (JRE). Each operating system and CPU
architecture requires a different JRE. The JRE comprises a set of base
classes, which are an implementation of the base Java API, as well as a
JVM. The portability of Java comes from implementations on a variety of
CPUs and architectures. Without an available JRE for a given
environment, it is impossible to run Java software.
Differences between JVM implementations
Though implementations of Java Virtual Machines are
designed to be compatible, no two JVMs are exactly alike. For example,
garbage collection algorithms vary between one JVM and another, so it
becomes impossible to know exactly when memory will be reclaimed. The
thread scheduling algorithms are different between one JVM and another
(based in part on the underlying operating system), so that it is
impossible to accurately predict when one thread will be executed over
another.
Initially, this is a cause for concern from programmers
new to the Java language. However, it actually has very little practical
bearing on Java development. Such predictions are often dangerous to
make, as thread scheduling and memory usage will vary between different
hardware environments anyway. The power of Java comes from not being
specific about the operating system and CPU architecture - to do so
reduces the portability of software.
Summary
The Java Virtual Machine provides a platform-independent
way of executing code, by abstracting the differences
between operating systems and CPU architectures. Java Runtime Environments are available for a
wide variety of hardware and software combinations, making Java a very
portable language. Programmers can
concentrate on writing software, without having to be concerned with how
or where it will run. The idea of virtual machines is nothing new, but
Java is the most widely used virtual machine used today. Thanks to the
JVM, the dream of Write Once-Run Anywhere (WORA) software has become a
reality.
|