The Single Most Important Thing You Can Do
is to begin your implementation immediately.
The earlier you begin your implementation, the greater chances you have of
actually finishing the project.
is to begin your implementation immediately.
The earlier you begin your implementation, the greater chances you have of
actually finishing the project.
src/common
folder.common
package, ALWAYS push the associated submodule FIRST, then push the main assignment repo!src
, named netid1_netid2
, where netid1
is
the netID of the team lead (add a netid3
if there is a 3rd person on the team). ALL YOUR CHATAPP IMPLEMENTATION CODE WILL GO
IN HERE.
module-info.java
file has the necessary entries. See the latest information in Canvas for the current requirements! provided.utils.view
package provides convenience classes that make it easy to create tabbed UIs with exactly the functionality needed for this assignment.netid1_netid2
package
that will contain the components for a chatroom mini-MVC. Set up a mini-mvc in
those packages. The important differences between a mini-MVC and a normal MVC are
The simple answer is: anything that deals with network communication.
In practice, it's a little more complex than that - the API does have to
define exactly what's sent across the network and how it's sent, but it
also needs to define expected behaviors and processes.
For example, the API could specify that no user can disconnect from the
network without notifying everyone else of their departure.
A well-known message is simply one that, right out of the box,
everyone using your API will have to implement. For example, if an
IStringMessage is defined as a well-known type, that means that
everyone has to implement their own command to support it. Nobody on the
network should ever have to request/send the command that processes it.
In terms of the Visitor Design Pattern, a datapacket is a host and
the extended visitor is, well, the visitor. Fundamentally, this means
that when you receive a datapacket, all you need to do to process it is
call:
datapacket.execute(visitor)
Delving a little more into specifics, the visitor is like a container for
commands. Each command 'installed' in the visitor handles a specific
case, or type, of input. In this case, each command will handle a
different message type from the datapacket.
A command is just an algorithm that processes a message in
some way.
Remote Objects | Stubs | Serializable Objects |
---|---|---|
Cannot be sent across the network | Can be sent across the network | Can be sent across the network |
Exist as a standalone object | Created from and dependent on remote objects | Exist as a standalone object |
Can do their own processing | Cannot do their own processing - call back to the original remote object to do processing for them | Can do their own processing |
Synchronous | Asynchronous |
---|---|
Sender waits for a response from the receiver | Sender does not wait for a response from the receiver |
Generally non-void return types | Generally void return type |
Sending and receiving requests/commands usually not done on different threads | Sending and receiving requests/commands must be done on different threads |