Many users "shared" the computer by competing for time slots
The current user delivered programs through peripherals (increasingly sophisticated)
Every user has a committed terminal, but the actual processing is done on the mainframe computer
Complex operating systems needed for sharing resources
More people get access to a computer, so easier ways of communicating with the machine are needed; higher level languages appear
Dramatic expansion of Computer Science driven by the challenges of using a mainframe system
Virtual machines emerge – an illusion of a single machine for exclusive use of one user
The stand-alone model can describe today’s home users; sometimes, family members have to fight for time slots
Programs are delivered on FDs, HDs or CDROMs
The Internet starts to be a factor in delivering content, but rarely programs
Terminals are substituted with PCs and workstations
Mainframes evolve into network servers that hold programs, but do not execute them.
Data communication starts to be important as programs are brought to a local processor for execution.
Monolithic programs are divided into two parts: client and server
Server applications that run on centralized machines coordinate sharing of the data amongst many users
Middleware software provides transparency between servers and clients in three-tier client/server systems
Some workstations still have local storage, but usually it is not enough to actually use the computer
The users implicitly share storage and processing resources
Network becomes a part of the computing platform
The role played by communication networks expands from data exchange to computing support
Initially, closed, homogeneous environments needed for network-based computing (UNIX - NFS, Windows – DCOM), but efforts like DCE and ODP are started to address the interoperability issues
Common Object Request Broker Architecture (CORBA) provides formalized support for distributed computing in heterogeneous environments
DARPA’s Internet Protocol (IP) becomes a de-facto standard network protocol of exchanging data between various networks. Transport Control Protocol (TCP) becomes a de-facto standard transport protocol on top of IP, so very often the combo is referred to as the TCP/IP standard
The easiness of exchanging information via email, file transfer, remote login/telnet, etc., catches eyes of the big industry players
HTML – Hyper Text Markup Language
The HTTP – Hyper Text Transfer Protocol
The scope of content published on the Web pages expands daily and includes text, graphics, sound and video
A Web browser is becoming a new operating system for many users
Other traditional network applications like email, file transfer, telnet/remote login have been incorporated under the same browser roof with the Universal Resource Locator (URL)
New business opportunities emerged in electronic publishing and commerce
New technologies like search engines, agents, etc., mix with not-so-new ones like data mining to address arising challenges
Any user can access any computer anywhere in the world
Java technology based on portability of the code is quite a different story
Java bytecode can be executed on any platform running Java Virtual Machine (JVM) that interprets the code
Web browsers implement JVMs, so it is possible to enhance Web pages with applets; i.e., embedded Java applications
Bits and pieces of Java applets can be brought (popped) from anywhere in the world as needed
Future: Remote objects (for example, CORBA objects) can be extended or upgraded on line by pushing new bytecode to the hosting JVM
Future: Applications are dynamically composed as needed from components available on the Web (might be commercial yielding a new industry, kind of Microsoft fighters)
2. Introduction to Open Distributed Computing
Remote Method Invocation (RMI) is a Java-only framework for distributed computing. In this section, we will look at the features of RMI and compare them to the ones provided by CORBA. An RMI implementation of an example analogous to the one solved with CORBA will be analyzed.
This section will introduce the Java component model, JavaBeans. It is an important technology in the context of distributed applications, because such applications can be constructed from libraries of existing components.
8. Jini Connection Technology
Jini technology provides simple mechanisms which
enable devices to plug together to form an impromptu community--a community
put together without any planning, installation, or human intervention.
Each device provides services that other devices in the community may use.
These devices provide their own interfaces, which ensures reliability and
compatibility. The Java™ programming language is the key to making Jini
technology work. Devices in a network employing Jini technology are tied
together using Java Remote Method Invocation (RMI). By using the Java programming
language, a Jini connection architecture is secure. The discovery and join
protocols, as well as the lookup service, depend on the ability to move
Java objects, including their code, between Java virtual machines.
9. Introduction to Agents
What is an agent? We will consider an agent to be a computational entity with the following characteristics: it acts on behalf of others, it is autonomous, it is proactive, it is reactive, and it exhibits certain degree of capabilities to learn, cooperate and move.
10. Introduction to Mobile Code (Agents)
Mobile code is the quintessence of Java technology. We will present taxonomies of mobile code. Furthermore, we will analyze the potential of mobile code in several application areas.
11. Java facilities for Mobile Code
This section will present the Java facilities that support code mobility. We will have a closer look at Java Virtual Machine and Java bytecodes. We will explain the use of the ClassLoader class in providing code mobility. The use of compressed Java archive (JAR) files in lowering the bandwidth requirements will be described. We will have a look at some mobile code toolkits.
12. Security issues
Security has been extremely important aspect of communications. The security of the network resources is one aspect of the overall issue. The Java bytecode itself must be also protected, so it does not compromise network security indirectly by being exposed to modifications or outright substitutions. Java provides several security facilities that will be discussed in this section. We will analyze Java support for Access Control Lists (ACLs), data certification and encryption, keys and message digests.
13. Applications of Distributed Computing
The last section of the course will be the students’ showcase. The students will present their projects in seminar-like settings. The details of the seminars will be determined at the time when the number of enrolled students saturates.of enrolled students saturates.