Distributed computing
• Soware components on separate physical machines
– Client-server architecture
– WEB application
– Computation on a cluster
– etc.
• Communication over network
• Different application domains
– High-performance computing
– Enterprise applications
is course is devoted to a specific application domain in distributed computing. Distributed
computing is a broad area in computer science and engineering. e main
concept is that we develop soware the components of which are executed on distinct
physical computers. e machines are connected by some network, either LAN
or WAN, and the components of the system communicate over this network, for instance
using TCP/IP. During the course we shall use the Java programming language,
as well as technologies related to this language.
e most typical instance of distributed computing is the client-server architecture, in
which we allow (typically multiple) clients access the services of a server. Client and
server components are different in complexity, and the computers that execute those
components are different as well. Computers executing the server code are expected
to be more powerful than the ones executing the client code.
WEB applications are extremely wide-spread today. ese are client-server applications
with web browsers playing the role of the clients. e complexity of the code
executing in the web browser is varying. In one extreme, it can be plain HTML with
forms. However, real programming languages are also supported in web browsers,
most notably JavaScript, and even Java (although the technology for the laer, i.e.
Java applets, are considered obsolete today). We can emphasise here another important
property of distributed computing: different components might be wrien in
different programming languages. We will, nevertheless, use only Java.
Another well-known scenario for distributed computing is when we execute components
of the soware on a computer cluster. ere are many technologies supporting
the construction of clustered applications. We shall meet one such technology in
this course. Maybe it is worthwhile mentioning here that computer systems made
available for mass execution of (potentially clustered) applications are also actively
utilized. ese belong to the fields of grid computing and cloud computing, and we
will not consider them in this course.
ere are many application domains in which distributed computing plays a crucial
role. One can use distributed computing for achieving high performance, such as in
the case of supercomputing. Number crunching, scientific computations, computeintensive
industrial applications, simulations all fall into this category. Distributed
computing is also relevant for inherently geographically distributed problems. During
this course we will focus on a narrow domain, on distributed enterprise applications.
Enterprise Applications
•