There is no one "right" way. As a rule, anything that runs over HTTP works better, since other protocols such as JMS may use ports which are blocked by one or more firewalls between client and server.
On the Android side, you can always use the java.net classes as implemented for Android - the entire set of methods and services provided by desktop Java may not be there, but the Android JavaDocs will tell you what is available (and on what version of Android). I think you'll find most of the http client functions available, so you won't have to do brute-force network programming just to submit ReST requests or whatever.
On the server side, you can use anything that pleases you.
J2EE, nodeJS, PHP, Python/django, even .Net.