Статьи

Groovy заменит язык Java в качестве доминирующего языка

Выслушай меня. Через 2-3 года мы увидим явные признаки того, что Groovy заменяет язык Java в качестве доминирующего языка в JVM. На самом деле превосходить по численности язык Java будет очень сложно, учитывая его 10-летнюю историю. Но тенденция будет явно с Groovy.

Я понимаю, что это звучит как необычное утверждение, возможно, даже звучит безосновательно. Но это не так. Недавно я смирился с возросшей адаптацией Groovy как языка программирования. Прежде чем изложить свои аргументы в поддержку все более важной роли Groovy, позвольте мне сначала рассказать о некоторой истории языка Groovy.

Проект Groovy долгое время был несбыточной мечтой. Groovy — дитя мечты Джеймса Страчана, экстравагантного разработчика с открытым исходным кодом и провидца. В ожидании задержанного рейса он играл с Python и нашел его таким классным языком, что решил, что JVM должен иметь такой же язык.

Groovy всегда был тесно связан с языком Java. Не только синтаксис Groovy похож и часто идентичен синтаксису Java, Groovy является единственным языком вместе со Scala и, конечно, Java, который всегда компилируется в настоящий байт-код Java. Это означает, что классы Groovy всегда являются истинными классами Java.

Но Groovy знает грубую историю. Я уверен, что многие люди предпочли бы не вспоминать, но Groovy был на грани провала в 2003/2004. Он получил много плохой прессы тогда и был списан многими людьми, включая людей, которые были вовлечены в проект. Groovy прошел через эту бурю благодаря тяжелой работе команды очень преданных людей. В начале 2007 года был выпущен Groovy 1.0, и теперь мы с нетерпением ждем Groovy 1.6 и Groovy 2.0.

Из периода почти полного провала Groovy я помню, что у всех было мнение о том, каким должен быть Groovy. Большинству людей нравился язык Groovy, но он должен был больше походить на Perl или больше на Ruby, более функциональный, меньше Java, больше Java. Каждую неделю в списках рассылки происходило огромное обсуждение того, какие функции должен поддерживать Groovy. Эта глава в истории Groovy позади.

С 2005 года команда Groovy перегруппировалась и усердно работала над улучшением языка. Они включили много предложений и продолжают делать это до сегодняшнего дня. Но сегодня вы не найдете много дискуссий о том, в каком направлении следует идти Groovy. Мы прошли 1.0, язык стабилен.

Groovy — это динамический язык, то есть Groovy не выполняет проверку типов переменных, если вы этого не хотите. Groovy может выполнять проверку типов, но это необязательно. Вот пример кода Groovy, который не выполняет проверку типов:

def list = []
assert list.empty

Вот тот же код с проверкой типа:

List list = []
assert list.empty

В некотором смысле, язык Java — это не динамический язык, который всегда выполняет проверку типов.

Итак, почему я думаю, что Groovy заменит язык Java как доминирующий язык? Я разобью мои аргументы на две категории.

Во-первых, почему язык Java не останется доминирующим языком:

  • Сообщество Java-языков погружается в глубокий кризис из-за перемен. Есть строка о том, нужно ли добавлять замыкания к языку Java, и какое предложение следует выбрать. Это напоминает мне историю Groovy. При каждом изменении на языке Java инструмент поставщиков имеют для адаптации с ним . Это медленный процесс, и предложения по закрытию, которые я видел , не так эффективны, как замыкания на других языках , включая Groovy. , Добавление такого рода функций может произойти пару раз. Однако давление для консолидации будет возрастать. К тому времени, когда это произойдет, мы в 2011 году. Язык Java будет иметь новые функции за счет нескольких крупных инвестиций со стороны многих сторон, которые будут становиться все более нетерпеливыми.
  • Изменения языка Java обусловлены Sun и маркетингом. C # получает аннотации, Java должна иметь аннотации. C # получает замыкания, Java должна иметь замыкания. Видишь шаблон? Это не служит сообществу пользователей Java. На самом деле, мы полностью закрыты.
  • Язык Java будет разветвлен. Поскольку некоторые люди будут все больше разочаровываться тем, как управляется язык Java, существует реальная вероятность того, что язык Java будет разветвлен, даже если это будет сделано только ради создания прототипов или создания точки зрения. Это может быть воспринято как опасное или, по крайней мере, заставить некоторых людей нервничать, еще больше усиливая точку зрения на культуру проектирования.
  • Статическая типизация — отличная функция, и она нужна каждому объектно-ориентированному языку. Это не так здорово, когда нет альтернативы. Например, маловероятно, что в java.util.Collectionинтерфейс будут добавлены новые методы для поддержки замыканий. Для Groovy работа с новыми методами java.util.Collectionне будет проблемой. Это чувство застревания с определенными типами усилит чувство, что язык Java может оказаться в тупике.

Так почему же Groovy должен стать любимцем всех, особенно сейчас, когда Sun официально поддерживает JRuby? А как насчет Скала?

  • Sun также поддерживает Groovy. Некоторые из их сотрудников усердно работают над плагином Groovy для среды IDE NetBeans .
  • Из Groovy, JRuby, Scala именно Groovy наиболее близок к исходному синтаксису Java.
  • Java всегда должна была быть динамическим языком. Groovy дает нам представление о том, каким мог быть язык Java.
  • Поддержка IDE для Groovy будет очень впечатляющей через год или даже меньше, что значительно повышает вероятность ее интеграции в проекты.
  • Динамические языки могут иметь очень хорошую поддержку IDE, такую ​​как обнаружение типов и завершение кода. Если Visual Studio может иметь отличную интеграцию для F #, то же самое возможно и для JRuby и Groovy. На самом деле плагин IDE NetBeans для JRuby уже впечатляет.
  • Groovy предлагает совместную компиляцию Java , то есть файлы .java и .groovy компилируются одновременно. Таким образом, классы Java могут расширять классы Groovy без проблем.
  • По мере улучшения поддержки Groovy IDE — что уже неплохо для IntelliJ — все больше и больше фреймворков для Java будут написаны — по крайней мере частично — в Groovy. Это уже происходит . Не ожидайте, что то же самое случится с JRuby. Это может случиться с Скалой.
  • Через два-три года производительность динамических языков, таких как JRuby и Groovy, будет эквивалентна чистому Java-коду.
  • Grails 1.0 — это огромный шаг для сообществ Grails и Groovy, но это маленький шаг по сравнению с тем, что нас ожидает. И с точки зрения Грааля, и с точки зрения новых идей.
  • Поскольку Groovy начинает играть все большую роль в разработке программного обеспечения, все большее число разработчиков будут затронуты. Думайте о Grails, думайте о себе, думайте о каком-то новом использовании Groovy самостоятельно.
  • Есть неподдельный интерес к Groovy и Grails, и он растет. Сейчас наш момент, чтобы воспользоваться этими возможностями и облегчить людям начать использовать Groovy. Тенденция с нами, давайте сделаем это сильнее.

Это будет очень интересным 2 года для Groovy и Grails. Момент наш, и упадок языка Java должен стать ступенькой Groovy.

Удачного кодирования!

Примечание: как отмечает Грэм Роше в комментариях, Groovy в ближайшее время не будет конкурировать с Java на мобильных устройствах.