The ability of creating both concurrent programs and primitives of communicating messages and synchronization holds one of the most important isssues concerned on programming language development. In fact, the search for mechanisms that facilitate building up distributed and concurrent programs has been of great interest in the programming language field. This paper compares how two object-based languages - Náutilus and Java - treat concorrency. The Náutilus language supports the construction of concurrent programs by a categorical foundation that provides an elegant solution for the process synchronization typical problems.
Náutilus and Java are compared through the specification of an example called máquina_DRC (a vending machine). The example is extended (to support new
requirements for the problem) using some special Náutilus constructors and the same is proposed for the Java program. Through the use of these examples it is possible
to highlight the main similarities and differences between the two approachs, and also the advantages found in Náutilus for the specification of concurrent programs.