SlideShare a Scribd company logo
Groovy –  другой взляд на  Java Вадим Войтюк [email_address] http://voituk.kiev.ua/
современный динамический язык для платформы  Java вся мощь  JVM  и  JRE syntax-sugar  из  Python, Ruby, Smalltalk современные парадигмы программирования меньше кода «скучного» кода поддержка концепции  DSL   (Domain Specific Languages) повышение продуктивности разработчиков упрощение автоматизированного тестирования сохранение инвестиций в  Java- технологии Groovy –  это …   Groovy –  другой взляд на  Java Киев,  15  марта 2008 г.
public class Filter { public static void main( String[] args) { List list = new ArrayList(); list.add( &quot;Rod&quot; ); list.add( &quot;Neeta&quot; ); list.add( &quot;Eric&quot; ); list.add( &quot;Missy&quot; ); Filter filter = new Filter(); List shorts = filter.filterLongerThan( list, 4 ); System.out.println( shorts.size() ); Iterator iter= shorts.iterator(); while ( iter.hasNext() ) System.out.println( iter.next() ); } public List filterLongerThan( List list, intlength ) { List result = new ArrayList(); Iterator iter= list.iterator(); while ( iter.hasNext() ) { String item = (String) iter.next(); if ( item.length() <= length ) result.add( item );  } return result; } } Пример:  Java  код Groovy –  другой взляд на  Java Киев,  15  марта 2008 г.
String mas[] = {”Rod”, “Neeta”, “Eric”, “Missy”}; List l = new LinkedList(Arrays.asList(mas)); for(Iterator i = l.iterator(); i.hasNext();)  if(i.next().length() > 4)  i.remove(); System.out.println(l.size()); for(String s: l)  System.out.println(s); Пример:  Java  код (снова) Groovy –  другой взляд на  Java Киев,  15  марта 2008 г.
def list = [&quot;Rod&quot;, &quot;Neeta&quot;, &quot;Eric&quot;, &quot;Missy&quot;] def shorts = list.findAll{ it.size() <= 4 } println shorts.size() shorts.each {   println it  } Результат: 2 Rod Eric Пример:  Groovy  код Groovy –  другой взляд на  Java Киев,  15  марта 2008 г.
JRE +  Огромное количесто уже написаного  Java- кода   (библиотеки, фреймворки, среды, ...) Динамическая типизация, замыкания, билдеры  GroovyBeans  и другой  syntax-sugar … Метапрограммирование Те же механизмы   и инструменты поддержки процесса разрабоки Grails –  наш ответ  RoR  подходу Прост в изучении   и понимании Groovy -  это не  JPython,  не  JRuby,  не  BeanShell Особенности  Groovy Groovy –  другой взляд на  Java Киев,  15  марта 2008 г.
Динамическая и опционально статическая типизация int a = 2 def str = &quot;Hello&quot; С интаксис для списков, хешей, массивов,  RegExp -ов .. . def myMap = [&quot;Neta&quot;:33, &quot;Eric&quot;:35, new Date()] (&quot;1234567&quot; =~ /[0-9]+/).each {println it} Работа с свойствами обьекта как с коллекциями assert document.all[“form”]==document.all.form Замыкания myMap.each { name, age ->  println &quot;$name is $age years old&quot; } Перегрузка операторов + , - , /, * , <<, >> , [],  ... Основы синтаксиса Groovy –  другой взляд на  Java Киев,  15  марта 2008 г.
Оператор ?.  ( safe navigation )   и  ?:  (elvis operator) Obj?.method1()?.method2()?.method()… def x = (a!=null?a:b)  =>   def x = a?:b Категории и  Expando -  расширение ЛЮБОГО класса ,  даже  final Template Engine  аля  Velocity Default Parameters void hello(name=&quot;World&quot;) {...} Currying –  замашки на Функциональное Программирование Aliases def p = System.out.&println;  p(&quot;Hello“) Duck typing  и приведение к интерфейсу  (оператор  AS ) Расширенные возможности Groovy –  другой взляд на  Java Киев,  15  марта 2008 г.
String   - contains(), count(), execute(), padLeft(), center(),   - padRight(), reverse(), tokenize(), each(), etc. Collection   - count(), collect(),join(),each(),reverseEach(),   - find/All(), min(), max(), inject(), sort(),etc. File - eachFile(), eachLine(), withPrintWriter(), write(), getText() ... Методы можно добавлять самостоятельно GDK  –  JDK  на стероидах Groovy –  другой взляд на  Java Киев,  15  марта 2008 г.
(new  MarkupBuilder ()).records() { car(name:'HSV Maloo', make:'Holden', year:2006) { country('Australia') record(type:'speed', 'Pickup Truck, speed 271kph') } car(name:'P50', make:'Peel', year:1962) { 10.times{  country('Isle of Man')  } record(type:'size', ‘Street-Legal Car at   59 kg') } car(name:'Royale', make:'Bugatti', year:1931) { country('France') record(type:'price', 'Most Valuable Car at $15Mln') } } Groovy Builder- ы  –  Пример – Код  Groovy –  другой взляд на  Java Киев,  15  марта 2008 г.
<records> <car name='HSV Maloo' make='Holden' year='2006'> <country>Australia</country> <record type='speed'>Pickup Truck, speed 271kph</record> </car> <car name='P50', make='Peel', year='1962' > <country>Isle of Man<country> … …  // 10  раз <record type='size’>Street-Legal Car at   59 kg</record> … …  Groovy Builder- ы  –  Пример – Результат Groovy –  другой взляд на  Java Киев,  15  марта 2008 г.
Синтаксическая поддержка иерархических структур   - XHTML   - XML   - Ant   - Swing   - SWT  -  Hibernate Criteria  Возможность добавить свой Builder - Objects -  GraphicsBuilder - GraphBuilder Groovy Builder- ы  –  их есть... Groovy –  другой взляд на  Java Киев,  15  марта 2008 г.
GPath  -  XPath - like  запросы   по композиции обьектов Extended Xml processing Groovy SQL –  расширение  JDBC Встроенный  Ant  Grapplet Groovlet, GSP, RESTlet –  наш ответ  Servlet -ам , JSP  и  REST XML-RPC & GroovyWS & Gdata & Jabber RPC GroovyMock & JUnit & TestNG  и другие.. JSR 223: Scripting for the Java Platform Groovy Scriptom –  интеграция с  COM/COM+ Что ещё  может   Groovy? Groovy –  другой взляд на  Java Киев,  15  марта 2008 г.
Компилятор + Интерпретатор  (groovyc/groovy) Консоль+инспектирование  (groovyConsole/groovysh + inspect) Ant Task + Maven Plugin Плугины к популярным  IDE: Eclipse, IDEA, Oracle JDeveloper, Netbeans …  и редакторам: JEdit, Emacs, UltraEdit, vim Инструментальная поддержка Groovy –  другой взляд на  Java Киев,  15  марта 2008 г.
Идеологическая поддержка Groovy –  другой взляд на  Java Киев,  15  марта 2008 г.
http://groovy.codehaus.org http://groovy.dzone.com  Книга  “Groovy in Action” Книга  “Scripting in Java” Groovy / Grails maillist http://voituk.kiev.ua/groovy Источники знаний Groovy –  другой взляд на  Java Киев,  15  марта 2008 г.
Вопросы можно слать на  e-mail [email_address] Вопросы? Groovy –  другой взляд на  Java Киев,  15  марта 2008 г.

More Related Content

PPTX
SWIG — cоздание мультиязыковых интерфейсов для C/C++ библиотек
PDF
Язык программирования GO
PDF
Docker integration into Badoo
PDF
Ян Габис - RobotFramework: автоматизированое тестирование для всех
PDF
Про асинхронное сетевое программирование
PPT
Groovy On Grails
ODP
ekbpy'2012 - Марк Коренберг - Системное программирование на Питоне
PDF
Семь тысяч Rps, один go
SWIG — cоздание мультиязыковых интерфейсов для C/C++ библиотек
Язык программирования GO
Docker integration into Badoo
Ян Габис - RobotFramework: автоматизированое тестирование для всех
Про асинхронное сетевое программирование
Groovy On Grails
ekbpy'2012 - Марк Коренберг - Системное программирование на Питоне
Семь тысяч Rps, один go

What's hot (20)

PDF
Язык Lua — секреты производительности / Ник Заварицкий (Mail.ru)
PDF
Проникновение в Docker с примерами
PPTX
Оптимизация высоконагруженных ASP.NET приложений, работающих с MS SQL Server ...
PDF
Flask как хорошее решение для веб проекта
PPTX
Asynchrony and coroutines
PDF
Python и Cython
PDF
Беглый обзор "внутренностей" Python
PDF
Practical Python Packaging / Стас Рудаков / Web Developer Wargaming
PDF
Docker networking
PDF
Hunting for a C++ package manager
PDF
Fabric для управления серверами
PDF
Внедрение Docker в процесс разработки демонов. Доклад Константина Карпова на ...
PDF
Как ВКонтакте использует Go
PPT
The second
PDF
Rust - GDG DevFest Siberia 2016
PDF
Отладка в Python: 2016 edition
PPTX
Сергей Шамбир, Адаптация Promise/A+ для взаимодействия между C++ и Javascript
PPTX
Александр Тарасенко, Использование python для автоматизации отладки С/C++ код...
PDF
Internationalization and localization of the python applications with gettext...
PDF
Как мы делаем модули PHP в Badoo – Антон Довгаль
Язык Lua — секреты производительности / Ник Заварицкий (Mail.ru)
Проникновение в Docker с примерами
Оптимизация высоконагруженных ASP.NET приложений, работающих с MS SQL Server ...
Flask как хорошее решение для веб проекта
Asynchrony and coroutines
Python и Cython
Беглый обзор "внутренностей" Python
Practical Python Packaging / Стас Рудаков / Web Developer Wargaming
Docker networking
Hunting for a C++ package manager
Fabric для управления серверами
Внедрение Docker в процесс разработки демонов. Доклад Константина Карпова на ...
Как ВКонтакте использует Go
The second
Rust - GDG DevFest Siberia 2016
Отладка в Python: 2016 edition
Сергей Шамбир, Адаптация Promise/A+ для взаимодействия между C++ и Javascript
Александр Тарасенко, Использование python для автоматизации отладки С/C++ код...
Internationalization and localization of the python applications with gettext...
Как мы делаем модули PHP в Badoo – Антон Довгаль
Ad

Viewers also liked (8)

PPTX
6° b desalari.
 
PDF
Digital Methods and Tools for Hacking Journalism
PDF
Youtube Nation
PDF
marketing audit gratuito
PPTX
Bridging The Poverty Gap through inclusive innovation
PDF
JavaScript на диване
PDF
Blogging and the blogosphere through the eyes of software and search engines
PPTX
Visita a desalari 6° a
 
6° b desalari.
 
Digital Methods and Tools for Hacking Journalism
Youtube Nation
marketing audit gratuito
Bridging The Poverty Gap through inclusive innovation
JavaScript на диване
Blogging and the blogosphere through the eyes of software and search engines
Visita a desalari 6° a
 
Ad

Similar to Groovy presentation on Exception #7 conference (20)

PPT
Perl in practice
PPT
Js Http Request дмитрий котеров
PDF
Groovy presentation.
PPT
ZFConf 2010: Zend Framework and Multilingual
PDF
FrontTalks: Алексей Андросов (Яндекс), «Ошибки, которые мы любим»
ODP
Alexander Dymo - IT-клуб Николаева - April 2011 - Ruby: Beaty and the Beast
ODP
Alexander Dymo - IT Jam 2009 - Ruby: Beaty Or The Beast
PPT
ZFConf 2010: What News Zend Framework 2.0 Brings to Us
PPTX
Node.js введение в технологию, КПИ #ITmeetingKPI
PDF
Cpp0x Introduction
PDF
Rust - GDG DevFest 2016 Nizhny Novgorod
ODP
Igor Khotin - Domain Specific Languages
ODP
About Python
PPT
Rich UI on Dojo Toolkit and Zend Framework
ODP
Saint Perl 2009: CGI::Ajax demo
PDF
Архитектура кода нового 2ГИС Web API или куда мы дели MVC
PPTX
Bytecode
ODP
анализ кода: от проверки стиля до автоматического тестирования
PPTX
JavaScript как объектно-ориентированный язык программирования
PPTX
Perl in practice
Js Http Request дмитрий котеров
Groovy presentation.
ZFConf 2010: Zend Framework and Multilingual
FrontTalks: Алексей Андросов (Яндекс), «Ошибки, которые мы любим»
Alexander Dymo - IT-клуб Николаева - April 2011 - Ruby: Beaty and the Beast
Alexander Dymo - IT Jam 2009 - Ruby: Beaty Or The Beast
ZFConf 2010: What News Zend Framework 2.0 Brings to Us
Node.js введение в технологию, КПИ #ITmeetingKPI
Cpp0x Introduction
Rust - GDG DevFest 2016 Nizhny Novgorod
Igor Khotin - Domain Specific Languages
About Python
Rich UI on Dojo Toolkit and Zend Framework
Saint Perl 2009: CGI::Ajax demo
Архитектура кода нового 2ГИС Web API или куда мы дели MVC
Bytecode
анализ кода: от проверки стиля до автоматического тестирования
JavaScript как объектно-ориентированный язык программирования

Groovy presentation on Exception #7 conference

  • 1. Groovy – другой взляд на Java Вадим Войтюк [email_address] http://voituk.kiev.ua/
  • 2. современный динамический язык для платформы Java вся мощь JVM и JRE syntax-sugar из Python, Ruby, Smalltalk современные парадигмы программирования меньше кода «скучного» кода поддержка концепции DSL (Domain Specific Languages) повышение продуктивности разработчиков упрощение автоматизированного тестирования сохранение инвестиций в Java- технологии Groovy – это … Groovy – другой взляд на Java Киев, 15 марта 2008 г.
  • 3. public class Filter { public static void main( String[] args) { List list = new ArrayList(); list.add( &quot;Rod&quot; ); list.add( &quot;Neeta&quot; ); list.add( &quot;Eric&quot; ); list.add( &quot;Missy&quot; ); Filter filter = new Filter(); List shorts = filter.filterLongerThan( list, 4 ); System.out.println( shorts.size() ); Iterator iter= shorts.iterator(); while ( iter.hasNext() ) System.out.println( iter.next() ); } public List filterLongerThan( List list, intlength ) { List result = new ArrayList(); Iterator iter= list.iterator(); while ( iter.hasNext() ) { String item = (String) iter.next(); if ( item.length() <= length ) result.add( item ); } return result; } } Пример: Java код Groovy – другой взляд на Java Киев, 15 марта 2008 г.
  • 4. String mas[] = {”Rod”, “Neeta”, “Eric”, “Missy”}; List l = new LinkedList(Arrays.asList(mas)); for(Iterator i = l.iterator(); i.hasNext();) if(i.next().length() > 4) i.remove(); System.out.println(l.size()); for(String s: l) System.out.println(s); Пример: Java код (снова) Groovy – другой взляд на Java Киев, 15 марта 2008 г.
  • 5. def list = [&quot;Rod&quot;, &quot;Neeta&quot;, &quot;Eric&quot;, &quot;Missy&quot;] def shorts = list.findAll{ it.size() <= 4 } println shorts.size() shorts.each { println it } Результат: 2 Rod Eric Пример: Groovy код Groovy – другой взляд на Java Киев, 15 марта 2008 г.
  • 6. JRE + Огромное количесто уже написаного Java- кода (библиотеки, фреймворки, среды, ...) Динамическая типизация, замыкания, билдеры GroovyBeans и другой syntax-sugar … Метапрограммирование Те же механизмы и инструменты поддержки процесса разрабоки Grails – наш ответ RoR подходу Прост в изучении и понимании Groovy - это не JPython, не JRuby, не BeanShell Особенности Groovy Groovy – другой взляд на Java Киев, 15 марта 2008 г.
  • 7. Динамическая и опционально статическая типизация int a = 2 def str = &quot;Hello&quot; С интаксис для списков, хешей, массивов, RegExp -ов .. . def myMap = [&quot;Neta&quot;:33, &quot;Eric&quot;:35, new Date()] (&quot;1234567&quot; =~ /[0-9]+/).each {println it} Работа с свойствами обьекта как с коллекциями assert document.all[“form”]==document.all.form Замыкания myMap.each { name, age -> println &quot;$name is $age years old&quot; } Перегрузка операторов + , - , /, * , <<, >> , [], ... Основы синтаксиса Groovy – другой взляд на Java Киев, 15 марта 2008 г.
  • 8. Оператор ?. ( safe navigation ) и ?: (elvis operator) Obj?.method1()?.method2()?.method()… def x = (a!=null?a:b) => def x = a?:b Категории и Expando - расширение ЛЮБОГО класса , даже final Template Engine аля Velocity Default Parameters void hello(name=&quot;World&quot;) {...} Currying – замашки на Функциональное Программирование Aliases def p = System.out.&println; p(&quot;Hello“) Duck typing и приведение к интерфейсу (оператор AS ) Расширенные возможности Groovy – другой взляд на Java Киев, 15 марта 2008 г.
  • 9. String - contains(), count(), execute(), padLeft(), center(), - padRight(), reverse(), tokenize(), each(), etc. Collection - count(), collect(),join(),each(),reverseEach(), - find/All(), min(), max(), inject(), sort(),etc. File - eachFile(), eachLine(), withPrintWriter(), write(), getText() ... Методы можно добавлять самостоятельно GDK – JDK на стероидах Groovy – другой взляд на Java Киев, 15 марта 2008 г.
  • 10. (new MarkupBuilder ()).records() { car(name:'HSV Maloo', make:'Holden', year:2006) { country('Australia') record(type:'speed', 'Pickup Truck, speed 271kph') } car(name:'P50', make:'Peel', year:1962) { 10.times{ country('Isle of Man') } record(type:'size', ‘Street-Legal Car at 59 kg') } car(name:'Royale', make:'Bugatti', year:1931) { country('France') record(type:'price', 'Most Valuable Car at $15Mln') } } Groovy Builder- ы – Пример – Код Groovy – другой взляд на Java Киев, 15 марта 2008 г.
  • 11. <records> <car name='HSV Maloo' make='Holden' year='2006'> <country>Australia</country> <record type='speed'>Pickup Truck, speed 271kph</record> </car> <car name='P50', make='Peel', year='1962' > <country>Isle of Man<country> … … // 10 раз <record type='size’>Street-Legal Car at 59 kg</record> … … Groovy Builder- ы – Пример – Результат Groovy – другой взляд на Java Киев, 15 марта 2008 г.
  • 12. Синтаксическая поддержка иерархических структур - XHTML - XML - Ant - Swing - SWT - Hibernate Criteria Возможность добавить свой Builder - Objects - GraphicsBuilder - GraphBuilder Groovy Builder- ы – их есть... Groovy – другой взляд на Java Киев, 15 марта 2008 г.
  • 13. GPath - XPath - like запросы по композиции обьектов Extended Xml processing Groovy SQL – расширение JDBC Встроенный Ant Grapplet Groovlet, GSP, RESTlet – наш ответ Servlet -ам , JSP и REST XML-RPC & GroovyWS & Gdata & Jabber RPC GroovyMock & JUnit & TestNG и другие.. JSR 223: Scripting for the Java Platform Groovy Scriptom – интеграция с COM/COM+ Что ещё может Groovy? Groovy – другой взляд на Java Киев, 15 марта 2008 г.
  • 14. Компилятор + Интерпретатор (groovyc/groovy) Консоль+инспектирование (groovyConsole/groovysh + inspect) Ant Task + Maven Plugin Плугины к популярным IDE: Eclipse, IDEA, Oracle JDeveloper, Netbeans … и редакторам: JEdit, Emacs, UltraEdit, vim Инструментальная поддержка Groovy – другой взляд на Java Киев, 15 марта 2008 г.
  • 15. Идеологическая поддержка Groovy – другой взляд на Java Киев, 15 марта 2008 г.
  • 16. http://groovy.codehaus.org http://groovy.dzone.com Книга “Groovy in Action” Книга “Scripting in Java” Groovy / Grails maillist http://voituk.kiev.ua/groovy Источники знаний Groovy – другой взляд на Java Киев, 15 марта 2008 г.
  • 17. Вопросы можно слать на e-mail [email_address] Вопросы? Groovy – другой взляд на Java Киев, 15 марта 2008 г.