code: public static Geometry getFurthestCoordinate(Point point, Geometry geom) {
          if (point == null || geom == null) {
              return null;
          }
          double maxDistance = Double.NEGATIVE_INFINITY;
          Coordinate pointCoordinate = point.getCoordinate();
          Set<Coordinate> furthestCoordinates = new HashSet<Coordinate>();
          for (Coordinate c : geom.getCoordinates()) {
              double distance = c.distance(pointCoordinate);
              if (Double.compare(distance, maxDistance) == 0) {
                  furthestCoordinates.add(c);
              }
              if (Double.compare(distance, maxDistance) > 0) {
                  maxDistance = distance;
                  furthestCoordinates.clear();
                  furthestCoordinates.add(c);
              }
          }
          if (furthestCoordinates.size() == 1) {
              return GEOMETRY_FACTORY.createPoint(furthestCoordinates.iterator().next());
          }
          return GEOMETRY_FACTORY.createMultiPoint(
                  furthestCoordinates.toArray(new Coordinate[0]));
      }
docs: Computes the furthest coordinate(s) contained in the given geometry starting
  from the given point, using the 2D distance.
  
  @param point Point
  @param geom  Geometry
  @return The furthest coordinate(s) contained in the given geometry starting from
  the given point, using the 2D distance