The server is a proxy between a client library and a browser (or a browser driver like ChromeDriver). Like all good proxies, it can add some cool features to your workflow, but is not required for basic usage.
For example, you can download the Selenium client library for Python and drive Chome (via the ChromeDriver executable provided by Google). No Java required.
Removing the Java requirement for basic point-to-point (e.g. Python to Firefox, Ruby to Chrome, etc.) automation was a key feature of the Selenium 2 (aka WebDriver) architecture when Simon Stewart first released it back in 2011.
Selenium Server is only need if you want to run a remote Selenium WebDriver. If you want to drive a local browser you can just use the language bindings you wish.
Headless chrome and selenium are two orthogonal things I think. Selenium offers an API to control browsers. It can be chrome, headless chrome, remote chrome, firfox or any browser supporting the web driver protocol. Headless chrome is just an efficient way to run chrome for tests. I think you might have meant Puppeteer.
The other browsers have such low market share that it just doesn't make economic sense to bother with that. I don't like this state of affairs, but that's currently the way it is!
Also, one (small? large?) reason Firefox has lost so much market share is that Mozilla just isn't being practical. For example, here's an obvious feature they should be implementing, but refuse to do because of their whole stance on hiding behind web standards:
This works just fine in Chrome, Safari and Edge. The bottom line? No way to justify spending even more time trying to support a browser that almost none of my users actually use...
Again, I'm not trying to be a stick in the mud against a multi-browser world here. But we don't live in a world of infinite resources, and some things just don't make the cut sometimes.
For those as confused by the title as I was, apparently this is a wire protocol for something called "Selenium" which happens to use JSON. "Selenium Mobile REST API" would be much more descriptive without context.
Or is there a way to run Se without the server?
For example, you can download the Selenium client library for Python and drive Chome (via the ChromeDriver executable provided by Google). No Java required.
Removing the Java requirement for basic point-to-point (e.g. Python to Firefox, Ruby to Chrome, etc.) automation was a key feature of the Selenium 2 (aka WebDriver) architecture when Simon Stewart first released it back in 2011.
Also, one (small? large?) reason Firefox has lost so much market share is that Mozilla just isn't being practical. For example, here's an obvious feature they should be implementing, but refuse to do because of their whole stance on hiding behind web standards:
https://stackoverflow.com/questions/47866708/css-is-there-an... https://stackoverflow.com/questions/37493597/overlay-scrollb...
This works just fine in Chrome, Safari and Edge. The bottom line? No way to justify spending even more time trying to support a browser that almost none of my users actually use...
Again, I'm not trying to be a stick in the mud against a multi-browser world here. But we don't live in a world of infinite resources, and some things just don't make the cut sometimes.
A Seleniun installation with the Google Chrome Driver is still required for anyone who would want that.