ภาษากรูวี

ภาษากรูวี (Groovy) เป็นภาษาโปรแกรมเชิงวัตถุสำหรับแพลตฟอร์มจาวาอันหนึ่ง นอกเหนือจากภาษาจาวา เราอาจมองกรูวีเป็นเหมือนภาษาสคริปต์สำหรับแพลตฟอร์มจาวาก็ได้ เนื่องจากมันมีคุณลักษณะหลายอย่างเหมือนกับภาษาสคริปต์อย่าง ไพทอน (Python) รูบี้ (Ruby) เพิร์ล (Perl) และ สมอลทอล์ค (Smalltalk). ในบางบริบท, เราจะใช้ชื่อ JSR 241 เพื่อเรียกภาษากรูวี

โปรแกรมที่เขียนด้วยภาษากรูวี จะถูกคอมไพล์ เป็นจาวาไบต์โค้ด ซึ่งสามารถใช้งานได้บนจาวาเวอร์ชวลแมชีน (JVM) ปกติ

กรูวี 1.0 ได้รับการเผยแพร่ในวันที่ 2 มกราคม ค.ศ. 2007 จากนั้นจึงเผยแพร่กรูวี 2.0 ในเดือนกรกฎาคม ค.ศ. 2012 โดยรุ่นอัปเดตครั้งใหญ่ครั้งล่าสุดคือรุ่น 2.4 ภายใต้การสนับสนุนของ Pivotal Software ที่สิ้นสุดลงในเดือนมีนาคม ค.ศ. 2015

คุณลักษณะของภาษา 
ภาษากรูวีมีคุณลักษณะหลายประการที่ไม่พบในภาษาจาวามาตรฐาน:
 static typing และ dynamic typing
 วากยสัมพันธ์สำหรับ list, map, array, และ regular expression
 closure
 operator overloading

เปรียบเทียบความสัมพันธ์ 
ตัวอย่างต่อไปนี้จะเปรียบเทียบภาษากรูวีกับภาษาจาวา:

จาวามาตรฐาน (Java 5 และสูงกว่า) 
 class Filter {
     public static void main (String[] args) {
         List<String> list = Arrays.asList ("Rod", "Carlos", "Chris") ;
         List<String> shorts = new ArrayList<String> () ;
         for (String item : list) {
             if (item.length () <= 4) { shorts.add (item) ; }
         }
         for (String item : shorts) { System.out.println (item) ; }
     }
 }

Groovy
 list = ["Rod", "Carlos", "Chris"]
 shorts = list.findAll { it.size () <= 4 }
 shorts.each { println it }

สนับสนุนภาษามาร์กอัป 

คุณลักษณะเด่นอันหนึ่งของกรูวีก็คือ การที่มันสนับสนุนภาษามาร์กอัป (markup language) อย่าง XML และ HTML จากในตัวมันเองเลย
คุณลักษณะนี้ทำให้การสร้างและใช้งานข้อมูลจากหลายแหล่ง เป็นไปได้ในวากยสัมพันธ์ของภาษาและวิธีการเขียนโปรแกรมที่เหมือนกัน ตัวอย่างเช่น:

โค้ด Groovy ต่อไปนี้ ... 
    import groovy.xml.MarkupBuilder
    def myXMLDoc = new MarkupBuilder ()
    myXMLDoc.workbook {
       worksheet (caption:"Employees") {
          row (fname:"John", lname:"McDoe")
          row (fname:"Nancy", lname:"Davolio")
       }
       worksheet (caption:"Products") {
          row (name:"Veeblefeetzer", id:"sku34510")
          row (name:"Prune Unit Zappa", id:"sku3a550")
       }
    }
    println myXMLDoc

... สร้างผลลัพธ์ XML:

ดูเพิ่ม 
 Grails
 Boo - ภาษาโปรแกรมที่มีจุดประสงค์เหมือนกัน แต่ใช้งานบน Common Language Runtime (CLI)
 JRuby - ภาษารูบี้บนแพลตฟอร์มจาวา
 Jython - ภาษาไพทอนบนแพลตฟอร์มจาวา
 BeanShell - ตัวแปลภาษาขนาดเล็กสำหรับโค้ดจาวา

อ้างอิง

ข้อมูล

แหล่งข้อมูลอื่น 
 
 

ภาษาสคริปต์
ภาษาโปรแกรมเชิงวัตถุ
ตระกูลภาษาจาวา
คำร้องเสนอข้อกำหนดชุมชนจาวา
ภาษาโปรแกรมใน JVM