Краткий ответ: нет.
Java не генерирует двоичный исполняемый файл, а только байт-код, как это делает C # (CLI), и это не очень хорошая вещь для серьезного бизнеса в «открытых средах» по двум основным причинам:
- вероятность попасть в ловушку обратного инжиниринга очень высока, особенно со старыми и действительно хорошо известными языками, такими как Java
- Вы не полностью контролируете производительность машины, в случае Java JVM играет большую роль, беря полный контроль.
Конечно, у каждого языка есть свои библиотеки, но из-за большого количества их для каждого языка это не является реальной проблемой, и я не думаю, что цель этой темы.
Может быть, на профессиональном уровне вы можете найти что-то, что может нарушить правило, например dev-Kit, который может преобразовать все операторы C # в код сборки для реальной машины, но если такого подхода нет в картах, вы вынуждены практично Рассматривайте только C и C ++ для своего развития, когда вы собираетесь продавать свой продукт в открытой среде.
Для мобильных устройств все немного по-другому, потому что они являются «закрытой средой», даже если Android практически закрыт, учитывая тот факт, что исходные ПЗУ в реальном мире обычно не доступны для общественности. Android можно считать открытым исходным кодом, но 99 % ПЗУ на реальных устройствах нет. В этом случае вы не можете спорить слишком много, все уже настроено для вас, и у каждой платформы есть свой язык, который знают все.
В конце концов, если вы собираетесь продавать эти продукты в открытых средах, я могу предложить только языки, которые могут создавать скомпилированный и двоичный / ассемблерный код, в закрытых средах решение, как правило, легче принять по разным причинам.