2009-10-15 36 views
8

Ví dụ, có thể có nguồn Scala, Java và Clojure tất cả biên dịch/xây dựng cùng nhau đúng trong cùng một dự án không? Hoặc, tôi có phải làm chúng như là thư viện dự án riêng biệt sau đó được sử dụng bởi bất cứ điều gì tôi chọn là dự án "tổng thể"?Làm cách nào để kết hợp các ngôn ngữ dựa trên JVM trong một dự án Netbeans? Ví dụ:

Nếu không ai trong số đó, mọi người khác làm như thế nào?

Trả lời

6

Thật không may, trong khi cộng đồng Java dường như rất nhiệt tình về lập trình đa ngôn ngữ, các nhà cung cấp IDE đã không thực sự cập nhật. Chúng thường do có các plugin cho các dự án Java, Scala, Clojure, Groovy, Ruby, ECMAScript, Python, C++, nhưng trộn nhiều ngôn ngữ trong một dự án thường không được hỗ trợ.

Trong Ruby, ví dụ, khá phổ biến khi sử dụng Swing làm GUI thông qua JRuby. Nhưng nếu bạn muốn sử dụng Matisse, trình xây dựng GUI NetBeans Swing, bạn phải sử dụng một dự án Java, bạn không thể sử dụng Matisse trong một dự án Ruby. Tuy nhiên, nếu bạn sử dụng một dự án Java, thì bạn không thể có một tệp thực thi chính của Ruby, bạn phải có một tệp thực thi chính của Java. Ngoài ra, bạn không nhận được hỗ trợ Rake và những thứ khác mà kiểu dự án Ruby hỗ trợ. (Cách giải quyết xấu xí là để viết một thực thi chính Java mà tạo ra một trường hợp JRubyEngine bằng tay, tải của Ruby thực thi chính vào nó và chạy nó.)

Eclipse Scala Plugin hỗ trợ một số lượng hạn chế polyglotism, nhưng hoops mà họ phải nhảy qua là rất lớn. Về cơ bản, họ sử dụng bản vá bytecode thời gian chạy để tiêm Scala Aspect vào trong trình cắm thêm Eclipse của công cụ phát triển Java, để có được các phép tái cấu trúc ngôn ngữ chéo kiểu để làm việc. Plugin Groovy thực hiện những điều tương tự, cũng như AspectJ (trên thực tế, ban đầu chúng nảy ra ý tưởng sử dụng khía cạnh dệt để chèn chức năng mới vào JDT). Vì vậy, tất cả các plugin này cho phép lập trình đa ngôn ngữ với chính chúng và Java. Nhưng tiếc là không phải với nhau. (Mặc dù một số người bảo trì đã bày tỏ quan tâm đến việc cộng tác chặt chẽ hơn.)

Nói chung, tôi lo ngại rằng giải pháp duy nhất là các IDE mới.

+0

Bất kỳ ai biết IntelliJ đứng ở đâu về điều này? – jomohke

+0

Có! Xin vui lòng xem câu trả lời của tôi cho câu hỏi. –

3

Khá muộn để trả lời câu hỏi này, nhưng câu trả lời là IntelliJ IDEA thực hiện một công việc rất tốt về lập trình đa ngôn ngữ. Gần đây, tôi đã xem bản trình diễn mà một trong những nhà phát triển của họ đã thực hiện một ứng dụng hỗn hợp bằng 5 ngôn ngữ (!).

Họ quản lý để thực hiện tô màu, tái cấu trúc và nhận dạng cú pháp đa ngôn ngữ. Họ rõ ràng đã chìm một số nỗ lực vào điều này và là đáng tự hào.

Tôi rất vui khi lưu ý rằng IDEA hiện là (một phần) có nguồn mở.

+0

Thật vậy. Cách thức hoạt động này là IDEA không sử dụng các công cụ riêng của ngôn ngữ để phân tích cú pháp và ngữ nghĩa. Thay vào đó, IDEA chứa một khung trình biên dịch mạnh mẽ và tinh vi (một IDE hiện đại được xây dựng xung quanh một trình biên dịch gần như hoàn chỉnh mà chỉ thiếu giai đoạn tạo mã, mọi thứ khác, phân tích cú pháp, kiểm tra kiểu, suy luận kiểu), và chúng thực hiện mọi ngôn ngữ cho IDE của họ. Điều thú vị là khung công tác biên dịch này rất chung chung, và sử dụng một cây ngữ nghĩa được chia sẻ duy nhất làm phần phụ trợ của nó. Vì vậy, tất cả các mã được biên dịch thành duy nhất được chia sẻ này… –

+0

… cây ngữ nghĩa, và tất cả các hoạt động, chẳng hạn như tìm tham chiếu, tái cấu trúc, hoàn thành mã vv được thực hiện đối với cây ngữ nghĩa được chia sẻ duy nhất này. Bằng cách đó, nó là, ví dụ, có thể thực hiện một * Đổi tên Đổi tên * trên nhiều ngôn ngữ. –

Các vấn đề liên quan