If all applications are running on the same machine you could distinguish them by the different port numbers they use. If applications run on the same machine AND use the same port numbers it is next to impossible.
If the port numbers are different, use the program 'tc' in combination with iptables.
TC is a difficult beast to handle. Search for "Linux traffic shaping howto" and you'll get plenty documentation and examples. Try to understand the examples and adapt them for your needs. You'll want to use a HTB que discipline.
If you have a firewall through which you access internet, you'd have to implement your traffic shaping on the outgoing interface of the firewall. Outgoing here is FROM your firewall TO your machine.
If you access the internet directly from your machine (thru a modem or campus network) you'd have to shape the traffic inside your own box. However traffic shaping only works on outgoing interfaces as you can only control what you are sending not what you receive. In that case, you'd need to install a dummy interface which receives all traffic, and then distributes it to processes inside your machine. SUch an interface is called an IMQ (Intermediate Que Device)
You'll find that in google as well if you search for "Linux traffic shaping howto IMQ" . IMQ may or may not be part of the kernel now, I didn't follow the development the past few years.
Traffic shaping works, but the learning curve is a bit steep.