Đó thực sự là một câu hỏi tuyệt vời! Tôi chưa bao giờ nghĩ về những người học Java chỉ vì vậy họ có thể dễ dàng hơn để tìm hiểu Scala ...
Ngoài tất cả các khái niệm cơ bản như for
vòng lặp và việc học Java Generics đó có thể thực sự hữu ích. Tương đương Scala mạnh hơn nhiều (và khó hiểu hơn nhiều so với Java Generics). Bạn có thể muốn tìm ra nơi mà các giới hạn của Java Generics là, và sau đó trong trường hợp các nhà xây dựng kiểu Scala có thể được sử dụng để khắc phục những hạn chế đó. Ở cấp độ cơ bản hơn, điều quan trọng là phải biết tại sao Generics là cần thiết, và Java là một ngôn ngữ được đánh máy mạnh như thế nào.
Java cho phép bạn có nhiều hàm tạo cho một lớp. Kiến thức này sẽ không sử dụng khi bạn học Scala, bởi vì Scala có một cách khác cho phép bạn cung cấp một số phương thức để tạo ra các cá thể của một lớp. Vì vậy, bạn không muốn có một cái nhìn sâu sắc về khái niệm Java này.
Dưới đây là một số khái niệm khác biệt rất mạnh giữa Java và Scala. Vì vậy, nếu bạn học các khái niệm Java và sau đó muốn tìm hiểu tương đương trong Scala, bạn nên biết rằng tương đương Scala khác rất nhiều so với phiên bản Java mà một nhà phát triển Java điển hình sẽ gặp khó khăn trong việc thích ứng với cách Scala suy nghĩ. Tuy nhiên, nó thường giúp đầu tiên làm quen với cách Java, bởi vì nó thường đơn giản và dễ học hơn. Cá nhân tôi thích nghĩ về Java như là khóa học giới thiệu, và Scala là phiên bản chuyên nghiệp.
- Java bộ sưu tập có thể thay đổi khái niệm vs Scala có thể thay đổi khác biệt/bất biến
static
phương pháp (Java) vs singleton đối tượng (Scala)
for
vòng
- Java
return
tuyên bố vsScala phong cách chức năng ("mỗi biểu thức trả về một giá trị")
- sử dụng Java của
null
cho "không có giá trị" và rõ ràng hơn Option
loại Scala của
- nhập khẩu
- Java
switch
vs Scala của match
Và đây là danh sách các nội dung mà bạn có thể sẽ sử dụng từ thư viện chuẩn Java, ngay cả khi bạn phát triển trong Scala:
- IO
- GUI (Scala có một wrapper cho Swing, nhưng hey)
- URL, URI, files
- ngày
- giờ
Và cuối cùng, một số tính năng Scala rằng không có tương đương trực tiếp trong Java hoặc các thư viện chuẩn Java:
- điều hành quá tải
- implicits và impl chuyển đổi icit
- nhiều danh sách đối số/tách lạng bộ
- chức năng ẩn danh/chức năng như giá trị
- diễn viên
- suối
- mẫu Scala phù hợp (mà đá)
- đặc điểm
- suy luận kiểu
for
comprehensions
- hoạt động bộ sưu tập tuyệt vời e
fold
hoặc map
Tất nhiên, tất cả danh sách không đầy đủ. Đó chỉ là quan điểm của tôi về những gì là quan trọng. Tôi hy vọng nó sẽ giúp.
Và, nhân tiện: Bạn chắc chắn nên biết về đường dẫn lớp và các khái niệm cơ bản về JVM khác.
Bạn có thể đề cập đến một số khái niệm cơ bản về JVM mà bạn đang đề cập đến không? Điều đó có thể hữu ích hơn việc biết về Java Generics, vì nó sẽ tác động đến cuộc sống hàng ngày với Scala – pmn
Xin đừng lấy ngày từ thư viện chuẩn của Java. – Debilski
@icey: Đó sẽ là một sự hiểu biết cơ bản về Java bytecode (không phải chi tiết, chỉ là ý tưởng của nó và nó nằm trong các tệp .class), thu gom rác, lệnh dòng lệnh java và các tham số của nó, đường dẫn lớp, JAR dưới dạng định dạng triển khai và có thể - chỉ có thể - ngay cả chuỗi và đồng bộ hóa. Nhưng: Generics sẽ ảnh hưởng đến cuộc sống hàng ngày của bạn với Java và Scala. Ít nhất bạn cần phải biết cách điền chúng vào, sau này cũng làm thế nào để phát triển các lớp học chung chung. – Madoc