ScalaLoci: Variants of Example Applications
This repository contains a comparison of different variants of the same software.
-
Pong implements the arcade Pong game. Additionally to the distributed multiplayer versions, a local baseline is provided (where the user plays against the computer). The distributed versions adopt a client–server model. Both the server and the clients run on the JVM.
-
Shapes is a collaborative drawing web application, where clients connect to a central server. The server runs on the JVM while clients run in the web browser.
-
P2P Chat is a P2P web chat application, which supports multiple one-to-one chat sessions. Peers communicate directly in a P2P fashion after discovering via a registry. The registry runs on the JVM while peers run in the web browser.
The communication mechanism is in the left column and the event processing strategy is in top row.
reactive ¹ | observer ¹ | observer (JS) ² | |
---|---|---|---|
(local) | Pong | Pong | |
RMI | Pong | Pong | |
WebSocket | Shapes | Shapes | Shapes |
WebRTC | P2P Chat | P2P Chat | P2P Chat |
Akka | Pong | Pong | |
Shapes | Shapes | ||
P2P Chat | P2P Chat | ||
ScalaLoci | Pong | Pong | |
Shapes | Shapes | ||
P2P Chat | P2P Chat |
¹ All code is in Scala or ScalaLoci. The client is compiled to JavaScript via Scala.js.
² Uses handwritten JavaScript for the client-side, Scala for the server side.