Existem duas razões.
-
A Apple deseja revisar todo o código executado em um dispositivo iOS para garantir a qualidade da plataforma geral. Obviamente, para revisar o código, eles precisam tê-lo. Assim, a Apple exige que todo o código executado pelo seu aplicativo precise ser parte do aplicativo ou parte das APIs públicas do iOS. Você pode incorporar um mecanismo de execução em seu aplicativo, mas você não pode executar código baixado da web. No entanto, o ponto inteiro de um mecanismo ECMAScript em um navegador da Web é executar um código arbitrário da Web.
-
[Nota: não tenho 100% de certeza sobre isso.] O modelo de segurança do iOS não permite que um aplicativo execute código nativo a partir da memória gravável. A memória é gravável ou executável (mas somente leitura). No entanto, o V8 é um compilador puro, ele não possui um interpretador. Ele compila o ECMAScript para o código nativo na memória e o executa. Mas o modelo de segurança impede isso. Então, o Google teria primeiro que desenvolver um intérprete para o V8. Mas isso seria potencialmente devastador para o desempenho e seria um esforço substancial de desenvolvimento.
Xamarin 2.0 manages to port mono (.net runtime) on iOS along with every app.
-
O código que é executado pelo tempo de execução Mono, neste caso, faz parte do aplicativo. Nenhum código é baixado de qualquer lugar.
-
Mono contém um intérprete.