![]() ![]() This specialization is intended for anyone with a basic knowledge of sequential programming in Java, who is motivated to learn how to write parallel, concurrent and distributed programs. Parallel, concurrent, and distributed programming underlies software in multiple domains, ranging from biomedical research to financial services. Finally, we will learn about the reactive programming model,and its suitability for implementing distributed service oriented architectures using asynchronous events. A notable property of the actor model is that the same high-level constructs can be used to communicate among actors running in the same process and among actors in different processes the difference between the two cases depends on the application configuration, rather the application code. Distributed actors serve as yet another example of combining distribution and multithreading. An analogous approach can also be used to combine MPI and multithreading, so as to improve the performance of distributed MPI applications. With this background, we will then learn how to implement multithreaded servers for increased responsiveness in distributed applications written using sockets, and apply this knowledge in the mini-project on implementing a parallel file server using both multithreading and sockets. In this module, we will study the roles of processes and threads as basic building blocks of parallel, concurrent, and distributed Java programs. Finally, we will learn about distributed publish-subscribe applications, and how they can be implemented using the Apache Kafka framework. Likewise, we will learn about multicast sockets,which generalize the standard socket interface to enable a sender to send the same message to a specified set of receivers this capability can be very useful for a number of applications, including news feeds,video conferencing, and multi-player games. We will also learn about Remote Method Invocation (RMI), which extends the notion of method invocation in a sequential program to a distributed programming setting. Sockets and serialization provide the necessary background for theFile Server mini-project associated with this module. Since communication via sockets occurs at the level of bytes, we will learn how to serialize objects into bytes in the sender process and to deserialize bytes into objects in the receiver process. In this module, we will learn about client-server programming, and how distributed Java applications can communicate with each other using sockets. Mastery of these concepts will enable you to immediately apply them in the context of distributed Java programs, and will also provide the foundation for mastering other distributed programming frameworks that you may encounter in the future (e.g., in Scala or C++). Ěpproaches to combine distribution with multithreading, including processes and threads, distributed actors, and reactive programming.Message-passing programming in Java using the Message Passing Interface (MPI).Ĝlient-server programming using Java's Socket and Remote Method Invocation (RMI) interfaces.ĝistributed map-reduce programming in Java using the Hadoop and Spark frameworks.The desired learning outcomes of this course are as follows: ![]() ĝuring the course, you will have online access to the instructor and the mentors to get individualized answers to your questions posted on forums.Ğach of the four modules in the course includes an assigned mini-project that will provide you with the necessary hands-on experience to use the concepts learned in the course on your own, after the course ends.In addition to learning specific frameworks for distributed programming, this course will teach you how to integrate multicore and distributed parallelism in a unified approach.Ěll data center servers are organized as collections of distributed servers, and it is important for you to also learn how to use multiple servers for increased bandwidth and reduced latency.By the end of this course, you will learn how to use popular distributed programming frameworks for Java programs, including Hadoop, Spark, Sockets, Remote Method Invocation (RMI), Multicast Sockets, Kafka, Message Passing Interface (MPI), as well as different approaches to combine distribution with multithreading. Distributed programming enables developers to use multiple nodes in a data center to increase throughput and/or reduce latency of selected applications. This course teaches learners (industry professionals and students) the fundamental concepts of Distributed Programming in the context of Java 8.
0 Comments
Leave a Reply. |
Details
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |