This resource collection contains instructions, references and videos to learn how to create a distributed system. A distributed system is a software system that is built in pieces that can run across multiple computers. They typically are built using a range of technologies. The major advantage of building a distributed system is that adding more computers can allow it to handle more users (load). As the number of users increases, we can simply add more computers instead of replacing the current computer with a larger one. All major multiple user applications that you know of are probably distributed systems (banks, eCommerce, government, etc.).
This resource collection is one way to build a distributed system. It is not the only way to build a distributed system. There are countless architectures and products that can be used to build a distributed system. Even within a single language, like Java, there are multiple approaches and products that can be used. For example, to build a desktop interface in Java you can use Java Swing or JavaFX.
As part of this resource collection many of the videos build out a software system called the Turtle Tracking System (TTS). The requirements behind TTS are as follows. The system is for an environmental research group. They get volunteers to go out into waterways to capture turtles. Volunteers record measurements of the turtle and then release them. Researchers throughout the world would like to access the data. This creates different user interface needs.
- Employees of the environmental group work on the same computer network as the database. They would like a rich user interface, thus requesting a desktop interface.
- Volunteers are out in lakes, rivers and swamps. They cannot carry their computers with them. They would like a mobile interface. However, some of them record their findings on paper and need a web interface to type in the data later.
- Researchers at other institutions probably want to access the data on their computer, but they are not on the same local network as the database. They would like a web interface.
When developing a distributed architecture there are many system characteristics to consider, including security, speed, learning curve, etc. Since this is a course designed to be undertaken in 16 weeks, all technical decisions were made to minimize the learning curve. In places we will use code generators, drag-and-drop tools and frameworks to expedite the process.
Comments and Notes to instructors. Click here
Modules
| # | Module | OER Readings |
| 1 | Introduction | Heffelfinger, Ch 1 [Do not follow installation steps] |
| 2 | Browser to Middle Tier | J2EE 5 Tutorial, Ch 4 – 11. |
| 3 | Middle Tier to Database | Heffelfinger, Ch 4 |
| 4 | Desktop to Middle Tier | Oracle’s Java Swing Getting Started with Swing. Click here Oracle’s Java Learning Swing with NetBeans. Click here Oracle Java Using Swing Components. Click here If you want to learn more about Java Swing, here is the complete list of tutorials. Click here |
| 5 | Business Logic in Middle Tier | An Extensive Guide to Business Logic. (2023) Click here Spertus, E. (2021) Blog. Best Practices for Writing Code Comments. Click here |
| 6 | Calling Web Services | Heffelfinger, Ch 10 – 11. |
| 7 | Creating Web Services | Heffelfinger, Ch 10 – 11. |
| 8 | Mobile Application | Think Python Skim through the Kivy documentation. Click here |
Suggested Readings
Heffelfinger, D. R. (2021). Java EE 7 with GlassFish 4 Application Server. Packt Publishing. Click here [This is book is written about an older version of J2EE and GlassFish, but the coding and concepts still hold.]
The Java EE 5 Tutorial. (2010) Oracle. Click here [This is book is written about an older version of J2EE, but the coding and concepts still hold.]
Think Python. Click here