Google lanza traductor de Java a Objective-C

nerkaid

Google lanza traductor de código Java para Android a Objective-C para iOS

Googleha sorprendido al lanzar un traductor para iPhone y iPad que convierte el código fuente de Java usado en aplicaciones Android a código fuente del lenguaje Objective-C para ser usado en aplicaciones iOS, y que recibe el nombre de J2ObjC.

El objetivo de J2ObjC es permitir a los desarrolladores compartir código que no cuenta con interfaz de usuario de forma más sencilla entre aquellos dispositivos Android o aplicaciones GWT basadas en server que hacen uso de Java, y los dispositivos con sistema operativo iOS quen aturalmente hacen uso de Objective-C.

En palabras mas sencillas, J2ObjC permite que el código Java sea compatible con el código de aplicaciones iOS sin edición de los archivos generados.

Este proceso de traducción consiste en la conversión de java.lang.Object a NSObject, de boolean a BOOL y de byte a char. A su vez, las variables de instancia se convierten en propiedades, las clases anónimas e internas pasan a ser clases externas nombradas específicamente, las interfaces se transforman en protocolos y las pruebas JUnit serán versiones de prueba con estilo JUnit.

Se puede integrar en el flujo de trabajo en desarrollo XCode IDE, así como en Maven y Make. Cuenta con licencia Apache 2.0 y está disponible desde ahora a través del sitio del proyecto Google Code, con su respectiva documentación.

Fuente: WebAdictos

"Si no puedes con tu enemigo, únete a él"
El arte de la guerra. (Sun Tzu)

TaMy

Es una buena jugada por parte de Google, intentando algo similar a lo que consigues con Adobe Air o haciendo tu app HTML5.

Trabajar una sola vez para los dos sistemas.

Cuando lo hayamos probado mejor diré a ver que tal es el resultado de iOS con esto.

Espero que no lo abandonen y lo mantengan actualizado.

Cryoned

No lo van a abandonar ni locos, lo que pretenden es que los developers focalicen sus esfuerzos en android y de esta manera las apps de android salgan antes y estén más optimizadas.

Seguramente perderá rendimiento en ios pero a muchos devs les va a venir de perlas, sobre todo los que no quieren aprender un segundo lenguaje no estandar.

Parece una tontería pero puede hacer muchísimo bien a android y penalizar una salvajada a apple, que de hecho no me extrañaría que empiecen a buscar 300 maneras de localizar si la app se ha construído usando esta aplicación para banearlas de su store.

2 1 respuesta
sPoiLeR

Minipunto para android, primero android, luego ios xD.

B

Esto es oro para mi, habrá que probarlo fuera de un "hola mundo".

cabron

Venía a decir lo mismo que #3. Lejos de ser una bajada de pantalones, de funcionar bien significa que ahora se desarrolla para Android, y se deja que la herramienta lo convierta en una app para IOs, con lo que se convierte en la plataforma principal de desarrollo.

Vamos que la cita de "Si no puedes con tu enemigo, únete a él" es bastante desafortunada.

De todas formas Cryoned, lo de que se pierda rendimiento en IOs no tiene por qué, ya que las traducciones de código tienen una ventaja. Suponiendo que que el traductor funcione muy bien y no sea necesario modificar a mano el resultado, puede tener como salida código optimizado. Es decir, normalmente el código tiene que ser entendible por personas para que puedan modificarlo, pero si directamente la herramienta es capaz de generar el código ya optimizado de forma que sea innecesario repasarlo a mano, te puedes pasar la legibilidad por el forro, lo que permite hacer optimizaciones más gordas, por que no importa que no se entienda nada.

Esto ya lo hace google con GWT, que traduce código Java a código HTML5/javascript. El resultado es código muy optimizado pero que es completamente ilegible e imposible de modificar a mano.

Edit:

Bueno he mirado un poco el proyecto, y tampoco va a ser la panacea. No va a traducir código para las interfaces de usuario, ni ahora ni nunca:

"J2ObjC does not provide any sort of platform-independent UI toolkit, nor are there any plans to do so in the future. iOS UI code needs to be written in Objective-C or Objective-C++ using Apple's iOS SDK (Android UIs using Android's API, web app UIs using GWT, etc.)."

De todas formas una aplicación que contenga la lógica mezclada con la interfaz de usuario es una aberración, lo normal es que el grueso de la aplicación esté separado, con lo que sigue siendo bastante interesante, y no cambia el hecho de que Android pueda pasar a ser la plataforma principal, mientras que para ios solo se desarrollaría la interfaz de usuario.

2
Dante88

La interfaz de usuario y todo lo que "hable" con la API.

Realmente hoy en día ya se puede hacer una app en C++ que funcione perfectamente en ambos S.O. Pero con Java es más cómodo trabajar. Y hacer una app en C++ para Android puede ser duro xD.

Yo creo que ambas compañias se benefician de esto. Al fin y al cabo el liberar memoria dinámica manualmente o no, a menos que sea un videojuego no va a marcar una diferencia de rendimiento apreciable para las apps de IOS. Y es un buen comienzo para tener una alternativa real a las web apps multiplataforma hechas con javascript, que tienen un rendimiento lamentable.

Usuarios habituales