LINUX.ORG.RU

Релиз Groovy 1.8

 ,


0

2

После четырех бета-версий и четырех кандидатов в релизы команда разработчиков Groovy объявила о выходе новой стабильной ветки открытого динамического скриптового языка для Java Virtual Machine (JVM) - Groovy 1.8, распространяемого под лицензией Apache license 2.0.

В официальном заявлении руководитель проекта Guillaume Laforge отмечает, что Groovy 1.8 несет на борту огромное число нововведений и улучшений. Данные нововведения, в частности, включают:

  • Новая функция command chain в области улучшения синтаксиса, заключающаяся в возможности записи обращений ко вложенным методам цепочкой без необходимости ставить круглые скобки и точки, что позволяет в ряде случаев писать код в виде вполне понятных предложений
  • Новые директивы компилятора для преобразования AST-дерева, создаваемого компилятором перед переводом текста программы непосредственно в байт-код. Это уменьшает объем обрабатываемого кода за счет включения готовых стандартных решений
  • Встроенная поддержка JSON, удобная при написании и чтении кода, с хорошей реализацией печати данных при отладке
  • Частичная поддержка JDK7, в частности diamond-оператора, упрощающего работу со встроенными типами:
    List<List<String>> myList=new ArrayList<>();
    То есть теперь вам не придется указывать определение <List<String>> с обоих сторон при создании объекта класса. В Groovy 1.9 поддержка JDK7, разумеется, будет более богатой.
  • Увеличенная производительность при работе с целыми числами и при прямом обращении к методам
  • Различные улучшения при использовании замыканий (closure)
  • Включение в состав поставки библиотеки GPars версии 0.11 для одновременного асинхронного выполнения задач работе программ
  • Многочисленные улучшения в плане производительности

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

Скачать

>>> Подробности

★★★★★

Проверено: maxcom ()

Ответ на: комментарий от BillDver

А что мешает явно приводить типы при сложении кирпечей и ящиков

Что могут и не привестись. В динамическом языке в списке (массиве) элементов могут быть объекты, у которых есть метод, например render, а может и не быть. И нет необходимости требовать чтобы все методы имели один интерфейс. В динамическом языке можно написать такую конструкцию:

for my $obj(@array) { eval {$obj->render} }
И ничего не сломается, у кого есть — отработает. Пример немного притянут за уши, но в реальности подобные вещи очень полезны.

Casus ★★★★★ ()
Ответ на: комментарий от BillDver

>А использование массивов с разными типами сильно запутывает программу.

Отнюдь не всегда. Главное писать просто и очевидно.

Как раз один массив с разными типами может быть намного понятнее и компактнее, чем куча преобразований в массив с одним типом.

anonymous ()
Ответ на: комментарий от vada

Даже не пытайтесь убедить меня что геморой это удобно и хорошо. Я:)

Да, ты индус неосилятор :}

Deleted ()
Ответ на: комментарий от Casus

Duck typing совершенно не противоречит статической типизации.

scala> class Page {
     | def render = ()
     | }
defined class Page

scala> class Scene {
     | def render = ()
     | }
defined class Scene

scala> type T = {def render: Unit}
defined type alias T

scala> val lst = List[T](new Page, new Scene, new Scene, new Page, new Page)
lst: List[T] = List(Page@96985e, Scene@ed7d11, Scene@1adff28, Page@4ad14c, Page@1f2e41d)

scala> lst foreach (x => x.render)


Zenom ★★★ ()
Ответ на: комментарий от Zenom

>Duck typing совершенно не противоречит статической типизации.

А утиная типизация разве не динамическая по сути? Вот у вас List совершенно нестатический в данном контексте.

anonymous ()
Ответ на: комментарий от anonymous

>А утиная типизация разве не динамическая по сути?

Да и не по сути — это вид динамической типизации.

KRoN73 ★★★★★ ()
Ответ на: комментарий от anonymous

Как раз таки статическая. Наличие метода render проверяется компилятором и гарантируется для кода, который успешно скомпилировался.

Zenom ★★★ ()

