y Network Computing?

      Evolution of computing

        Stand-alone computers

        It all started with a single processor being exclusively used by a single user

        Many users "shared" the computer by competing for time slots

        The current user delivered programs through peripherals (increasingly sophisticated)

        Mainframe computing

        A single huge computer used by many users

        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

        PCs

        Relatively cheap computers used exclusively by 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

        Networked computing

        More users rely on computers to do their jobs; mainframe becomes a bottleneck

        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.

        Client/Server computing

        Increasing numbers of users have to share data

        Monolithic programs are divided into two parts: client and server

      Client applications that run on local machines allow users to manipulate centralized data

      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

      Convergence of networks and computers

      Nowadays, most of applications that run on corporate computers require the presence of servers

      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

      The Internet factor

      The attempts to connect all private and public networks are successful with the appearance of the Internet

      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

      The World Wide Web factor

      WWW originated as a framework for electronic publishing of hypertext

      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 factor

      Java as a language is nothing more than just another programming tool in some respects better than other existing languages, but in others worse

      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)

      What will we try to talk about:

      An Outline of the Course

      1. Introduction to Telecommunications

               In this part, we will study fundamentals of telecommunications from the application’s point of view. The Open Systems Interconnection (OSI) model will be described, but the TCP/IP de-facto standards  will be emphasized. In contrast to the OSI model, there is no strict separation between the layers of the communication hierarchy. Therefore, an application may use any of the lower protocols, so the developer should understand more services than just those offered to the application layer. We will briefly study the following protocols IP, TCP, UDP and HTTP, and look at several others to gain a proper perspective.

2. Introduction to Open Distributed Computing

                 We will start this section with an analysis of the Remote Procedure Call (RPC), which is one of the fundamental technologies for distributed computing. We will proceed with introductions to modern object-oriented frameworks that build upon the RPC paradigm: CORBA (OMG, Object Management Group), DCOM (Distributed COM, Microsoft) and RMI (JavaSoft, Sun). In the rest of the course, we will focus on CORBA and RMI, so the treatment of DCOM is only for comparative purposes. An overview of several component frameworks for remote objects will be presented next. We will include ActiveX, which dominates the Windows-centered universe and JavaBeans, which we will study further in later sections. We will also devote some time to introduce agents that start to play a major role in network applications. The last part of this section will very briefly cover other frameworks for distributed computing, DCE (OSF, Open Systems Foundations), ODP and TINA (TINA-C, TINA Consortium).   3. A Short Review of Java Language and Core APIs                  In this course, we position Java as one of the fundamental technologies for network computing. This section presents a review of the language. This is not thought to teach the students, but rather to refresh their knowledge or, at best, provide a mapping from C++.   4. Java Facilities for Networking                  The networking facilities in Java will be reviewed with more detailed. This section is intended to constitute a tutorial on Java implementation of sockets, protocols (IP, TCP, UDP), URL connections, data serialization and other facilities for transferring information.   5. CORBA and Java                  In this section of the course, we will study CORBA. We will use Java as the implementation language, but we will note that CORBA is language-independent. The services supported by CORBA will be discussed along with the basic communication facilities and remote invocation methods. Examples will be presented that demonstrate the use of both the static and dynamic invocation interfaces. We will explain what new capabilities Java brings to CORBA. We will contrast the Java/CORBA alliance with the HTTP/CGI technology.   6. Java RMI

               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.

  7. JavaBeans

               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.