Компания Google в своём Open Source Blog представила новый открытый проект под названием J2ObjC, в рамках которого разрабатывается специальный транслятор, преобразующий исходные коды с языка программирования Java на язык Objective-C. Код транслятора написан на Java и распространяется под лицензией Apache.
J2ObjC делает возможным использование Java-кода в качестве надстройки для iOS-приложений, при этом дополнительной правки кода не потребуется. По задумке разработчиков, J2ObjC позволит унифицировать процесс разработки приложений на языке Java, ориентированных на использование в различных мобильных платформах.
В частности, предлагается основу приложения, не связанную с обеспечением работы пользовательского интерфейса, разрабатывать на Java, а обвязку с реализацией интерфейса — с использованием инструментов разработки материнской платформы. Например, базовый Java-код, определяющий логику работы приложения и методы обработки данных, может быть использован в программах для Android, iOS или в web-приложениях (трансляция Java в JavaScript осуществляется при помощи инструментария GWT).
Что касается разработки для iOS, то в процессе сборки приложения компоненты на языке Java будут прозрачно транслироваться при помощи J2ObjC в код на Objective-C, позволяя сформировать итоговый проект целиком на Objective-C. J2ObjC не является эмулятором и позволяет формировать полноценные итоговые проекты на языке Objective-C, что полностью соответствует требованиям Apple в отношении используемых средств разработки.
Интересной особенностью J2ObjC является то, что транслятор осуществляет преобразование Java-классов в соответствующие классы Objective-C, позволяя напрямую использовать iOS Foundation Framework.
В J2ObjC поддерживаются все возможности языка Java 6 и большая часть его функциональности, используемой в клиентских приложениях, включая исключения, внутренние и анонимные классы, generic-типы, потоки и отражения. Также поддерживается трансляция в Objective-C и запуск тестов JUnit. Для сборки могут быть использованы штатные инструменты, такие как Xcode и Make.
В рамках проекта J2ObjC не планируется предоставление унифицированного набора инструментов для разработки пользовательского интерфейса. Другими словами, для создания интерфейса под iOS-приложения потребуется создание связки из Objective-C и Objective-C++, использующей Apple iOS SDK, для Android требуется использование Android SDK, а для web-приложений — GWT.