>Of course, there is massive overhead in doing so. Just look at go, which had to rewrite practically everything already available in go, and must always require a native implementation (protobuf for example shares the underlying interface across ruby, python, php... but then has a full separate implementation in go, and java I think)
Both Java and Go could just as well use FFI for those things "already available" as C.
They don't because native (to the language) is better, and can be even faster (due to GC or lack of crossing the boundary).
Python, PHP and co just take the easy way out. Plus, given their speed, if stuff like JSON and co were native-to-the-language they would be much slower than C extensions.