Play uses static methods only when it makes sense:
- in the controller layer, because controllers are not object oriented. Controllers act as mapper between the HTTP world (that is stateless, and request/response based) and the Model layer that is fully object oriented.
- in the model layer for factory methods, like findAll(), count(), create() which of course don’t depend of any particular instances
- in some play.libs.* classes that provides purely utility functions