Groovy –  другой взляд на  Java Вадим Войтюк [email_address] http://voituk.kiev.ua/
<ul><li>современный динамический язык для платформы  Java </li></ul><ul><li>вся мощь  JVM  и  JRE </li></ul><ul><li>syntax...
public class Filter { public static void main( String[] args) { List list = new ArrayList(); list.add( &quot;Rod&quot; ); ...
String mas[] = {”Rod”, “Neeta”, “Eric”, “Missy”}; List l = new LinkedList(Arrays.asList(mas)); for(Iterator i = l.iterator...
def list = [&quot;Rod&quot;, &quot;Neeta&quot;, &quot;Eric&quot;, &quot;Missy&quot;] def shorts = list.findAll{ it.size() ...
<ul><li>JRE +  Огромное количесто уже написаного  Java- кода   (библиотеки, фреймворки, среды, ...) </li></ul><ul><li>Дина...
<ul><li>Динамическая и опционально статическая типизация int a = 2 def str = &quot;Hello&quot; </li></ul><ul><li>С интакси...
<ul><li>Оператор ?.  ( safe navigation )   и  ?:  (elvis operator) Obj?.method1()?.method2()?.method()… def x = (a!=null?a...
<ul><li>String </li></ul><ul><li>  - contains(), count(), execute(), padLeft(), center(), </li></ul><ul><li>  - padRight()...
(new  MarkupBuilder ()).records() { car(name:'HSV Maloo', make:'Holden', year:2006) { country('Australia') record(type:'sp...
<records> <car name='HSV Maloo' make='Holden' year='2006'> <country>Australia</country> <record type='speed'>Pickup Truck,...
<ul><li>Синтаксическая поддержка иерархических структур </li></ul><ul><li>  - XHTML </li></ul><ul><li>  - XML </li></ul><u...
<ul><li>GPath  -  XPath - like  запросы   по композиции обьектов </li></ul><ul><li>Extended Xml processing </li></ul><ul><...
<ul><li>Компилятор + Интерпретатор  (groovyc/groovy) </li></ul><ul><li>Консоль+инспектирование  (groovyConsole/groovysh + ...
Идеологическая поддержка Groovy –  другой взляд на  Java Киев,  15  марта 2008 г.
<ul><li>http://groovy.codehaus.org </li></ul><ul><li>http://groovy.dzone.com  </li></ul><ul><li>Книга  “Groovy in Action” ...
<ul><li>Вопросы можно слать на  e-mail [email_address] </li></ul>Вопросы? Groovy –  другой взляд на  Java Киев,  15  марта...
Upcoming SlideShare
Loading in …5
×

Groovy presentation on Exception #7 conference

4,067 views

Published on

http://voituk.kiev.ua/groovy-presentation-for-exception-7

Published in: Technology, News & Politics
1 Comment
0 Likes
Statistics
Notes

  • egfe

    <b>[Comment posted from</b> http://voituk.kiev.ua/groovy-presentation-for-exception-7/]
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Be the first to like this

No Downloads
Views
Total views
4,067
On SlideShare
0
From Embeds
0
Number of Embeds
2,779
Actions
Shares
0
Downloads
44
Comments
1
Likes
0
Embeds 0
No embeds

No notes for slide

Groovy presentation on Exception #7 conference

  1. 1. Groovy – другой взляд на Java Вадим Войтюк [email_address] http://voituk.kiev.ua/
  2. 2. <ul><li>современный динамический язык для платформы Java </li></ul><ul><li>вся мощь JVM и JRE </li></ul><ul><li>syntax-sugar из Python, Ruby, Smalltalk </li></ul><ul><li>современные парадигмы программирования </li></ul><ul><li>меньше кода «скучного» кода </li></ul><ul><li>поддержка концепции DSL (Domain Specific Languages) </li></ul><ul><li>повышение продуктивности разработчиков </li></ul><ul><li>упрощение автоматизированного тестирования </li></ul><ul><li>сохранение инвестиций в Java- технологии </li></ul>Groovy – это … Groovy – другой взляд на Java Киев, 15 марта 2008 г.
  3. 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. 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. 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. 6. <ul><li>JRE + Огромное количесто уже написаного Java- кода (библиотеки, фреймворки, среды, ...) </li></ul><ul><li>Динамическая типизация, замыкания, билдеры GroovyBeans и другой syntax-sugar … </li></ul><ul><li>Метапрограммирование </li></ul><ul><li>Те же механизмы и инструменты поддержки процесса разрабоки </li></ul><ul><li>Grails – наш ответ RoR подходу </li></ul><ul><li>Прост в изучении и понимании </li></ul><ul><li>Groovy - это не JPython, не JRuby, не BeanShell </li></ul>Особенности Groovy Groovy – другой взляд на Java Киев, 15 марта 2008 г.
  7. 7. <ul><li>Динамическая и опционально статическая типизация int a = 2 def str = &quot;Hello&quot; </li></ul><ul><li>С интаксис для списков, хешей, массивов, RegExp -ов .. . def myMap = [&quot;Neta&quot;:33, &quot;Eric&quot;:35, new Date()] (&quot;1234567&quot; =~ /[0-9]+/).each {println it} </li></ul><ul><li>Работа с свойствами обьекта как с коллекциями assert document.all[“form”]==document.all.form </li></ul><ul><li>Замыкания myMap.each { name, age -> println &quot;$name is $age years old&quot; } </li></ul><ul><li>Перегрузка операторов + , - , /, * , <<, >> , [], ... </li></ul>Основы синтаксиса Groovy – другой взляд на Java Киев, 15 марта 2008 г.
  8. 8. <ul><li>Оператор ?. ( safe navigation ) и ?: (elvis operator) Obj?.method1()?.method2()?.method()… def x = (a!=null?a:b) => def x = a?:b </li></ul><ul><li>Категории и Expando - расширение ЛЮБОГО класса , даже final </li></ul><ul><li>Template Engine аля Velocity </li></ul><ul><li>Default Parameters void hello(name=&quot;World&quot;) {...} </li></ul><ul><li>Currying – замашки на Функциональное Программирование </li></ul><ul><li>Aliases def p = System.out.&println; p(&quot;Hello“) </li></ul><ul><li>Duck typing и приведение к интерфейсу (оператор AS ) </li></ul>Расширенные возможности Groovy – другой взляд на Java Киев, 15 марта 2008 г.
  9. 9. <ul><li>String </li></ul><ul><li> - contains(), count(), execute(), padLeft(), center(), </li></ul><ul><li> - padRight(), reverse(), tokenize(), each(), etc. </li></ul><ul><li>Collection </li></ul><ul><li> - count(), collect(),join(),each(),reverseEach(), </li></ul><ul><li> - find/All(), min(), max(), inject(), sort(),etc. </li></ul><ul><li>File </li></ul><ul><li>- eachFile(), eachLine(), withPrintWriter(), write(), getText() ... </li></ul><ul><li>Методы можно добавлять самостоятельно </li></ul>GDK – JDK на стероидах Groovy – другой взляд на Java Киев, 15 марта 2008 г.
  10. 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. 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. 12. <ul><li>Синтаксическая поддержка иерархических структур </li></ul><ul><li> - XHTML </li></ul><ul><li> - XML </li></ul><ul><li> - Ant </li></ul><ul><li> - Swing </li></ul><ul><li> - SWT - Hibernate Criteria </li></ul><ul><li>Возможность добавить свой Builder </li></ul><ul><li>- Objects </li></ul><ul><li>- GraphicsBuilder </li></ul><ul><li>- GraphBuilder </li></ul>Groovy Builder- ы – их есть... Groovy – другой взляд на Java Киев, 15 марта 2008 г.
  13. 13. <ul><li>GPath - XPath - like запросы по композиции обьектов </li></ul><ul><li>Extended Xml processing </li></ul><ul><li>Groovy SQL – расширение JDBC </li></ul><ul><li>Встроенный Ant </li></ul><ul><li>Grapplet </li></ul><ul><li>Groovlet, GSP, RESTlet – наш ответ Servlet -ам , JSP и REST </li></ul><ul><li>XML-RPC & GroovyWS & Gdata & Jabber RPC </li></ul><ul><li>GroovyMock & JUnit & TestNG и другие.. </li></ul><ul><li>JSR 223: Scripting for the Java Platform </li></ul><ul><li>Groovy Scriptom – интеграция с COM/COM+ </li></ul>Что ещё может Groovy? Groovy – другой взляд на Java Киев, 15 марта 2008 г.
  14. 14. <ul><li>Компилятор + Интерпретатор (groovyc/groovy) </li></ul><ul><li>Консоль+инспектирование (groovyConsole/groovysh + inspect) </li></ul><ul><li>Ant Task + Maven Plugin </li></ul><ul><li>Плугины к популярным IDE: Eclipse, IDEA, Oracle JDeveloper, Netbeans </li></ul><ul><li>… и редакторам: JEdit, Emacs, UltraEdit, vim </li></ul>Инструментальная поддержка Groovy – другой взляд на Java Киев, 15 марта 2008 г.
  15. 15. Идеологическая поддержка Groovy – другой взляд на Java Киев, 15 марта 2008 г.
  16. 16. <ul><li>http://groovy.codehaus.org </li></ul><ul><li>http://groovy.dzone.com </li></ul><ul><li>Книга “Groovy in Action” </li></ul><ul><li>Книга “Scripting in Java” </li></ul><ul><li>Groovy / Grails maillist </li></ul><ul><li>http://voituk.kiev.ua/groovy </li></ul>Источники знаний Groovy – другой взляд на Java Киев, 15 марта 2008 г.
  17. 17. <ul><li>Вопросы можно слать на e-mail [email_address] </li></ul>Вопросы? Groovy – другой взляд на Java Киев, 15 марта 2008 г.

×