> В Groovy 1.9 поддержка JDK7

И чем ЭТО лучше, чем Java? Понтами?

Bioreactor ★★★★★ ()
Ответ на: комментарий от KRoN73

> Кстати, а под JVM водятся нормальные языки, в которых можно и статическую, и динамическую типизацию использовать? Как Boo под .NET?

Дык, тот же груви:

var a = 1 // Динамическая типизация

Integer a = 1 // Статическая типизация

turtle_bazon ★★★★★ ()
Ответ на: комментарий от Zenom

Duck typing совершенно не противоречит статической типизации.

он не является статической типизацией совсем.

Вообще, я пример привёл в расчёте на то, чтобы показать какие преимущества динамическая типизация и вообще динамический код даёт для того, чтобы сделать удобный фреймворк.

Casus ★★★★★ ()

>> Новая функция command chain в области улучшения синтаксиса, заключающаяся в возможности записи обращений ко вложенным методам цепочкой без необходимости ставить круглые скобки и точки

Встроенная поддержка JSON
Частичная поддержка JDK7, в частности diamond-оператора, упрощающего работу со встроенными типами

давно есть в scala. зачем это медленное говно...

qwerky ()
Ответ на: комментарий от Casus

Обычный индусовский подход - «авось сработает, не сработает - пох». В надежных проектах такое не проходит. Попадется такая строчка среди сотен тысяч других - будете отлаживаться до усрачки. Стат.типизация рулит.

qwerky ()
Ответ на: комментарий от KRoN73

В принципе, картина ожидаемая. Интересно еще было бы посмотреть, как в OCaml работает его «О».

buddhist ★★★★★ ()
Ответ на: комментарий от Casus

>он не является статической типизацией совсем.

OCaml забился в угол и рыдает.

Zenom ★★★ ()
Ответ на: комментарий от MegoPups

А разве в те времена она не представляла собой наколеночную поделку?

buddhist ★★★★★ ()
Ответ на: комментарий от KRoN73

>> А утиная типизация разве не динамическая по сути?

Да и не по сути — это вид динамической типизации.

Пример Zenom вполне является «утиной типизацией»... или приведи такое определение «утиной тпизации», которому он противоречит.

tailgunner ★★★★★ ()

Сколько комментов и ни одного по теме. Несчастные, убогие, кодеры ни разу в глаза не видевшие Груви пытаются с космической глупостью рассуждать о чем-то вообще. Да вы вообще все гавно, ваше место не говнокоды в офисах месить, а на заводах болты вытачивать.

SebastianPoeiro ()
Ответ на: комментарий от qwerky

>Попадется такая строчка среди сотен тысяч других - будете отлаживаться до усрачки. Стат.типизация рулит.

Какие же у вас там индусы работают, а. И, кстати, eval не обязателен для получения выгоды с динамической типизации.

Deleted ()
Ответ на: комментарий от anatolat

>Почему бы не сделать так:

var myList = new List<List<String>>()

Это C#
сейчас пару местных кондрашка хватит.

grim ★★★☆ ()
Ответ на: комментарий от SebastianPoeiro

> Да вы вообще все гавно, ваше место не говнокоды в офисах месить, а на заводах болты вытачивать.

Хренасе приступ батхерта.

tailgunner ★★★★★ ()

Java не нужен, ибо есть .NET. Как всем прекрасно известно, Java морально устарел лет на 10 и пользуются им как некрофилы, так и просто идиоты.

anonymous ()

Больше языков, хороших и разных. Не NETом же единным... А на сях и сях с плюсями теперь мало кто писать хочет. Только критичный к скорости исполнения системный софт имеет смысл писать на таких древних языках, а так больше оперативы, больше ядер и получаем рай для разработчика. Почему только ни .NET, ни Java разрабы не создали систему компиляции из ЯП в JIT, а из него в native-код для разных платформ? Ведь можно же создать компилятор из примитивного асcеблерподобного-JIT в норальный код для native-платформы. С возможностью прилинковки виртуальной машины для исполнения eval-кода в динамических языках при необходимости.

