Я пишу код, который я хочу в конечном итоге выполнить на платформах ПК, Xbox и Android, и, если возможно, также Mac и Linux. Вместо того, чтобы переписывать его для каждой платформы, я хотел бы написать ее один раз на языке, который будет работать на всех этих платформах. Я рассматривал Fantom, но, по-видимому, он не работает на Android, и у него ограниченная поддержка статической типизации и дженериков, и я слышал, что Scala собирается работать в среде CLR, но в настоящее время она не поддерживает CLR дженериков, которые не позволяют использовать XNA. Я не хочу использовать динамически типизированный язык, потому что динамическая типизация работает медленнее (особенно важно на смартфонах) и сложнее отлаживать.Есть ли статически типизированный язык, который работает как на JVM, так и на CLR?
ответ
Да, Scala, обычно используется на JVM. также имеет некоторые CLR support. Clojure не является статически типизированным, но я считаю, что он также поддерживает (или поддерживает) как JVM, так и CLR.
Зачем вам нужно настраивать JVM? Если эта потребность предназначена исключительно для Android, то, вероятно, посмотрите на MonoTouch, который представляет собой стек .NET для популярных мобильных платформ, разрабатываемых Xamarin (теми людьми, которые были за Mono, когда он был разработан тогда в Novell). Моно - это способ нацелиться на Mac и другие платформы POSIX, используя X Window System для графического взаимодействия (то, что вы назвали «Linux»).
Следует помнить, что вам все равно придется перезаписывать детали графического интерфейса для различных платформ: во-первых, подход к интерфейсам, используемым на сенсорных устройствах, довольно сильно отличается от подхода на «настольных» устройствах и secnd, в то время как MonoTouch, скорее всего, обеспечит унифицированный пользовательский интерфейс на платформах, на которые он нацелен (на Android, iOS, WinPhone). На платформах Windows, Mac и X есть свои предпочтительные GUI-стеки, доступные через .NET или Mono. — WPF или Winforms для Windows, MonoMac на Mac OS X (с использованием Cocoa) и Gtk# на платформах POSIX с использованием X. Mono, похоже, обеспечивает унифицированный стек GUI для всех этих настольных платформ с does support Winforms, но общий внешний вид может быть субоптимальным на платформах, отличных от Windows, поэтому вам придется искать.
Но по крайней мере, основная программная логика не должна быть перенесена на каждую платформу.
P.S. Также обратите внимание, что большинство современных стеков программного обеспечения на основе JVM, на которые мне приходилось смотреть в различных случаях, поддерживали CLR через IKVM, какой тип «обертывания» CLR притворяется JVM в глазах Java-кода.
- 1. Есть ли CLR, который работает на CLR?
- 2. Есть ли статически типизированный язык с хорошей поддержкой лямбда для JVM?
- 3. Erlang на JVM/CLR
- 4. Статически типизированный язык с чертами и функцией перегрузки?
- 5. Может ли статически типизированный язык поддерживать гетерогенные списки?
- 6. Статически типизированный Lua
- 7. Есть ли какой-нибудь JVM, который работает на CBE?
- 8. Как динамически типизированный язык реализован поверх статически типизированного языка?
- 9. C# Динамически типизированный язык
- 10. Возможно ли статически типизированный вариант Лиспа?
- 11. Есть ли SDK администратора/управления, который работает как на Android, так и на iOS?
- 12. Есть ли общий способ доступа к файлам, который работает как на Android, так и на ПК?
- 13. Есть ли класс, который работает как на уровне слов, так и на уровне предложения?
- 14. Есть ли слабо типизированный/небезопасный ленивый + функциональный язык программирования?
- 15. Статически типизированный динамический поиск для записи
- 16. Преобразование приложения пролога на язык JVM?
- 17. Статически связанные неуправляемые библиотеки и C++ CLR
- 18. Есть ли прекомпилятор для JVM, как NGen?
- 19. Язык, основанный на JVM без языковой версии
- 20. Вызов кода CLR от JVM
- 21. Что является самым быстрым языком, который работает на JVM
- 22. Есть ли язык, который позволяет циклы Наследования?
- 23. Есть ли строго типизированный язык программирования, который позволяет вам определять новые операторы?
- 24. Создайте язык программирования JVM
- 25. JVM/CLR Параметры, совместимые с исходным кодом
- 26. Java-совместимый язык JVM
- 27. создание системы на Java и язык ассемблера, который работает на «голом металле»
- 28. Работает ли -Djava.library.path на UNV JVM?
- 29. Есть ли уровень абстракции базы данных MySQL для Python, который работает как pyodbc как на Linux, так и на Windows?
- 30. Работает ли Quartz @DisallowConcurrentExecution на нескольких JVM?