Отвъд Java: Езици за програмиране на JVM

Ако има език, който е известно и доказано количество за разработчиците, това е Java. Корпоративни разработчици, уеб разработчици, разработчици на мобилни устройства и много други освен това направиха Java повсеместна и допринесоха за масивната култура на подкрепа около Java.

Нещо повече, Java Runtime или Java Virtual Machine (JVM) се превърна в софтуерна екосистема изцяло своя собствена. В допълнение към Java, много други езици са използвали Java Virtual Machine, за да се превърнат в мощни и ценни инструменти за разработка на софтуер сами по себе си.

Използването на JVM като среда за изпълнение носи със себе си няколко предимства. JVM е усъвършенстван в продължение на няколко десетилетия и може да даде висока производителност, когато се използва добре. Приложенията, написани на различни езици в JVM, могат да споделят библиотеки и да работят с едни и същи структури от данни, докато програмистите се възползват от различните езикови функции.

По-долу представяме няколко от най-значимите езици за програмиране, създадени за JVM. От Kotlin и Scala до Jython и JRuby, тези езици предлагат по-прости и гъвкави начини за допълване на Java или мощни алтернативи, предназначени да я заменят.

Котлин

Създаден от JetBrains през 2010 г. и с отворен код през 2012 г., Kotlin е едновременно по-кратък и по-безопасен от Java. Можете да мислите за Kotlin като за „Java, но по-опростен“. Синтаксисът му е по-малко подробен от този на Java и често се компилира по-бързо от Java кода. Kotlin също така позволява функционални стилове за програмиране, които понастоящем не се предлагат в Java, и има по-безопасни и по-елегантни начини за обработка на нулеви стойности. Разработчиците на Android все повече избират Kotlin пред Java за разработка на приложения на тази платформа.

Бъдещите планове за Kotlin надхвърлят JVM. Един от проектите включва компилиране на Kotlin към машинен код чрез LLVM рамка.

За повече информация относно Kotlin вижте общия преглед на езика на Martin Heller.

Скала

Подобно на Kotlin, Scala е създадена, за да направи разработчиците на Java по-продуктивни. Scala съчетава функционално и обектно-ориентирано програмиране на един и същи език, правейки функционалната парадигма достъпна и полезна за потребителите на екосистемите на Java. Плюс това, синтаксисът на Scala се доближава до Java, отколкото функционалната алтернативна Clojure, чийто синтаксис, подобен на Lisp, може да дезориентира към непосветените. Комбинацията от функционални и обектно-ориентирани парадигми е голяма част от привлекателността на Scala.

В момента се работи по Scala Native, вариант на Scala, който се движи извън JVM върху гол метал, чрез LLVM. Но все още е твърде рано да се използва за производство.

Clojure

Разработчикът Rich Hickey искаше да изгради функционален език в семейството на Lisp за JVM и създаде Clojure, за да надраска този сърбеж. Clojure има за цел да улесни писането на едновременни, високоефективни приложения, полезни навсякъде, където Java работи, но позволяващи различен набор от стилове на програмиране, отколкото Java традиционно поддържа. Една успешна история на бележката е Puppet Server, който е мигриран от Ruby към Clojure.

Groovy

Първоначално разработен от Pivotal, но сега под ръководството на Apache Software Foundation, Groovy надгражда силно върху съществуващия опит с Java, като същевременно предлага функции, вдъхновени от динамични езици като Python и Ruby. Groovy е един от езиците, пряко поддържани от популярния сървър за непрекъсната интеграция на Jenkins и с него е изградена една ключова уеб рамка, Grails.

Бъдещите версии на Groovy ще включват функции в по-новите версии на Java и JVM, като синтаксис на Java 8 ламбда.

Jython и JRuby

Jython и JRuby са изпълнения на Python и Ruby, съответно, за JVM. Jython е съвместим с клон 2.x на Python. JRuby е съвместим със сравнително скорошния Ruby 2.3. И двете динамично се компилират в байт код на Java и могат да си взаимодействат свободно с други JVM езици, в частност Java.

Други езици на JVM

  • Цейлон : Разработен от Red Hat, Цейлон е създаден, за да отговори на някои от проблемите на Java, като многословието и връзките му с някои от основните механизми в JVM. Цейлон може да се компилира, за да работи на JVM, на Dart VM или на Node.js.
  • Frege : Версия на функционалния език Haskell за JVM. Frege кодът се компилира в клас Java и като цяло си взаимодейства с Java, но може да се възползва от неизменността в стил Haskell и функционалните парадигми.
  • Eta : Друг вариант на Haskell за JVM. Известното му предимство е, че може да използва пакети от хранилището на пакети на Haskell, Hackage, за максимална съвместимост с екосистемата на Haskell.
  • Haxe : Haxe се компилира в JVM като една от многото възможни цели, включително мрежата, мобилните устройства и голия метал. Синтаксисът му напомня на Java и той може да взаимодейства с други Java библиотеки, ако е необходимо, когато се компилира за JVM.
  • Fantom : Език с изпълнения както за JVM, така и за .Net CLR, Fantom предоставя API, които абстрахират разликите между двете платформи. Fantom също може да бъде компилиран в JavaScript и на теория може да бъде разположен на произволен брой други цели.