2012-04-19 5 views
5

Tôi đang nghiên cứu một dự án sẽ liên quan đến dự án của tôi để biên dịch các tệp java đủ đơn giản. Từ nghiên cứu của tôi, tôi đã quyết định không thử và xây dựng trình biên dịch của riêng tôi vì điều này sẽ chỉ mất quá nhiều thời gian.Phát triển một chương trình java để biên dịch các tệp .java

Vì vậy, có ai biết trình biên dịch tốt nhất để thực hiện trong dự án này để tôi có thể biên dịch các tệp java được gửi cho chương trình không?

+0

Giải pháp rõ ràng nhất cho điều này đơn giản là gọi javac với Runtime.exec. Có lý do tại sao bạn không thể làm điều này? Thông tin thêm về tình huống của bạn sẽ giúp mọi người đưa ra câu trả lời tốt hơn. –

+0

Im thực sự chỉ trong giai đoạn nghiên cứu của dự án vào lúc này và cố gắng tìm ra những cách khác nhau mà tôi có thể biên dịch các tệp .java từ một chương trình java. Điều này là bởi vì tôi sẽ xây dựng một công cụ sẽ biên dịch và phân loại các chương trình java (cho thời điểm này và mở rộng sang các ngôn ngữ lập trình khác sau này). Nó sẽ có nhiều tính năng hơn nhưng tôi chỉ tập trung vào việc tìm kiếm cách tốt nhất để biên dịch các chương trình đầu tiên để đảm bảo rằng chúng không có lỗi nào –

+0

Nếu bạn có kế hoạch mở rộng sang các ngôn ngữ khác nhau, tôi chắc chắn sẽ gọi giao diện dòng lệnh trình biên dịch là con đường để đi. Bằng cách đó, chương trình của bạn có thể được mở rộng để làm việc với bất kỳ ngôn ngữ nào có giao diện dòng lệnh (nghĩa là gần như tất cả các ngôn ngữ). Tuy nhiên, một vấn đề mà bạn sẽ phải đối mặt là làm thế nào để đảm bảo môi trường được thiết lập chính xác và chương trình của bạn được tích hợp với các công cụ xây dựng khác nhau có thể cần thiết. (Ví dụ, công cụ Java của bạn có thể thực sự muốn hỗ trợ xây dựng Ant, vì sinh viên có thể muốn sử dụng Ant cho các dự án phức tạp hơn.) –

Trả lời

9

Tại sao không sử dụng được xây dựng trong Java compiler API?

+0

tôi đã xem xét javac, bạn có biết lợi thế của việc sử dụng nó trên javac không? –

+0

Lợi thế đơn giản là bạn không phải sinh ra một quy trình mới cho mỗi biên dịch. –

+0

Tôi phải nghiên cứu điều này nhiều hơn một chút nhưng trông giống như ở cái nhìn đầu tiên dù sao cũng là một cách hay để làm –

0

này gần như vẻ như bạn thực sự cần một cách tiếp cận kịch bản-y mà không ba điều:

  • nguồn chương trình biên dịch với trình biên dịch ngôn ngữ thích hợp
  • Execute chương trình kết quả để sản xuất một số bộ kết quả
  • Hãy so sánh dẫn đến kết quả mong đợi để tạo ra một lớp

Vì bạn nói bạn muốn bắt đầu với Java, nhưng di chuyển sang các ngôn ngữ khác, tôi sẽ đề xuất điều tra KIẾN. Nó sẽ xây dựng bằng nhiều ngôn ngữ và có thể tạo điều kiện thực hiện/phân loại mã đối tượng kết quả.