Moreover, reflection is less of a language feature and more of a very low-level library feature. In ObjC, one can write
Class c = [SomeRandomClass class];
id thingy = [[c alloc] init];
but Java won't let you do the equivalent:
Class c = SomeRandomClass;
Object x = new c;