Groovy przewagę nad Jython czy Jruby?

Dlaczego miałbym używać Groovy, skoro mógłbym używać Jython lub Jruby? Czy język zapewnia jakieś nieodłączne korzyści, aby nadrobić fakt, że umiejętności Jython i Jruby mają zastosowanie do ich języków macierzystych poza JVM?

Należy pamiętać, że celowo utrzymuję to pytanie ogólne, ale jeśli są jakieś zalety, które istnieją w danej domenie, proszę nie wahaj się je opisać.

EDIT
Dla wyjaśnienia, jeśli napiszę jakiś kod w Jruby, to mogę teraz, w niektórych przypadkach, przenieść ten kod poza JVM, jeśli zajdzie taka potrzeba, lub przynajmniej zyskałem lepsze zrozumienie Rubiego. Natomiast umiejętności Groovy mają zastosowanie tylko wtedy, gdy używa się języka, który po prostu istnieje wewnątrz JVM. Jython i Jruby mają tę zaletę, co Groovy musi wynagrodzić za tę wadę?

Jeśli Groovy nie ma żadnych zalet, które znalazłeś, a sugerujesz użycie tylko Jython lub Jruby, daj mi znać.

Edytuj 2
Dzięki wszystkim za wszystkie odpowiedzi, większość z nich robi to samo, Groovy integruje się nieco lepiej z Javą niż Jython lub Jruby.

Follow up
Używając Netbeans 6.5 jako mojego IDE odkryłem, że Groovy lepiej integruje się z projektami Java niż Jruby. Nie jestem pewien czy brak integracji to porażka Jruby czy Netbeans. Ale po użyciu go dla alittle Groovy zdecydowanie wydaje się mieć nogę w górę.

Author: dreftymac, 2008-11-13

5 answers

Zrobiłem dość obszerny rozwój w Ruby i Groovy (a także trochę Jython używając Grinder jako narzędzia do testowania obciążenia).

Z 3 najbardziej wolę Groovy. Najbardziej podoba mi się składnia closure i myślę, że ma ona najściślejszą integrację w tym, jak działa z innymi klasami Javy w JVM. Minęło trochę czasu, odkąd ostatnio używałem JRuby, ale importowanie klas Java i praca z classloaderem w JRuby nie było dla mnie tak czyste.

Fakt, że Groovy jest również zasadniczo superset Javy oznacza, że ogromna populacja programistów Javy będzie miała szybszy czas przyswajania Groovy nad Ruby/JRuby. Mogą zacząć go programować jak w Javie i powoli zacząć wstawiać idomatic groovy, gdy go podnoszą.

Mówiąc bardziej o to, o co prosisz, myślę, że kolejną zaletą Groovy jest to, że język, do którego idziesz, gdy chcesz zoptymalizować coś, jest prawie dokładnie tą samą składnią, to jest Java. Jeśli jesteś pracując w Ruby lub Python worlds, będziesz musiał przejść do C, który jest dużą zmianą lub Java, która jest również zupełnie inna niż te języki. Programowanie w Groovy pomaga również w utrzymaniu umiejętności Javy.

Jeśli masz szczególny dostęp do infrastruktury Ruby lub Pythona, lub zespołu, który ma znajomość tego rodzaju środowisk, wtedy mogę zobaczyć wybór jednego z tych innych języków.

Naprawdę, wszystkie 3 z nich są bardzo ładne języki a to, co wybierzesz, powinno zależeć bardziej od problemu, który próbujesz rozwiązać i zasobów, które masz dostępne dla Ciebie. Gdy już opanujesz jeden dynamiczny język, odbiór drugiego lub trzeciego jest znacznie łatwiejszy.

 37
Author: Ted Naleid,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-01-11 05:50:29

Powiedziałbym, że jeśli chcesz mieszać Javę z Jruby / Groovy, idź z Groovy. Jak wszyscy mówili, Groovy ma ściślejszą integrację z Javą.

Ale jeśli chodzi o język Realizacja goes, wolę język Ruby niż Groovy, język obraca się wokół siebie, w Groovy są pewne hacki, które są nieodłączne dla samej implementacji(po prostu obejrzyj Grails stacktrace vs. rails stacktrace i zobaczysz, co mam na myśli).

I wysoce polecam Zobacz porównanie Groovy i JRuby

 13
Author: Miguel Ping,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-10-19 09:17:14

Myślę, że Dick Wall dał bardzo dobre podsumowanie różnic między tymi trzema Na Java Posse Podcast (#213, około 34: 20 w)... "JRuby został zaprojektowany, aby uszczęśliwić programistów ... jest to wybór programisty języka; Python ma bardzo silne korzenie w prostocie i edukacji; Groovy ma na celu być wyborem dla programistów Java ... jest to bardzo znane środowisko dla Javy ... z obsługą adnotacji".

W zakresie przenoszenia języka poza JVM, nie sądzę, aby środowisko uruchomieniowe Java nakładało wiele na siebie-jest to prosta instalacja i musisz ustawić kilka zmiennych środowiskowych-ale zapewnia wiele korzyści, w tym dojrzały runtime, który został wysoce zoptymalizowany i duży zestaw bibliotek. Zespół JRuby ma teraz lepsze wyniki niż rodzimy rezonans magnetyczny. http://blog.headius.com/2008/08/twas-brillig.html

 3
Author: Andrew Whitehouse,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-11-14 14:35:30

Mam tylko doświadczenie z Jythonem i Groovym. Największą wadą Jython w tej chwili jest to, że najnowsze wydanie zalecane do produkcji (2.2.1) ma zestaw funkcji ,który "w przybliżeniu odpowiada zestawowi Pythona-2.2" (Jython FAQ ). Jest wersja beta implementująca to, co zakładam, to Python 2.5, który jest teraz wersją za. Nie wiem, czy to samo można powiedzieć o Jrubym.

 1
Author: Anthony Cramp,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-11-13 20:27:01

Nie wiem dlaczego ty powinieneś wybrać Groovy, bo nie znam twojego pochodzenia. Jeśli jesteś programistą Javy Groovy czuje się bardziej podobny do Twojego obecnego języka, to JRuby lub Jython. Groovy łączy w sobie to, co najlepsze z Javy, języka, Javy, platformy i języka Ruby.

 0
Author: James McMahon,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-07-31 02:12:19