Krótka odpowiedź: nie.
Java nie generuje binarnego pliku wykonywalnego, ale tylko kod bajtowy, tak jak robi to C # (CLI), i to nie jest dobra rzecz dla poważnego biznesu w „otwartych środowiskach” z dwóch głównych powodów:
- prawdopodobieństwo uwięzienia w inżynierii wstecznej jest bardzo wysokie, szczególnie w przypadku starych i naprawdę dobrze znanych języków, takich jak Java
- nie masz pełnej kontroli nad wydajnością maszyny, w przypadku Javy dużą rolę odgrywa JVM, przejmując pełną kontrolę.
Oczywiście każdy język ma swoje własne biblioteki, ale ze względu na ich dużą liczbę dla każdego języka nie jest to prawdziwy problem i nie wydaje mi się, że jest to cel tego tematu.
Być może na poziomie profesjonalnym możesz znaleźć coś, co może złamać regułę, np. Dev-Kit, który może przetłumaczyć wszystkie instrukcje C # na kod asemblera dla maszyny z prawdziwego świata, ale jeśli tego rodzaju podejście nie znajduje się w kartach, jesteś zmuszony do tego weź pod uwagę tylko C i C ++ dla swojego rozwoju, gdy zamierzasz sprzedawać swój produkt w otwartym środowisku.
Rzeczy są nieco inne dla urządzeń mobilnych, ponieważ są one „zamkniętym środowiskiem”, nawet Android jest praktycznie zamknięty, biorąc pod uwagę fakt, że źródło ROM-ów w prawdziwym świecie nie jest zwykle publicznie dostępne, Android można uznać za open source, ale 99 % pamięci ROM na rzeczywistych urządzeniach nie jest. W takich przypadkach nie można za bardzo się kłócić, wszystko jest już ustawione dla ciebie, a każda platforma ma swój własny język, jak wszyscy wiedzą.
Ostatecznie, jeśli zamierzasz sprzedawać te produkty w otwartych środowiskach, mogę jedynie sugerować języki, które mogą tworzyć skompilowany kod binarny / asemblacyjny, w zamkniętych środowiskach decyzja jest zazwyczaj łatwiejsza z różnych powodów.