run time reflection also need hard code method name that does't exist in beta api, and have to pay the run time cost of reflect calls. even if using runtime reflection, IMO, we would rarely deploy spark-assembly-xxx-hadoop2.0.0-cdh4.6.0.jar on a cluster running hadoop cdh4.2.0.