lucentcode ★★★★★ ()
Ответ на: комментарий от anonymous

Много плюшек!=качественный продукт. Java создавалась для корпоративных нужд, совместимость и надёжность для её разрабов важней, чем сомнительные синтаксические плюшки. Да и .NET только для Windows. Mono такое убогое, что только какие-то специально заточенные под него приложения и может выполнять. А с Java вы получаете возможность написать программу один раз, собрать, и запускать на любой платформе, под которую существует JVM. Или вы думаете, что Microsoft откроет свою платформу? Они всегда делают как у конкурентов, добавляют немного «сахару» сверху, переманивая людей с похожих технологий, а потом уничтожают конкурентов. Вспомним Netscape и Осла, Mac OS и Windows 2.x,3.x и 9x, OS/2 и Windows NT, и прочие истории, в которых был задействован промышленный шпионаж, шантаж, подкуп судьи и прочие грязные методы ведения бизнеса. Вы верите, что MS не кинет всех, прижав к ногтю злочастное Mono? У меня стоит около десятка Java-приложений, и не одного на Mono. Не люблю велосипеды. Хоть Java и жрёт немного больше оперативы , но зато она свободна. Да и свободного IDE для .NET сравнимого с Eclipse не найти, это факт. Даже Visual Studio платный, и тот не дотягивает.

lucentcode ★★★★★ ()
Ответ на: комментарий от lucentcode

>Да и свободного IDE для .NET сравнимого с Eclipse не найти, это факт. Даже Visual Studio платный, и тот не дотягивает.

Express версии никто не отменял. А кстати, дотягивает ли до возможностей VS 2010 ваши эклипсы и нэтбинсы? оНИ ЖЕ УЩЕРБНЫ, vs от ms наиболее удобная ide.

Mono такое убогое, что только какие-то специально заточенные под него приложения и может выполнять. А с Java вы получаете возможность написать программу один раз, собрать, и запускать на любой платформе, под которую существует JVM.

бред полный. Дохрена было случаев,что написанное на java по под одну ось не работало нигде кроме той же оси.

Много плюшек!=качественный продукт. Java создавалась для корпоративных нужд, совместимость и надёжность для её разрабов важней, чем сомнительные синтаксические плюшки.

Попробуйте LINQ в .NET. Офигенная штука. Когда что то аналогичное появится в java?

anonymous ()
Ответ на: комментарий от anonymous

>>оНИ ЖЕ УЩЕРБНЫ, vs от ms наиболее удобная ide.

так что же вы здесь забыли ?

Дохрена было случаев,что написанное на java по под одну ось не работало

у меня пока обратные примеры, практически все что пробовал работало под несколькими версиями Lin/Win. Причем в JRE есть все что нужно для работы. Никаких близких альтернатив пока не наблюдается.

qwerky ()
Ответ на: комментарий от qwerky

>Никаких близких альтернатив пока не наблюдается.

А нужны ли эти альтернативы? Смысл писать кроссплатформенное ПО, если доля линукса на рынке персональных компьютеров 1%?

anonymous ()

Нужно!

все долбаебы, крицчащие не нужно - не нужны!

djenterprise ()
Ответ на: комментарий от anonymous

А кстати, дотягивает ли до возможностей VS 2010 ваши эклипсы и нэтбинсы?

А кстати, дотягивает ли до возможностей Eclipse или NetBeans ваша студия? А до Idea?

Дохрена было случаев,что написанное на java по под одну ось не работало нигде кроме той же оси.

Обычно там написано что-то типо такого

String s = "c:\"+arg;

Попробуйте LINQ в .NET. Офигенная штука. Когда что то аналогичное появится в java?

Кажется реализаций 6 было. Но я бы не ставил на них, не очень стабильны.

Попробуйте Spring, Hibernate, JSF/PrimeFaces, Maven. Когда что-то стабильное, а не просто клон-унылая поделка будет готово для .NET? Разные контейнеры приложений умеем? Советую изучить Java, поработаь в корпоративном секторе чтобы не было глупых мыслей что .NET стоить хотя-бы упоминать. То, на что есть в .NET решение, в Java есть 10 разных решений с кучей фич

