What is the difference between a high-level and low-level Java API?

Speedy picture Speedy · Jun 17, 2015 · Viewed 12.2k times · Source

I'm learning about Google App Engine and Googles datastore from here and they keep mentioning "low-level Java API."

What exactly is a "low-level Java API" and how does it differ from a "high-level Java API" (which I assume must also exist since there is a low-level one?"

Google searches yielded poor results for this question.

Answer

John picture John · Jun 17, 2015

Let us first see what documentation says about this -

The Java Datastore SDK provides a supported low-level API for the Datastore. In the documentation for the Datastore we use this low level API for the sake of simplicity.

However, for your convenience, the Java SDK also includes third-party implementations of the Java Data Objects(JDO) and Java Persistence API (JPA) interfaces. Note that these are provided for your convenience only; they are not supported by Google. In addition, the Java SDK includes other third party frameworks designed to simplify Datastore usage for Java developers.

When somebody refers to low-level and high-level, they usually talk about abstraction level.

Abstraction

is a technique for managing complexity of computer systems. It works by establishing a level of complexity on which a person interacts with the system, suppressing the more complex details below the current level. The programmer works with an idealized interface (usually well defined) and can add additional levels of functionality that would otherwise be too complex to handle.

To give direct example, language C offers you lower level API to computer resources than Java. In C it is possible to do garbage collection in real time at will of programmer, however it is most likely that majority programmers will shoot themselves in a foot with this than get concrete benefits.

In other words, google offers you officially low level API which is powerful but not as trivial to use. There are third party solutions which abstract google's low level API into high-level API and make it simpler to use the API.