2009-10-15 7 views

risposta

6

Sfortunatamente, mentre la comunità Java sembra essere molto entusiasta della programmazione di poliglotta, i produttori di IDE non hanno tenuto il passo. Generalmente do hanno plugin per progetti Java, Scala, Clojure, Groovy, Ruby, ECMAScript, Python, C++, ma miscelazione lingue multiple in un progetto non è generalmente supportato.

In Ruby, ad esempio, è abbastanza comune utilizzare Swing come interfaccia grafica tramite JRuby. Ma se si desidera utilizzare Matisse, il builder NetBeans Swing GUI, è necessario utilizzare un progetto Java, non è possibile utilizzare Matisse in un progetto Ruby. Tuttavia, se si utilizza un progetto Java, non è possibile avere un eseguibile principale di Ruby, è necessario disporre di un eseguibile principale Java. Inoltre, non si ottiene il supporto Rake e altre cose supportate dal tipo di progetto Ruby. (Il brutto soluzione è scrivere un eseguibile principale Java che crea un'istanza JRubyEngine a mano, carica il Rubino eseguibile principale in esso e lo esegue.)

The Eclipse Scala plugin supporta una quantità limitata di poliglossia, ma il i cerchi che devono attraversare sono enormi. Fondamentalmente, usano l'applicazione runtime bytecode per iniettare Scala Aspects nel plugin Eclipse degli strumenti di sviluppo Java, per far funzionare i refactoring cross-language basati sui tipi. Il plugin Groovy fa cose simili, così come AspectJ (in effetti, all'inizio avevano ideato l'uso dell'aspect weaving per iniettare nuove funzionalità in JDT). Quindi, tutti questi plugin consentono la programmazione poliglotta con se stessi e Java. Ma sfortunatamente non l'uno con l'altro. (Sebbene molti dei manutentori abbiano espresso interesse a collaborare più strettamente.)

In generale, temo che l'unica soluzione siano i nuovi IDE.

+0

Qualcuno sa dove si trova IntelliJ su questo? – jomohke

+0

Sì! Si prega di vedere la mia risposta alla domanda. –

3

In ritardo per rispondere a questa domanda, ma la risposta è che IntelliJ IDEA svolge un ottimo lavoro nella programmazione poliglotta. Di recente ho visto una demo in cui uno dei suoi sviluppatori ha fatto un'applicazione in lingue miste in 5 (!) Lingue.

Sono in grado di eseguire la colorazione della sintassi, il refactoring e altro ancora in più lingue. Ovviamente hanno fatto qualche sforzo in questo e sono giustamente orgogliosi.

Sono stato molto felice di notare che IDEA è ora (in parte) open-source.

+0

Infatti. Il modo in cui funziona è che IDEA non utilizza gli strumenti propri del linguaggio per l'analisi sintattica e semantica. Invece IDEA contiene un potente e sofisticato framework di compilatori (un IDE moderno è fondamentalmente costruito attorno a un compilatore quasi completo che manca solo la fase di generazione del codice, tutto il resto, analisi, controllo del tipo, tipo di inferenza ecc.) E implementare ogni lingua per il loro IDE. La cosa interessante è che questo framework del compilatore è molto generico e utilizza un singolo albero semantico condiviso come backend. Quindi, tutto il codice viene compilato in questo singolo albero condiviso ... –

+0

... e tutte le operazioni, come trovare riferimenti, refactoring, completamento del codice ecc. Vengono eseguite contro questo singolo albero semantico condiviso. In questo modo, ad esempio, è possibile eseguire un * Rinomina Refactoring * in più lingue. –