It is not necessary to install JAI and ImageIO in order to run GeoServer. These two libraries are used by GeoServer "only" to improve the raster processing performance, but are not needed for vector layers.
If you need JAI and ImageIO later i.e. after installing GeoServer, it is still possible to install them.
You may want to check out our university (University of South Florida)'s "OpenTripPlanner for Android" open-source project:
https://github.com/CUTR-at-USF/OpenTripPlanner-for-Android/wiki
This is a native Android app that uses a REST API to access the main server-side open-source OpenTripPlanner project (created primarly by TriMet in Portland and OpenPlans), which does the actual multimodal (bike/transit/walk) trip planning:
https://github.com/openplans/OpenTripPlanner/wiki
The planned trip is then passed back to the Android app and displayed on the screen.
This is a slightly different server-side approach that's entirely implemented in Java and runs in a Java application server such as Tomcat, instead of utilizing a spatial database server such as Oracle spatial.
There are two steps to getting a running server:
- Use the OTP GraphBuilder application to build a graph object (a file) from several data sources (inclduing OpenStreetMap) that contains a serialized set of Java objects that represent the graph topology and rules for traversing the graph.
- Start the Tomcat server, which loads the graph object from disk into memory, deserializes the graph, and is then ready to serve trip planning requests.
There are performance/scalability benefits of having the entire graph in memory for routing, instead of having to hit a hard disk where the Oracle database is presumably located. I don't know if Oracle is a hard requirement for your project, but if not you might want to consider basing your application off of OpenTripPlanner (OTP).
The OTP Android app is available on Google Play:
https://play.google.com/store/apps/details?id=edu.usf.cutr.opentripplanner.android
And here's our OpenTripPlanner server instance running in Tampa, FL, that it sends the REST requests to (this is the normal web browser view):
http://opentripplanner.usf.edu/
Here's a sample REST API request that would be sent from the app to the server (note the "/opentripplanner-api-webapp/" addition to the below URL to give you the REST API instead of the normal web interface). If you open this in your browser, you should see the XML-encoded trip planned from the lat/long "fromPlace" to the lat/long "toPlace" encoded in the URL:
http://opentripplanner.usf.edu/opentripplanner-api-webapp/ws/plan?fromPlace=28.066788,-82.410104&toPlace=28.059324,-82.415394&mode=TRANSIT,WALK&min=QUICK&maxWalkDistance=840&time=2:49%20pm&date=10/24/2012&arr=Depart&itinID=1&wheelchair=false
Here's the defintion of the OTP REST API that will tell you what each XML element in the response means:
http://www.opentripplanner.org/apidoc/
Best Answer
The docs are old and native JAI is on the "way of the dodo", I believe in most of our installations we are not adding it anymore (mostly because it does not have some basic fixes present in jai-ext and won't handle NODATA).
It will help you on Windows under the following conditions:
If instead you're mostly rendering vector data and the slowness is visible to the naked eye on light load, it's most likely a database query issue (maybe it's not using indexes, maybe you're just trying to render too much data, you did not provide enough context to tell). Suggestion, switch the logging level to GEOTOOLS_DEVELOPER_LOGGING and check what the queries are doing.