Я столкнулся с проблемой несколько дней назад, когда мне пришлось представить файлы С++ в проект Java. Это началось с необходимости измерять использование ЦП в Java-процессе, и было решено, что путь должен состоять в том, чтобы использовать JNI для вызова собственной библиотеки (разделяемой библиотеки на машине Unix), написанной на C. Проблема была найти подходящее место для размещения файлов C в исходном репозитории (случайно Clearcase), который состоит только из файлов Java.
Я подумал о нескольких альтернативах:
(a) Создайте отдельный каталог для размещения файлов C (в частности, один файл .h и один .c файл) в верхней части исходной базы, например:
/ВОБ/MyProduct/javasrc /ВОБ/MyProduct/cppsrc
Мне это не понравилось, потому что у меня только два файла C, и было очень странно разбить исходную базу на уровне языка, как это. Если бы значительная часть проекта была написана более или менее одинаково на С++ и Java, это могло бы быть в порядке.
(b) Поместите файлы C в пакет Java, который его использует.
У меня есть вызывающие классы Java в /vobs/myproduct/com/mycompany/myproduct/util/, а также файлы C.
Мне это не понравилось, потому что я думаю, что файлы C просто не принадлежат к пакету Java.
Кто-нибудь решил такую проблему раньше? Как правило, какую стратегию следует придерживаться при организации кода, который смешивает два или более языков?
Обновление: у меня нет плана использовать какие-либо C или С++ в моем проекте, возможно, некоторые Jython, но вы никогда не знаете, когда моим клиентам нужна функция, которая может быть решена только с помощью C или лучше всего решена с помощью C.