Есть ли статически типизированный язык, который работает как на JVM, так и на CLR? - PullRequest
3 голосов
/ 16 марта 2012

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

Ответы [ 2 ]

2 голосов
/ 21 марта 2012

Зачем вам нужно ориентироваться на JVM? Если это необходимо исключительно для работы с Android, то, возможно, обратите внимание на MonoTouch , который представляет собой стек .NET для популярных мобильных платформ, разрабатываемых Xamarin (тех, кто был за Mono, когда он разрабатывался тогда в Novell ). Mono сам по себе является способом нацеливания на Mac и другие платформы POSIX, используя X Window System для графического взаимодействия (то, что вы назвали «Linux»).

Однако вы должны знать, что вам все равно может понадобиться переписать части графического интерфейса для различных платформ: во-первых, подход к интерфейсам, используемым на устройствах с сенсорным экраном, довольно сильно отличается от подхода на «настольных» устройствах и второй, в то время как MonoTouch вероятно, обеспечит унифицированный интерфейс на целевых платформах (Android, iOS, WinPhone) для настольных ПК. Платформы Windows, Mac и X имеют собственные предпочтительные стеки графического интерфейса, доступные через .NET или Mono - WPF или Winforms в Windows, MonoMac в Mac OS X (с использованием Cocoa) и Gtk # на платформах POSIX с использованием X. Mono, по-видимому, предоставляет унифицированный стек графического интерфейса для всех этих настольных платформ, поскольку делает поддержка Winforms , но общий внешний вид может быть неоптимальным на платформах, отличных от Windows, поэтому вам придется искать.

Но, по крайней мере, логику основной программы не нужно будет переносить на каждую платформу.

P.S. Также обратите внимание, что большинство современных программных стеков, основанных на JVM, которые мне приходилось просматривать в различных случаях, поддерживали CLR через IKVM , который «оборачивает» CLR, делая вид, что это JVM в глазах Java-кода.

0 голосов
/ 20 марта 2012

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

...