Let me expand on what they say a little with my interpretation:
In our mobile library, we take the burden of compliance with PCI, eliminating the need to send card data directly to your server. Instead, our libraries send map data directly to our servers, where we can convert them to tokens.
This means that often one gets a credit card number and is expected to store it for future use (for example, a customer enters it on their account page so that they can be charged monthly), but this requires you to comply with PCI standards, which may to be a headache. Stripe saves you from this burden - they will store a credit card, and if you want to take care of it later, you can just give them the token that they generated, which represents this credit card.
Your application will receive the token back and can then send the token to the endpoint of your server, where it can be used to process the payment, establish recurring billing, or simply save it for later use.
This is explained in the next section https://stripe.com/docs/mobile/android#using-tokens
Using the payment token, however, it was received, your API secret key is required to call the API from your server. (For security reasons, you should never embed your API private key in your application.)
(This was mentioned by the drrom.)
Since you need a secret key to call the API, you will need to make it from your own server, so you need a server.
Note. I did not use Stripe, which I remember, I'm just trying to share my reading of documents.
PS I think your second question is separate, but some popular and simple Java Webapp hosting options are Heroku and AppEngine. For something like this, however, you can go with a serverless approach, for example. using AWS Lambda https://aws.amazon.com/lambda (Google has the Alpha stage equivalent https://cloud.google.com/functions/ )