2010-03-04 42 views
7

Tôi đã học Scala trong vài tháng qua và bây giờ tôi cảm thấy tôi có thể bắt đầu sử dụng vào công việc thực tế ngoài việc giải quyết một số vấn đề đơn giản. Câu hỏi của tôi ở đây là hai người này hợp tác với nhau như thế nào?Java và Scala hoạt động tốt như thế nào?

Tôi có một vài dự án Java mà tôi đang làm việc ngay bây giờ. Làm thế nào dễ dàng wiil nó được bắt đầu sử dụng scala trong họ? Có bất kỳ gotchas để được nhận thức? Có bất kỳ hướng dẫn hoặc loại công cụ có sẵn trên làm nó? Nếu tôi muốn sử dụng Scala trong các dự án web làm thế nào để làm điều đó (ngoài thang máy)? Tất cả các ý tưởng và đề xuất đều được chào đón.

Trả lời

14

Nói chung, việc sử dụng các thư viện Java từ mã Scala dễ hơn là sử dụng các công cụ Scala từ Java. Điều đó có xu hướng xảy ra vì Scala có các tính năng nâng cao có thể truy cập về mặt kỹ thuật trong java, nhưng được thực hiện bởi trình biên dịch scala bằng cách tạo ra tất cả các loại lớp bổ sung với các tên bị xé.

Nếu chương trình "chính" của bạn sẽ được viết bằng java ngay bây giờ, nhưng bạn muốn triển khai một số chức năng hoặc mô-đun trong scala, bạn có thể xác định mô-đun của mình theo giao diện Java. Sau đó, có mã scala của bạn implment những giao diện.

Hy vọng rằng, bạn sẽ sớm thấy rằng bạn thích scala rất nhiều mà bạn chuyển sang scala là ngôn ngữ chính, gọi vào mã java cũ của bạn.

+1

Tôi hết lòng đồng ý với những tình cảm này: đây chính là cách tôi đã kết hợp cả hai. (Tức là chính Scala hoặc Java tương tác chính với Scala thông qua các giao diện Java để tránh sự cần thiết phải mang tên trong mã Java.) –

+0

grrrr, "tên mangling" là từ kỹ thuật mà tôi không thể nghĩ ra vào thời điểm đó tôi đã viết điều này, dẫn đến việc tôi sử dụng thuật ngữ "tên buồn cười". –

+0

Chú thích '@ BeanProperty' có thể là bạn của bạn trong việc tạo các vals và vars dễ truy cập hơn tới mã java. Nó tạo ra getFoo kiểu java và setFoo mà bạn có thể sử dụng từ mã java (mặc dù trình biên dịch scala sẽ không cho phép bạn truy cập những tên đó từ mã scala của bạn). –

1

Nói chung, tôi không nhận được tiền đề của các dự án ngôn ngữ hỗn hợp ngoại trừ trong các trường hợp cực kỳ chuyên biệt. Scala có khả năng (như một ngôn ngữ) thể hiện mọi thứ Java có thể và hơn thế nữa. Vậy tại sao lại bận tâm "giới thiệu Scala vào một dự án Java"? Tại sao không chỉ viết một dự án pure-Scala?

Khi tôi nói tinh khiết Scala, tôi lấy nó như đã đọc mà bạn có thể muốn tham khảo tệp JAR được viết bằng Java. Nhưng đối với phần lớn các trường hợp, tôi thấy không cần phải viết mã Java trong dự án Scala.

+1

Nếu bạn có một ứng dụng lớn, nó có thể không thực tế để viết lại toàn bộ điều chỉ vì vậy nó là scala tinh khiết, đặc biệt là trong thế giới doanh nghiệp. Nhưng bạn có thể muốn sử dụng Scala để viết các mô-đun mới cắm vào ứng dụng. Tôi không nhận được ấn tượng bất cứ ai ủng hộ việc viết rất nhiều mã java bổ sung khi scala đi vào hiện trường. –

+0

Đây là một điểm công bằng. Tôi phải nói rằng tôi đã giữ hầu hết các hệ thống * cũ như Java thuần túy - nhưng sau đó không ai trong số chúng ta là những người khổng lồ và hầu hết có thể sẽ được viết lại từ đầu trong chu kỳ 3-5 năm –

+0

Behemoth là một từ tuyệt vời cho những loại đó của các hệ thống, bởi vì nó hàm ý cả hai rất lớn và đáng sợ :) –

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