There are a lot of factors to be considered. It all depends on the application type, your network infrastructure, operating systems, organization size & the role of the application server. For example, if the application server needs to connect to a database server/farm, it will be more of a middleware server.
In a nutshell, an application server has to have built-in redundancy, monitors for high-availability, high-performance distributed application services and support for complex database access.
Below are some good references on this topic: