Переводчик Google Open Sources с Java на Objective-C


Зачем кому-то переводить Java на Objective-C? Потому что Java — это язык Android, а Objective-C — это язык iOS.

Это также объясняет, почему за проектом стоит Google или нет? Чем больше об этом думаешь, тем меньше в этом смысла.

j2ObjC — это переводчик исходного кода Java на Objective-C. Обратите внимание, что это не кросс-компилятор, а переводчик исходного кода. Учитывая, что Java — объектно-ориентированный язык, как и Objective-C, и оба являются блочно-структурированными языками типа C, это звучит не так сложно. Настоящая проблема не в синтаксисе, а в системных вызовах и идиомах.

Цель j2ObjC — позволить Java быть частью сборки приложения iOS. В блоге Google с открытым исходным кодом говорится об этом так:

«j2ObjC позволяет Java-коду быть частью сборки приложения iOS, поскольку редактирование сгенерированных файлов не требуется. Цель состоит в том, чтобы написать код приложения, не связанный с пользовательским интерфейсом (например, доступ к данным или логику приложения) на Java, который может затем будет использоваться в приложениях Android, веб-приложениях (с помощью GWT) и iOS «.

Он работает путем преобразования классов Java в классы Objective-C, использующие iOS Foundation Framework. Он утверждает, что поддерживает большую часть Java 6, включая исключения, универсальные шаблоны и потоки. Страница проекта описывает его как альфа- и бета-качество и присваивает ему исходный номер версии 0.5.

Он также включает в себя убедительное замечание:

«Несколько проектов Google полагаются на него, но когда новые проекты только начинают работать с ним, они обычно находят новые ошибки, которые нужно исправить. Очевидно, у каждого разработчика Java есть немного другой способ использования Java, и инструмент не перевел все возможные пути еще.»

Это отражение того факта, что переводчик не переводит одну точную грамматику в другую. Кроме того, существует множество неаккуратных деталей, касающихся точной семантики кода на обоих языках. Проще говоря, перевод между языками высокого уровня часто бывает сложнее, чем компиляция в машинный код.

Полезность j2objc ограничена, поскольку он не выполняет самую сложную часть работы по преобразованию — преобразование кода пользовательского интерфейса. Google говорит, что нет планов предоставлять какой-либо набор инструментов пользовательского интерфейса, а переводчик нацелен на преобразование внутреннего кода, такого как загрузчики файлов и тому подобное.

Чтобы запустить все это, вам понадобится Mac под управлением OSX с установленной Java и Xcode. Перевод можно сделать автоматическим с помощью инструмента сборки.

Google утверждает, что ему нужен инструмент для внутренних проектов — интересно, какие они могут быть?


Добавить комментарий