Второй день мучаю google запросами типа "javacard ide" или "javacard development tools" в надежде, что задав правильный вопрос, я смогу получить желаемый ответ.
Увы. Intellij IDEA, как бы мне этого не хотелось, не содержит никаких дополнительных инструментов для разработчиков приложений на смарткарты. Но нашлись варианты с разработкой в NetBeans или в Eclipse. В процессе заставить работать хотя бы один, я рассматривала эти два варианта параллельно, переключаясь с одного на другой при встрече с очередной проблемой.
Расскажу сначала про вариант со средой разработки NetBeans (он получился короче).
В интернете нашелся подробный и достаточно простой мануал о том, как создать первый проект на платформе JavaCard, следуя которому нужно было иметь NetBeans версии 6.8. Запустив его зайти во вкладку дополнительного программного обеспечения и по ключевому слову "Card" установить два плагина: Java Card (инструменты разработчика) и JRE JavaCard 3.0.
Имея на своём рабочем компьютере уже установленную версию NetBeans 8.0, я стала искать плагины и сразу все пошло не по плану. Плагин JRE JavaCard не нашёлся, но в инструкции был отдельный пункт по которому можно было добавить платформу руками, скачав её с сайта Oracle. На главной странице платформы JavaCard на сайте ссылки на версии 2.2 и 2.1 оказались битые, но слегка помучившись, я всё-таки их нашла и скачала.
Дальнейшие шаги заключались в добавлении платформы JavaCard в NetBeans, а именно было необходимо выбрать папку с платформой и нажать готово в неком диалоговом окошке. Однако, и тут всё было не так-то просто, упёртый NetBeans совершенно не желал воспринимать скачанные мною SDK JavaCard 2.2 и 2.1 как папки с платформой: кнопка "далее" так и оставалась неактивной. Потратив ещё минут 30 на поиски решения этой проблемы я нашла одно сообщение на форуме, что NetBeans поддерживает только JavaCard версии 3.0. Подумав несколько минут о том, на кой чёрт мне версия 3.0 если целевые смарткарты поддерживают только версию 2.2, я всё таки решила, что можно просто не использовать фишки новой версии, а потом как-нибудь попытаться скомпилировать под версией 2.2 каким-нибудь консольным инструментом. Расслабившись, я полезла на сайт Oracle скачивать последнюю версию JavaCard, но и тут меня ждала подлянка, на сайте был доступен только некий zip-архив, содержащий слово windows, который вероятно мне на linux-е мало чем поможет. Но я всё равно скачала его и на всякий случай попробовала подсунуть в NetBeans, но, ожидаемо, ничего не случилось. Решив раз и навсегда закрыть вопрос с NetBeans я скачала версию 6.8, о которой шла речь в статье, но и с ней чуда не произошло. Таким образом, создание проекта под JavaCard в NetBeans окончательно зашло в тупик.
Теперь можно приступить к рассказу о мучениях с Ecipse.
По мануалу для среды разработки Eclipse путь к созданию проекта был таков: в Eclipse версии 3.2 необходимо добавить плагин EclipseJCDE, после чего в главной панели инструментов должен появится пункт JavaCard, зайдя в который, можно будет указать путь к платформе.
Как и в случае с NetBeans у меня уже был установлен Eclipse версии 3.8. Как оказалось, имеющийся плагин не работает с новыми версиями Eclipse, поэтому я отправилась в архив на сайте IDE и нашла там требуемую версию 3.2. Однако, не тут то было, старая версия IDE отказалась запускаться под текущей JRE (версии 1.7), а настойчиво требовала установить JRE 1.4. Поэтому мне пришлось снова отправится на сайт Oracle с целью скачать старую Java. Почему-то сразу несколько последних сборок версии 1.4 были сделаны только для Solaris, удивившись, я скачала JDK версии 1.4.19 и успешно её установила. Потратив ещё минут 10 на поиски того, как сказать Eclipse какую именно Java использовать для запуска, у меня всё таки получилось увидеть окошечко Eclipse 3.2. Обрадовавшись, я тут же получила по лбу сообщением об ошибке, подробности которой можно найти в логе [путь к логу] . Оказалось, что скачанная Java была рассчитана на 32-битную архитектуру, а Eclipse на 64-ёх битную, а они обязаны быть одинаковы. Так как мой компьютер имеет 64-ёх битную архитектуру, я решила скачать правильную версию Java.
Однако, скачанные самораспаковывающиеся архивы JDK 1.4.19 (и 18, и 17) отказывались распаковываться с ошибкой, которая выводилась какими-то кракозябрами. Поиск в google по решению этой проблемы мне ничего не дал, поэтому я решила попробовать скачать JRE, так как собственно мне нужна-то только виртуальная машина, чтобы запустить Eclipse. Но оказалось, что JRE 1.4 для 64-ех битной архитектуры отсутствует.
Пришлось возвращаться на шаг назад: версии Eclipse и Java должны быть под одну архитектуру, значит можно ещё попробовать скачать 32-ух битный Eclipse, что я и сделала. И, наконец-то, решающий момент, запустив Eclipse передо мной открылся привычны интерфейс и пункт JavaCard появился на главной панели. Удовлетворённо выдохнув, я пошла искать вкладку с инструкцией для Eclipse, чтобы узнать что делать дальше. В инструкции, в которой все предыдущие мои танцы с бубном помещались в две строчки, было сказано, что нужно тыкнуть в пункт JavaCard и добавить там платформу.
Но счастливый конец не для этой истории: на клик в пункт JavaCard Eclipse ответил мне окошком "Ошибка, подробности в логе". Практически в полном бешенстве, я спросила у goole где у Eclipse какой-нибудь лог, в которой пишутся ошибки, и обнаружив его я увидела два эксепшена от каких-то двух плагинов (но не от того, который я добавляла). В процессе поиска, как можно их исправить ничего внятного мне не попалось, а удаление jar-ников этих плагинов, обеспечивало падение Eclipse ещё до старта интерфейса.
Так как программировать под JavaCard мне всё равно придётся, то я решила поискать какие-нибудь коммерческие инструменты для разработчиков, но это уже совсем другая (конфиденциальная) история.
P. S. Жаль, что двухдневные мучения не закончились победой, потому что это был бы один из моих любимых моментов в программировании, когда упорство вознаграждается.