2010-05-07 20 views
7

Está claro que los compiladores cruzados no serán permitidos por la tienda de aplicaciones de Apple, por lo que un desarrollador deberá estar familiarizado con Objective-C para crear aplicaciones para el iPhone.compilador de Objective-C a Java

Me preguntaba si existe un compilador cruzado que tome el código de la aplicación Objective-C y lo reconstruya en una aplicación Java similar que pueda empaquetarse para Android. De esta forma, un desarrollador podría aprender solo un idioma (obj-c) pero sacar aplicaciones en muchos dispositivos.

Entiendo que el puerto de Java sería menos óptimo que una aplicación codificada de forma nativa, pero es posible que ahorre un desarrollador en algún momento.

Editar: Sí, las aplicaciones serían terribles. Pero, ¿no serían tan terribles como si hubieran sido construidos por monotouch o el compilador flash cruzado? ¿No podrían usarse los mismos métodos que utilizan estos compiladores cruzados?

+0

Stella SDK supuestamente convierte su aplicación para iOS a Android y otros formatos: http: //www.yeecco. com/stella – jsherk

Respuesta

7

No he oído hablar de un compilador cruzado que haga lo que está pidiendo. Incluso si uno existiera, el problema más grande sería que los marcos (UIKit, CoreAnimation, etc.) son muy diferentes entre las dos plataformas. Sin algún tipo de marcos comunes, todo el código que interactúa con los marcos deberá ser rediseñado.

+0

Aquí el marco común: http://github.com/rcmcastro/cocoatouch-for-android – rcmcastro

-1

El problema con tal compilador es que produciría aplicaciones terribles. Android tiene un modelo (mejor) diferente de cómo está estructurada la aplicación: mientras que una aplicación de iPhone es más tradicional, una aplicación de Android está mucho mejor integrada en el sistema (a través de actividades, vistas, servicios e intenciones).

El mayor desafío no es el código principal, sino la UI y las bibliotecas del sistema. Si todas las vistas fueran XIB, hay una pequeña esperanza.

3

No hay oportunidad. En general, la traducción de un lenguaje de bajo nivel como C a un lenguaje de alto nivel (como muy ligeramente) como Java conduce a un código muy poco óptimo.

Pero eso ni siquiera es la peor parte: también necesitará traducir entre dos modelos de aplicación extremadamente diferentes. Tendría que volver a implementar la mayor parte de Cocoa Touch como una cuña sobre Android, o tratar de averiguar qué está haciendo en realidad la aplicación de iPhone y poner a punto expresiones idiomáticas de Android equivalentes.

Una ruta mucho más probable sería algo así como GNUstep, pero no sé si alguien está mirando seriamente la implementación de la capa UIKit para GNUstep, y terminaría con una aplicación nativa al final, en lugar de una aplicación de Java.

+1

Objective-C es un lenguaje de nivel superior, al igual que Java es ... Tengo más de una década de programación en Java bajo mi cinturón y ahora trabajo Objective-C de tiempo completo desde el lanzamiento del iPhone SDK (e incluso un poco antes de eso). –

+0

Para aclarar: puede usar elementos como punteros de función, asignación manual de memoria, máscaras de bits y bitfields, y otras características C en su código Objective-C. Un programa Java tendría que emular estos constructos con algo significativamente más pesado. –

+0

Lo hicimos totalmente apportable. –

1

Hay un proyecto, llamado XML Virtual Machine, que es similar a lo que está pidiendo. Estaba interesado en eso antes de llegar a conocer el Objective-C. Por lo que sabía, la compilación cruzada de Java a iPhone era posible (con algunas limitaciones). El proyecto aún está en desarrollo. Puede verificar su página web al XML VM webpage.

Quizás la persona de XML VM podría responder a su pregunta (si planean crear una compilación cruzada de Objective-C a Java).

Pero sigo afirmando que hacer la aplicación dos veces (para cada plataforma con diferentes idiomas y herramientas) definitivamente daría mejores resultados.

4

Este problema se resuelve con Apportable. Utiliza clang y el tiempo de ejecución Objective-c de Apple y compila para Android de forma nativa. También une ese código con JNI de una manera agradable, de modo que es accesible en Android.No es necesario convertir a Java y no hay una penalización de costos en el rendimiento, ya que se compila para la arquitectura ARM nativa que se ejecuta en el dispositivo (incluso a veces puede ser más rápido que Dalvik/Java en el dispositivo). También presenta un puerto de UIKit que mapea todo bastante bien.

+0

Eso es genial. La documentación en el sitio web es bastante escasa, sin embargo. ¿Qué framework soporta, además de UIKit? –

+0

$ 1000 para usar UIKit? Gracias pero no gracias. –

+0

Puedes usar UIKit sin pagar $ 1000. –

1

Sí, hay una aplicación que convierte Objective-C a Java. Aún necesitará saber algo de Java, pero le ahorrará mucho tiempo migrar a Android. Viene con un proyecto de compatibilidad de Android que puedes agregar como una dependencia en eclipse. Tiene asignaciones de tipos y métodos personalizables y puede especificar asignaciones de métodos utilizando un sistema de plantillas.

Échale un vistazo aquí ... O2J - Objective-C to Java Converter

Aquí es su video instructivo ... O2J Howto Video

+0

Gracias @Cal. Esta es la única solución que es un poco útil al menos. Los otros no funcionan o ya no existen. –

Cuestiones relacionadas