You can use the GRIB2Tools, see https://github.com/philippphb/GRIB2Tools. After reading in a GRIB2 file from an InputStream like
RandomAccessGribFile gribFile = new RandomAccessGribFile("", "");
gribFile.importFromStream(inputstream, 0);
you can access the data of the GRIB file based on lat/lon:
double longitude = ... // in degrees
double latitude = ... // in degrees
float val = gribFile.getValueAt(0, GribFile.degToUnits(latitude), GribFile.degToUnits(longiude));
You can also get interpolated data for lat/lon positions that are not exactly on the grid:
double longitude = ... // in degrees
double latitude = ... // in degrees
float val = gribFile.interpolateValueAt(0, GribFile.degToUnits(latitude), GribFile.degToUnits(longiude));