Perhaps I'm picking nits, but I think a library that provides an API for interacting with Geode isn't a client. (I like to call it a driver.) The client is the application that someone write to use that API to interact with Geode. I recognize that in the past the C++ library for Geode has been called the "native client" but to me the term "client" implies a stand-alone application that has user functionality built into it.
Sarge > On 24 Apr, 2017, at 15:03, Fred Krone <fkr...@pivotal.io> wrote: > > In an effort to improve Java developer ease of use for caching with Geode I > am looking for feedback on going forward with creating a Java client. This > client will allow for server-side region creation and distributed data > caching. This would allow for a thin client that fits with microservice > caching patterns and also abstracts a cleaner client-server experience > driven interface. > > Initially we were going to update the Region interface but were concerned > with breaking existing applications. We also would like to provide Region > creation to a client application and so propose here solving both of these > areas with a Java client. > > It would have new project repo for the client. > > It would provide new Region interface for clients. The specifics of the > API design are too lengthy for this conversation but implementation will > resemble JSR 107 Cache interface. > > It would use the new security framework. > > > *An example*, > > The client application simply creates an instance of client and points it > to the locator: > > > org.apache.geode.client.Client client = Client.create(locatorHost, > locatorPort); > > > Client has the following methods: > > package org.apache.geode.client; > > > public interface GeodeClient { > > /** > > * creates the region on the servers, or gets the region if it exits, > returns a PROXY region > > */ > > public Region getOrCreateRegion(RegionAttributes attributes, String name); > > > /** > > * Returns a PROXY region if the region exists on the server > > */ > > public Region getRegion(String name); > > > > > > > MVP > > The smallest set of features to test this idea, learn and iterate, and get > the client into the communities hands for future iterations is: > > > Create a server side Region from a client > > Region interface has CRUD on par with javax.cache.Cache (from JSR 107) > > Calls are asynchronous -- futures > > > > Also would like feedback on which future functionality would be most useful > from a thin client: > > Function execution > > Durable clients > > User defined serialization > > Register interest > > Queries > > CQ > > Near side caching > > Create disk stores from client > > Region group membership > > Client subscription load balancing > Transactions > > > Thanks, > -Fred