incredibly compatible, albeit with some limitations. The compiler is quite aggressive, so e.g. you can't do reflection on "any" class, you just have to tell the compiler what you are going to use at runtime (so called "closed-world assumption"). Also most initialization code is forced to run at "compile-time" to keep boot time low. Pretty incredible piece of code.