public static <K, M, R, JM> StreamTableJoinOperatorSpec<K, M, R, JM> createStreamTableJoinOperatorSpec(
      String tableId, StreamTableJoinFunction<K, M, R, JM> joinFn, String opId, Object ... args) {
    return new StreamTableJoinOperatorSpec(tableId, joinFn, opId, args);
  }
Creates a {@link StreamTableJoinOperatorSpec} with a join function.

@param tableId the table Id for the table on the right side of the join
@param joinFn the user-defined join function to get join keys and results
@param opId the unique ID of the operator
@param <K> the type of join key
@param <M> the type of input messages
@param <R> the type of table record
@param <JM> the type of the join result
@param args additional arguments passed to the table
@return the {@link StreamTableJoinOperatorSpec}
samza-core/src/main/java/org/apache/samza/operators/spec/OperatorSpecs.java