2009-10-15 7 views

Odpowiedz

6

Niestety, podczas gdy środowisko Java wydaje się być bardzo entuzjastycznie nastawione do programowania poliglota, dostawcy IDE tak naprawdę nie nadążają. Zwykle mają one wtyczki dla projektów Java, Scala, Clojure, Groovy, Ruby, ECMAScript, Python, C++, ale miksowanie wielu języków w jeden projekt nie jest obsługiwany.

Na przykład w Ruby często używa się Swing jako GUI przez JRuby. Ale jeśli chcesz użyć Matisse'a, konstruktora GUI NetBeans Swing, musisz użyć projektu Java, nie możesz użyć Matisse'a w projekcie Ruby. Jeśli jednak używasz projektu Java, nie możesz mieć głównego pliku wykonywalnego Ruby, musisz mieć główny plik wykonywalny Java. Ponadto nie otrzymujesz wsparcia Rake i innych rzeczy obsługiwanych przez typ projektu Ruby. (Brzydki obejście jest napisać główny plik wykonywalny Java, który tworzy instancję JRubyEngine ręcznie, ładuje Ruby główny plik wykonywalny do niego i uruchamia go.)

plugin Eclipse Scala obsługuje ograniczoną ilość polyglotism, ale obręcze, przez które muszą przejść, są ogromne. Zasadniczo używają łatania kodu bajtowego w czasie wykonywania, aby wstrzykiwać Scala Aspects do wtyczki Java Development Tools Eclipse, aby zastosować refaktoryzację w oparciu o typ. Wtyczka Groovy robi podobne rzeczy, podobnie jak AspectJ (w rzeczywistości pierwotnie wpadł na pomysł użycia aspektu tkania do wstrzyknięcia nowej funkcjonalności do JDT). Tak więc wszystkie te wtyczki umożliwiają programowanie poliglota ze sobą i Javą. Ale niestety nie ze sobą. (Chociaż kilku opiekunów wyraziło zainteresowanie ściślejszą współpracą.)

Ogólnie obawiam się, że jedynym rozwiązaniem są nowe IDE.

+0

Ktoś wie, gdzie znajduje się IntelliJ? – jomohke

+0

Tak! Proszę zobaczyć moją odpowiedź na pytanie. –

3

Raczej za późno, aby odpowiedzieć na to pytanie, ale odpowiedź brzmi, że IntelliJ IDEA wykonuje bardzo dobrą robotę w programowaniu poliglota. Niedawno obejrzałem demo, w którym jeden z ich programistów wykonał mieszaną aplikację w 5 (!) Językach.

Udaje im się tworzyć barwniki, refaktoryzację i wiele więcej w zakresie języków. Najwyraźniej włożyli w to trochę wysiłku i są słusznie dumni.

Byłem bardzo szczęśliwy, gdy zauważyłem, że IDEA jest teraz (częściowo) open-sourced.

+0

Rzeczywiście. Działa to w taki sposób, że IDEA nie używa własnych narzędzi językowych do analizy składniowej i semantycznej. Zamiast tego IDEA zawiera potężną i wyrafinowaną strukturę kompilatora (nowoczesne środowisko IDE opiera się w zasadzie na prawie kompletnym kompilatorze, który brakuje tylko etapu generowania kodu, wszystkiego innego, parsowania, sprawdzania typów, typów wnioskowania itp.) I implementować każdy język dla swojego IDE. Fajne jest to, że ten framework kompilatora jest bardzo ogólny i używa pojedynczego drzewa semantycznego jako zaplecza. Tak więc, cały kod jest kompilowany do tego pojedynczego współdzielonego ... –

+0

... drzewa semantycznego i wszystkie operacje, takie jak znajdowanie referencji, refaktoryzacji, uzupełniania kodu itp. Są wykonywane przeciwko temu pojedynczemu współużytkowalnemu drzewu semantycznemu. W ten sposób możliwe jest na przykład * przekształcanie * zmiany nazwy * w wielu językach. –

Powiązane problemy