Подход к переносу библиотеки (Java) (в Objective-C): методология? - PullRequest
2 голосов
/ 31 октября 2010

Я разработчик для iOS, и я нашел отличную библиотеку, которая выполняет для меня все виды расчетов, связанных с астрономией. Проблема в том, что он написан на Java. Хотя у меня достаточно опыта работы с языками, близкими к Java, я не могу запустить Java на iOS.

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

Я пытаюсь выяснить лучший способ сделать портирование. Должен ли я начать с основных методов / функций каждого класса, или я могу просто переходить по строкам в каждом файле, пока не переведу все?

Ответы [ 2 ]

2 голосов
/ 31 октября 2010

Просто начните, где хотите. Как правило, вы хотите начать ближе к ядру и найти выход. Просто запомните эти три шага:

  1. Заставь это работать
  2. Сделай все правильно
  3. Сделать это быстро / чисто

Так что не беспокойтесь о том, чтобы он выглядел красиво или что-то в этом роде, просто работайте так, как нужно, протестируйте его. Затем посмотрите, где можно выполнить рефакторинг, если это возможно, и т. Д.

1 голос
/ 31 октября 2010

Поскольку это библиотека функций, она не будет зависеть от функций, специфичных для платформы.

Портировать это действительно просто.Вы можете портировать функцию по функции, возможно, начать с функций, которые важны для вашего приложения.

Действительно сложная часть (учитывая, что это математическая библиотека) будет гарантировать, что она работает правильно: у вас должен быть тот же набор модульных тестов, что и в исходной библиотеке.Лучше всего было бы создать классы-оболочки Java, которые вызывают вашу библиотеку через JNI, чтобы вы могли запускать оригинальные модульные тесты в вашей библиотеке.Чистая библиотека Objective C (без привязок к платформе) должна работать как на OS X, так и на iOS, поэтому вы можете запускать тесты на OS X. Сделайте что-то вроде этого:

  1. Посмотрите на исходную библиотеку Java и создайтефункционально похожий API в Objective-C: те же классы, те же имена методов.
  2. Возьмите исходные классы Java и замените все содержимое методов вызовами JNI в вашей собственной библиотеке.
  3. Реализация функциональности в вашей библиотеке.
  4. Запуск модульных тестов Java (теперь он вызывает вашу собственную библиотеку), чтобы убедиться, что ваша библиотека работает правильно.

Для упрощения JNIРазработка, которую вы можете использовать JNA или любую другую упаковку JNI, перечисленную здесь .

...