Domanda

Perché dovrei scegliere di usare Groovy quando potrei usare Jython o Jruby? La lingua offre alcuni vantaggi intrinseci per compensare il fatto che le abilità Jython e Jruby sono applicabili alle loro lingue madri al di fuori della JVM?

Tieni presente che tengo di proposito questa domanda generica, ma se ci sono dei vantaggi in un determinato dominio, non esitare a descriverli.

Modifica
Per chiarire, se scrivo del codice in Jruby, ora posso, in alcuni casi, spostare quel codice al di fuori della JVM, se necessario, o perlomeno ho acquisito una migliore comprensione di Ruby. Considerando che le abilità Groovy sono applicabili solo quando si utilizza un linguaggio che esiste appena all'interno della JVM. Jython e Jruby hanno questo vantaggio incorporato, cosa deve fare Groovy per questo svantaggio?

Se Groovy non ha alcun vantaggio che hai trovato e suggeriresti di usare Jython o Jruby, fammelo sapere.

Modifica 2
Grazie a tutti per tutte le risposte, la maggior parte di loro ha lo stesso punto, Groovy si integra leggermente meglio con Java rispetto a Jython o Jruby.

Follow up
Usando Netbeans 6.5 come mio IDE ho scoperto che Groovy si integra meglio con i progetti Java di Jruby. Non sono sicuro che la mancanza di integrazione sia un fallimento di Jruby o Netbeans. Ma dopo averlo usato per il piccolo Groovy sembra sicuramente avere un vantaggio.

È stato utile?

Soluzione

Ho fatto uno sviluppo piuttosto esteso in Ruby e Groovy (oltre a un po 'di Jython usando Grinder come strumento di test del carico).

Dei 3, preferisco di più Groovy. Mi piace molto la sintassi di chiusura e penso che abbia la più stretta integrazione nel modo in cui funziona con altre classi Java sulla JVM. È passato un po 'di tempo dall'ultima volta che ho usato JRuby, ma importare classi Java e lavorare con il classloader in JRuby non mi è sembrato così pulito per me.

Il fatto che Groovy sia anche essenzialmente un superset di Java significa che l'enorme popolazione di programmatori Java là fuori avrà un tempo di assorbimento più rapido nel raccogliere Groovy su Ruby / JRuby. Possono iniziare a programmarlo come se fosse Java e lentamente iniziare a inserire un groove idomatico mentre lo raccolgono.

Più al punto da quello che stai chiedendo, penso che un altro vantaggio di Groovy sia che la lingua che usi quando vuoi ottimizzare qualcosa è quasi la stessa sintassi, è Java. Se stai lavorando nei mondi Ruby o Python, dovrai andare su C, che è un grande turno o Java, che è anche abbastanza diverso da quelle lingue. La programmazione in Groovy tende anche a migliorare le tue abilità Java.

Se hai un accesso particolare a un'infrastruttura Ruby o Python, o un team che ha familiarità con quel tipo di ambienti, allora potrei vedere la scelta di una di quelle altre lingue.

Davvero, tutte e tre sono lingue molto belle e ciò che scegli dovrebbe dipendere maggiormente dal problema che stai cercando di risolvere e dalle risorse che hai a tua disposizione. Una volta che sei diventato esperto in una lingua dinamica, acquisire un secondo o un terzo è molto più semplice.

Altri suggerimenti

Direi che se hai bisogno di mescolare Java con Jruby / Groovy, vai con Groovy. Come tutti hanno detto, Groovy ha una più stretta integrazione Java.

Ma per quanto riguarda la lingua implementazione , preferisco la lingua Ruby rispetto a Groovy, la lingua ruota attorno a se stessa, in Groovy ci sono alcuni hack inerenti a l'implementazione stessa (basta guardare uno stacktrace di Grails contro uno stacktrace di Rails e vedrai cosa intendo).

Consiglio vivamente di vedere il e JRuby

Penso che Dick Wall abbia fornito un ottimo riassunto delle differenze tra questi tre sul podcast di Java Posse (# 213, circa 34:20 in) ... " JRuby è stato progettato per rendere felici i programmatori ... è una scelta dello sviluppatore del linguaggio di programmazione; Python ha radici molto forti nella semplicità e nell'educazione; Groovy ha l'obiettivo di essere la scelta per gli sviluppatori Java ... è un ambiente molto familiare per Java ... con supporto per le annotazioni " ;.

In termini di spostamento della lingua al di fuori della JVM, non credo che il runtime Java imponga molto di un sovraccarico - è una semplice installazione e devi impostare alcune variabili di ambiente - ma fornisce un numero di vantaggi tra cui un runtime maturo che è stato altamente ottimizzato e un ampio set di librerie. Il team JRuby sta ora segnalando prestazioni migliori rispetto alla risonanza magnetica nativa. http://blog.headius.com/2008/08/twas-brillig. html

Ho avuto solo esperienza con Jython e Groovy. Il più grande svantaggio di Jython, al momento, è che l'ultima versione consigliata per la produzione (2.2.1) ha un set di funzionalità che "corrisponde approssimativamente a quello di Python-2.2". ( FAQ su Jython ) . Esiste una versione beta che implementa quello che presumo sia Python 2.5, che ora è una versione dietro. Non so se lo stesso si può dire per JRuby.

Non so perché tu dovresti scegliere Groovy perché non conosco il tuo background. Se sei uno sviluppatore Java Groovy si sente più simile alla tua lingua attuale di JRuby o Jython. Groovy combina il meglio di Java, la lingua, Java, la piattaforma e Ruby la lingua.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top