vertexua ★★★★☆ ()
Ответ на: комментарий от vertexua

>А кстати, дотягивает ли до возможностей Eclipse или NetBeans ваша студия? А до Idea?

Дотягивает и перетягивает. Ваши эклипсы, нэтбинмы и прочие айдии сосут раз 40 у VS 2010.

Попробуйте Spring, Hibernate, JSF/PrimeFaces, Maven.

Вы знаете, есть аналоги под .net, только более удобные и функциональные.

Кажется реализаций 6 было. Но я бы не ставил на них, не очень стабильны.

они лишь жалкая пародия на оригинал, не дотягивающие даже 20% от функционала оригинала

anonymous ()
Ответ на: комментарий от Zenom

В терминах Scala это называется structural typing, но тем не менее свою функцию выполняет отлично.

Алсо, все эти ваши duck typing-и не дружат с рефакторингом, переименовал имя метода и всё сломалось.

anonymous ()
Ответ на: комментарий от vertexua

Эка вы в кучу сложили Maven с Hibernate и все остальное... maven - прикольная штучка, пока не приходится переписать плагины или пока какойнибудь плагин не поломают в нужный момент... Ant более гибок, но не красывый... Hibernate - УГ! правда развивает смекалку и нестандартность мышления - особено когда надо отучить его тащит вместо выборки в одну строчку примерно половину базы

anonymous ()
Ответ на: комментарий от anonymous

Дотягивает и перетягивает. Ваши эклипсы, нэтбинмы и прочие айдии сосут раз 40 у VS 2010.

Много ЯП умеет? А кстати, где сосут?

Вы знаете, есть аналоги под .net, только более удобные и функциональные.

Какие? Пишите, будем использовать.

они лишь жалкая пародия на оригинал, не дотягивающие даже 20% от функционала оригинала

Ну естественно, что касается LINQ, то так и есть. Если мы говорим о синтаксических конструкциях, которые позволяют SQL-like манипуляции с БД, коллекциями и XML.

Правда есть JPA, HQL, JDOQL, но это другое, тут хоть у ребят хватило разума не загрязнять синтаксис языка новыми конструкциями, а в качестве платы за это есть то, что выражение хранится в строке, вместо проверки компилятором. Это отличие. Но конечно сделаны они на друго уровне, JPA - стандарт, есть много реализаций, можно выбирать. И каждая работает с любой БД. Кстати, есть в C# механизм JSR? Ах, да, забыл, анальная окупация.

Hibernate? Поддерживает реверсинжиниринг базы в сущности со всеми констрейнтами, десериализацией обьектов в из связаных таблиц или просто блобов, кастномным маппингом, стратегиями именования, умеет всякие Y/N прозрачно превращать в true, false и т.д.

vertexua ★★★★☆ ()
Ответ на: комментарий от anonymous

>Попробуйте LINQ в .NET. Офигенная штука. Когда что то аналогичное появится в java?

Никогда. LINQ писался отделом хаскеллистов. Никакой жаваотброс не осилит (хотя бы оплатить, да по двойному тарифу - из-за возможности запомоиться об жаву) аналогичную разработку.

anonymous ()
Ответ на: комментарий от anonymous

maven - прикольная штучка, пока не приходится переписать плагины или пока какойнибудь плагин не поломают в нужный момент...

было дело, сейчас у них песня с JUnit+Spring+Surefire, разрабы JUnit в версиях 4.4-4.8 в каждой версии ломали внутренне API, выбрасывали классы. Springговцы и Surefireовцы не успевали переделывать под их бред. На данный момент чтобы запустить последние версии этой тройки вместе нужно юзать форк Spring Test. Но это еденичный случай ССЗБ в виде разрабов JUnit.

Hibernate - УГ! правда развивает смекалку и нестандартность мышления - особено когда надо отучить его тащит вместо выборки в одну строчку примерно половину базы

