Có hai loại DSL; bên ngoài và được nhúng.
DSL bên ngoài hoàn toàn tách biệt với ngôn ngữ máy chủ của bạn, tức là bạn viết nó ra ngoài ngôn ngữ nhưng thường được sử dụng để tạo mã bằng ngôn ngữ máy chủ. Đối với phương pháp này, XText với XPand có lẽ là công cụ tốt nhất như một tệp ngữ pháp đơn giản tạo ra một trình soạn thảo dựa trên Eclipse hoàn chỉnh cho DSL mới và bạn có thể sử dụng các mẫu mã trong XPand để tạo ra mã Java thực tế. XTend và XPand được viết bằng Java nhưng điều này là ngẫu nhiên vì chúng có thể được viết trong bất cứ điều gì miễn là bạn kết thúc với mã Java ở cuối của quá trình.Nhược điểm với phương pháp này, là đối với bất kỳ vấn đề phức tạp nào phức tạp thì ngôn ngữ sẽ trở nên khá phức tạp và rất nhiều công việc sẽ được yêu cầu trong ngữ pháp và thậm chí nhiều hơn trong các mẫu tạo mã. Bạn không thể sử dụng bất kỳ tính năng ngôn ngữ máy chủ nào như đánh giá biểu thức để tất cả điều này cần xây dựng lại trong DSL của bạn nếu bạn cần. XText sẽ sớm bao gồm XBase là một phần ngôn ngữ sẽ bao gồm các biểu thức để giúp đỡ ở đây. Cách tiếp cận khác là một DSL nhúng nơi các tính năng miền cấp cao được thể hiện bằng ngôn ngữ máy chủ hoặc với các cấu trúc bậc cao (như HOF và monads) thường được tìm thấy trong các ngôn ngữ chức năng hoặc thông qua các cơ sở lập trình meta như macro (vd Lisp). Java không có trong số này như vậy là một lựa chọn xấu cho công việc DSL (hoặc hầu hết các hình thức lập trình trừu tượng khác). Spring Roo cung cấp một cơ sở kiểu lập trình meta cho java bằng cách sử dụng thế hệ để có thể là một tùy chọn. Nếu không, Scala có lẽ là ngôn ngữ Java giống Java nhất, phổ biến và có các tiện ích mà bạn cần.
DSL nhúng thường dễ dàng hơn nhiều so với DSL bên ngoài vì bạn có hỗ trợ đầy đủ ngôn ngữ máy chủ nên khuyến nghị của tôi là thử Scala.
Nhanh như thế nào? Bạn cần bao lâu để làm nó? – EnabrenTane
@EnabrenTane - Nó không cần phải siêu nhanh –
những gì về rất nhanh? sẽ rất nhanh? hoặc chỉ siêu nhanh? j/k: p – hhafez