Có thể lệnh java
chạy mã scala đã biên dịch không? Nếu vậy, tại sao chúng ta có một lệnh độc quyền scala
?java có thể chạy mã scala đã biên dịch không?
Trả lời
Bạn có thể chạy mã byte do Scala tạo nếu bạn bao gồm tất cả các thư viện thời gian chạy cần thiết cho Scala (scala-library.jar, scala-swing.jar ...) trong đường dẫn lớp. Lệnh scala thực hiện điều này tự động và hỗ trợ các đối số dòng lệnh cụ thể của Scala.
Scala được thiết kế để tích hợp dễ dàng với các ứng dụng chạy trên máy ảo hiện đại, chủ yếu là các máy ảo Java (JVM). Trình biên dịch Scala chính, scalac, tạo các lớp Java có thể chạy trên JVM. ->http://www.artima.com/scalazine/articles/steps.html
Chừng nào bạn đã cài đặt thời gian chạy scala bạn nên sử dụng tốt: biên dịch các lớp học với scalac
và chạy chúng với java
.
Có, nó có thể. Scala được biên dịch xuống Java bytecode. Nhưng hãy nhớ rằng nó phụ thuộc vào các lớp thời gian chạy của Scala, vì vậy bạn cần phải có các tệp jar của Scala trên classpath.
Nếu vậy, tại sao chúng tôi có lệnh scala độc quyền?
Trình bao bọc tiện lợi.
Chỉ muốn thêm câu trả lời của riêng tôi như giá trị bổ sung cho các độc giả trong tương lai:
scala, nếu chạy mà không có tham số, sẽ chạy một trình bao tương tác
scala, nếu chạy với một tên tập tin văn bản như tham số, sẽ coi các tập tin như một kịch bản scala
hai không thể được thực hiện bằng java
Cả hai đều có thể được thực hiện, nhưng nó đặc biệt gây phiền nhiễu để làm điều đó - bạn phải gọi scala.tools.nsc.MainGenericRunner và chắc chắn rằng các công cụ thích hợp là trong classpath. Tại sao không chỉ để kịch bản scala làm điều đó cho bạn? –
scala là một thông dịch viên, trong khi scalac là một comp iler .. nó không chỉ để thuận tiện mà còn là một kỹ thuật khác. – atamanroman
Bạn có thể bắt đầu trình thông dịch scala với lệnh "java" nếu bạn đã thử ... – Thilo
Bạn cũng có thể bắt đầu trình biên dịch - đó chỉ là một lớp khác cần chạy (scala.tools.nsc.Main, với các đối số thích hợp)). Nhưng thuận tiện là thuận tiện, vậy tại sao làm nó một cách khó khăn? –