Нормально все, мне только вот в JPA один момент не нравится, когда с UI приходит новая сущность для сохранения в БД, а она ссылается на сущность, которая есть уже в БД, но тоже пришла с UI, то сохранение или вываливается с ошибкой, что тот обьект не сохранили, а если каскадный PERSIST, то он вываливается с ошибкой сохранения того обьекта.

vertexua ★★★★☆ ()

А как же lua?

Оно тоже куда лучше, чем все эти монстрючие уродцы.

AVL2 ★★★★★ ()
Ответ на: комментарий от anonymous

>Никакой жаваотброс не осилит

Что, «дотнетотброс» илитнее? ;)

KRoN73 ★★★★★ ()

Забавно, еще никто в этом топике толком и не смог сравнить динамическую и статическую типизацию. Только толпа укурков, поделеная на 2 лагеря. Первый лагерь работал только со статической, воторой только с динамической типизацией. И каждый из лагерей утверждает, что только их выбор самый-самый правильный.

2ALL: Ну вам самим не смешно с детского сада, что вы здесь развели? :)

dizza ★★★★★ ()
Ответ на: комментарий от vertexua

Нормально все, мне только вот в JPA один момент не нравится, когда с UI приходит новая сущность для сохранения в БД, а она ссылается на сущность, которая есть уже в БД, но тоже пришла с UI, то сохранение или вываливается с ошибкой, что тот обьект не сохранили, а если каскадный PERSIST, то он вываливается с ошибкой сохранения того обьекта.

Ну я тебе уже писал где проблема. Но вы же как настоящие ссзб выбрали путь ленивых :) Мое личено мнение такое - софт делают не разово а с поддержкой на годы, поэтому выгоднее сразу не лениться и делать как надо.

dizza ★★★★★ ()
Ответ на: комментарий от dizza

> Только толпа укурков, поделеная на 2 лагеря. Первый лагерь работал только со статической, воторой только с динамической типизацией. И каждый из лагерей утверждает, что только их выбор самый-самый правильный.

По-моему, укурок здесь ты. Как минимум трое из этого топика работали и с динамической, и со статической типизациями.

tailgunner ★★★★★ ()
Ответ на: комментарий от anonymous

> Попробуйте LINQ в .NET. Офигенная штука. Когда что то аналогичное появится в java?

ага, офигенная. правда тормозит так, что хочется плакать кровью.

anonymous ()
Ответ на: комментарий от anonymous

> Заработай! Попрошайка...

тогда закрой хлебало ^_^

anonymous ()
Ответ на: комментарий от anonymous

>ага, офигенная. правда тормозит так, что хочется плакать кровью.

LINQ тормозит

I lold! Ты смотри жаву не запусти ненароком, а то кровяным потоком шары разорвет.

anonymous ()
Ответ на: комментарий от KRoN73

>Кстати, а под JVM водятся нормальные языки, в которых можно и статическую, и динамическую типизацию использовать? Как Boo под .NET?

groovy++ умеет разделять на уровне методов, например

thevery ★★★★ ()
Ответ на: комментарий от anonymous

> Попробуйте LINQ в .NET. Офигенная штука. Когда что то аналогичное появится в java?

findAll в сабже ;)

thevery ★★★★ ()
Ответ на: комментарий от anonymous

Начсчёт LINQ согласен, только как его пробовать то на Linux? И наличие клёвой фичи в .NET не делает его свободным и кроссплатформенным. А Mono убого,и по сравнению с Java жуткий тормоз. Посмотрите даже на http://shootout.alioth.debian.org/u32q/csharp.php, Mono сливает явно, хоть и писать на C# получается быстрее, а исходного кода меньше. Но синтаксический сахар делает язык более сложным, помнить все примочки языка скоро будет сложней, чем на плюсах писать. Постоянное добавление фичей делает язык очень раздутым, и ломает совместимость с средой .NET предыдущих выпусков. Корпоративного уровня ПО должно развиваться эволюционно, а не революционным мтодом, как это любят в Редмонде.

lucentcode ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.