Виртуальная машина Java (JVM) теперь применяется не только с языком Java. Многие другие языки, в том числе скриптовые, были портированы для работы с JVM. Благодаря этому у разработчиков появляются новые варианты и возможности программирования для платформы Java. «JVM – действительно лучшая открытая платформа, позволяющая довольно легко перестроиться на разработку на новом языке», – считает сотрудник компании VMware Гийом Лафорж, проект-менеджер по языку Groovy (этот язык – в числе тех, которые работают с виртуальной машиной Java), – «спецификации виртуальной машины и байт-кода имеются в свободном доступе, и вам не составит никакого труда просто сгенерировать байт-код и компилировать файлы для виртуальной машины Java на выбранном вами языке».
Groovy
Groovy – это объектно-ориентированный язык, компилируемый в байт-код. В синтаксическом отношении он напоминает Java, но значительно менее запутан. Разработчики, привыкшие программировать на Java, могут быстро адаптироваться к Groovy. Более того, компилятор Groovy легко воспринимает и традиционный синтаксис Java, благодаря чему разработчик может перейти на Groovy, даже не изучая нового синтаксиса. Один из многих аспектов Groovy, позволяющий упростить код, заключается в том, что в этом языке применяется выведение типов (type inference). Таким образом, язык способен выделять тип переменной, не требуя при этом вмешательства разработчика. Кроме того, в Groovy имеются высокоуровневые конструкты, предназначенные для решения стандартных задач – в частности, обработку строк, потребление и создание XML, тестирование компонентов и т.д. Все это экономит драгоценное рабочее время программиста.
JRuby
JRuby – это разновидность языка Ruby для Java. Его код более лаконичен, чем код Groovy, благодаря чему программист может решить больше задач в отдельно взятой строке кода. Как и Ruby, JRuby привлекает разработчиков своим исключительно высокоуровневым синтаксисом. Кроме того, среди достоинств этого языка следует назвать чистую объектно-ориентированную реализацию, замкнутые выражения, «утиную» типизацию и наличие интерпретатора. Интерпретатор позволяет вам переходить от написания кода прямо к выполнению программы. А вот что есть в JRuby и при этом отсутствует в самом Ruby – так это обширные библиотеки платформы Java. У Ruby есть немало своих хороших библиотек, но они далеко не так многочисленны и распространены, как стандартные библиотеки Java.
Jython
Jython, также известный под названием JPython, – это один из первых скриптовых языков, специально разработанных для использования с JVM. Он реализует практически все, за незначительными исключениями, функции языка Python, обеспечивая, при этом, динамическую компиляцию в байт-код Java и, соответственно, высокую производительность. Допускается статическая компиляция, обеспечивающая разработку апплетов, сервлетов и бинов. По словам Джима Хаганина, который был ведущим разработчиком данного языка, а в настоящее время оставил проект и перешел на работу в Microsoft, этот язык практически не развивался в период с 2005 по 2008 год. Хотя Python по-прежнему уступает по темпам разработки таким скриптовым аналогам, как Groovy и Jython, тем не менее, он находит применение в коммерческих приложениях и входит в число скриптовых языков, официально поддерживаемых в WebSphere Application Server, коммерческом продукте IBM для платформы Java EE.
Clojure
Clojure – это чисто функциональный язык, представляющий собой диалект Lisp. В синтаксическом отношении он занимает промежуточное положение между Common Lisp и Scheme. Как и в Scala, в Clojure имеется встроенная поддержка многопоточности, что позволяет четко разграничивать неизменяемые и изменяемые функции. Этот язык разрабатывался как универсальный, он ориентирован на работу с общеязыковой исполняющей средой (CLR) Microsoft и JavaScript. Код Clojure компилируется непосредственно в байт-код Java, но остается динамическим и может осуществлять доступ к фреймворкам Java. Но, в отличие от большинства других скриптовых языков, используемых с виртуальной машиной Java, Clojure не является объектно-ориентированным языком.
Scala
Язык Scala часто называют «мультипарадигмальным», поскольку в нем комбинируются элементы, присущие различным направлениям философии программирования. В сущности, это чистый объектно-ориентированный язык с функциональными возможностями. Но его серьезное преимущество над традиционными подходами к программированию заключается в том, что в Scala широко поддерживается параллельное программирование. Кроме того, Scala обладает еще одним уникальным компонентом, отсутствующим во всех других языках, применяемых с JVM – так называемыми «акторами». Это еще один конструкт, предназначенный для параллельного программирования и встроенный в язык. Язык компилируется в оптимизированный байт-код, работающий, в сущности, так же быстро, как и нативный код Java.
Kotlin
Kotlin – это универсальный статически типизированный язык, компилируемый в байт-код Java и JavaScript. Kotlin разрабатывался как современный выразительный язык. Он нацелен на создание быстродействующих приложений и компилируется так же быстро, как и Java. Kotlin поддерживается в интегрированной среде разработки JetBrains IntelliJ Idea посредством специального плагина (подключаемого модуля).
Rhino
Rhino – это свободный движок JavaScript (с открытым кодом), написанный на Java. Rhino поддерживается компанией Mozilla и обладает специальной оболочкой JavaScript для исполнения скриптов. Rhino часто встраивается в приложения Java, чтобы обеспечивать выполнение скриптов для конечных пользователей. JavaAdapters, встроенные в Rhino, позволяет реализовать практически любой интерфейс Java или дополнять классы Java.
Ceylon
Ceylon – это универсальный императивный статически типизированный язык, который также характеризуется блочной структурой и объектно-ориентированной организацией. Принято говорить, что на него «значительно» повлиял язык Java. Этот язык ориентирован на командную разработку крупных программ. Проект Ceylon ведется компанией Red Hat, в нем специально культивируется удобочитаемость, предсказуемость, поддерживается «инструментальная оснастка» (toolability), модульность и мета-программируемость. По словам Гейвина Кинга, Ceylon – это не просто обычный компилятор. Кинг подчеркивает, что одной из стратегических целей проекта является создание нового Ceylon SDK (комплекта для разработки ПО), который сможет в перспективе заменить Java SDK.
Fantom
Fantom генерирует байт-код прямо во время исполнения и предназначен для работы с виртуальной машиной Java, платформой .NET или JavaScript в браузере. Это объектно-ориентированный язык, функционально он во многом схож с Groovy и JRuby, но не так гладко, как эти два языка, интегрирован с библиотеками Java. Этот недостаток Fantom компенсирует отчасти собственными обширными библиотеками. Кроме того, в Fantom имеется встроенная поддержка конкурентного программирования с применением акторов. Реальные результаты в работе с Fantom достигаются значительно быстрее, если изучить отличную документацию по данному языку, предоставляемую на его сайте.
Источник: 9 killer programming languages for the JVM by Paul Krill and Andrew Binstock, InfoWorld
Где изучать Scala тем, кто уже что-то знает. Собрали множество курсов и платформ (июнь, 2023)
Язык программирования Scala — один из самых популярных коммерческих языков, который используют Twitter, LinkedIn, WhatsApp. Scala-разработчики, возможно, не так востребованы как их коллеги, пишущие на Python или Java, но хороший специалист будет цениться высоко, а знание языка станет безусловным плюсом в резюме. В помощь тем, кто хочет пополнить ряды адептов Scala, Digitaldefynd составил (а мы дополнили) подборку онлайн-курсов и тренингов разных уровней сложности.
Что стало с самым популярным языком 2010-х? Рассказываем о взлётах и падениях Scala
Scala похож на Lady Gaga: резкий взлет в 2010-х, затем спад ажиотажа и трансформация в живую легенду рынка с армией поклонников. Специалисты из Evolution Юрис Крикис, Scala and TypeScript Department Lead, и Андрей Бобылёв, Minsk Development Department Lead, раскрывают подробности этой IT-истории.
Релоцировались? Теперь вы можете комментировать без верификации аккаунта.