2012-03-16 2 views
3

Я пишу код, который я хочу в конечном итоге выполнить на платформах ПК, Xbox и Android, и, если возможно, также Mac и Linux. Вместо того, чтобы переписывать его для каждой платформы, я хотел бы написать ее один раз на языке, который будет работать на всех этих платформах. Я рассматривал Fantom, но, по-видимому, он не работает на Android, и у него ограниченная поддержка статической типизации и дженериков, и я слышал, что Scala собирается работать в среде CLR, но в настоящее время она не поддерживает CLR дженериков, которые не позволяют использовать XNA. Я не хочу использовать динамически типизированный язык, потому что динамическая типизация работает медленнее (особенно важно на смартфонах) и сложнее отлаживать.Есть ли статически типизированный язык, который работает как на JVM, так и на CLR?

ответ

0

Да, Scala, обычно используется на JVM. также имеет некоторые CLR support. Clojure не является статически типизированным, но я считаю, что он также поддерживает (или поддерживает) как JVM, так и CLR.

2

Зачем вам нужно настраивать 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-кода.

Смежные вопросы