2009-10-15 3 views

답변

6

불행히도 Java 커뮤니티은 여러 언어 프로그래밍에 대해 매우 열정적 인 것처럼 보이지만 IDE 공급 업체는 실제로이를 유지하지 못했습니다. 일반적으로 에 Java, Scala, Clojure, Groovy, Ruby, ECMAScript, Python, C++ 프로젝트 용 플러그인을 가지고 있지만 프로젝트에서 복수 언어를 여러 언어로 혼합하면 일반적으로 지원되지 않습니다.

예를 들어 Ruby에서 JRuby를 통해 GUI로 Swing을 사용하는 것이 일반적입니다. 그러나 NetBeans Swing GUI 빌더 인 Matisse를 사용하려면 Java 프로젝트를 사용해야하며 Ruby 프로젝트에서는 Matisse를 사용할 수 없습니다. 그러나 Java 프로젝트를 사용하는 경우 Ruby 주 실행 파일을 가질 수 없으며 Java 기본 실행 파일이 있어야합니다. 또한 Rake 지원과 Ruby 프로젝트 유형이 지원하는 다른 것들을 얻지 못한다. (못생긴 해결 방법은 손으로 JRubyEngine 인스턴스를 생성하는 자바의 주요 실행 파일을 작성하는 것입니다 주요 실행 가능으로 루비를로드하고 실행합니다.)

이클립스 스칼라 플러그인 polyglotism의 제한된 양을 지원하지만 그들이 뛰어 넘어야하는 농구는 엄청납니다. 기본적으로 이들은 런타임 바이트 코드 패치를 사용하여 스칼라 측면을 Java Development Tools Eclipse 플러그인에 주입하여 유형 기반 교차 언어 리팩토링을 작동시킵니다. Groovy 플러그인은 AspectJ와 마찬가지로 비슷한 기능을 수행한다 (실제로 그들은 aspect weaving을 사용하여 JDT에 새로운 기능을 주입한다는 아이디어를 내놓았다). 따라서 이러한 모든 플러그인은 자체 및 Java로 다중 언어 프로그래밍을 허용합니다. 그러나 불행하게도 서로는 그렇지 않습니다. (몇몇 유지 관리자가보다 긴밀하게 협력하는 것에 관심을 표명했지만)

일반적으로 유일한 해결책은 새로운 IDE입니다.

+0

누구나 IntelliJ가 이것을 어디에 서고 있는지 알고 있습니까? – jomohke

+0

예! 질문에 대한 제 대답을 참조하십시오. –

3

오히려이 질문에 대답하는 것이 늦었지만 대답은 IntelliJ IDEA가 다국어 프로그래밍에 매우 훌륭한 역할을한다는 것입니다. 나는 최근에 그들의 개발자 중 한 명이 5 개 언어로 된 혼합 언어 응용 프로그램을 만든 데모를 보았습니다.

그들은 다중 언어 인식 구문 채색, 리팩토링 등을 관리합니다. 그들은 분명히 이것에 약간의 노력을 기울 였고 정당하게 자랑 스럽습니다.

IDEA가 현재 (부분적으로) 오픈 소스임을 유감스럽게 생각합니다.

+0

사실. 이것이 작동하는 방식은 IDEA가 통사론과 의미 론적 분석을 위해 언어의 도구를 사용하지 않는다는 것입니다. 대신 IDEA는 강력하고 정교한 컴파일러 프레임 워크를 포함합니다 (현대 IDE는 기본적으로 코드 생성 단계가 빠져있는 거의 완전한 컴파일러, 다른 모든 것들, 구문 분석, 유형 검사, 유형 유추 등이 있습니다) IDE 용 모든 언어를 구현하십시오. 멋진 점은이 컴파일러 프레임 워크가 매우 일반적이며 백엔드로 단일 공유 의미 트리를 사용한다는 것입니다. 따라서 모든 코드는이 단일 공유 된 코드로 컴파일됩니다. ... –

+0

... 의미 트리 및 참조, 리팩토링, 코드 완성 등을 찾는 것과 같은 모든 작업이이 단일 공유 의미 트리에 대해 수행됩니다. 그런 식으로, 예를 들어, * 여러 언어에 리팩토링 *을 수행 할 수 있습니다. –

관련 문제