JavaFAQ Home » Networking
Developers using Java on clients or in small projects may not believe that
there is a fundamental problem with Java's robustness. People working with huge
applications and application servers written in Java know about the problem but
may doubt that it's possible to build something like an unbreakable Java
architecture. Some may even remember the White Star Line promising that their
ocean liner Titanic was unsinkable; an iceberg in the North Atlantic proved them
wrong and demonstrated that there is no such thing as an unsinkable ship. Is it
really possible to build a Java application server that never goes down?
It's All About Isolation
The key to understanding robust Java is isolation, isolation, and isolation.
Robust applications, especially robust application servers, require a high level
of isolation between users. It's not acceptable that an error occurring while
processing one user's request may affect all users connected to the system. The
complexity of software systems makes it impossible to develop software that is
completely free of errors, so errors will always happen. Only isolation can
provide real robustness by limiting the impact of errors.
The design of the Java Virtual Machine ignores the painful lessons operating
system vendors have learned in the past 40 years. The concepts of processes,
virtual memory management, and different protection modes for kernel and user
code can be found in all modern operating systems. They focus on the question of
isolation and therefore robustness: an application with errors cannot affect the
other applications running in the system.
In contrast, Java follows the all-in-one-VM paradigm: everything is processed
inside one virtual machine running in one operating system process. Inside the
VM, parallelism is implemented using threads with no separation regarding memory
or other resources. In this respect Java has not changed since its invention in
the early nineties. The fact that Java was originally invented as a programming
language for embedded devices may explain this approach.
There Is No Isolation in Java
Why and what can be done
read more here
Printer Friendly Page
Send to a Friend
Search here again if you need more info!