2011-01-19 17 views
20

Nhiều tài nguyên có sẵn cho việc học tập Scala giả định một số nền tảng trong Java. Điều này có thể chứng minh thách thức đối với những người đang cố gắng học Scala mà không có nền Java.Những phần nào của hệ sinh thái và ngôn ngữ Java mà một nhà phát triển nên học để tận dụng tối đa Scala?

Một số Java-isms mà một nhà phát triển Scala mới nên biết khi họ học ngôn ngữ?

Ví dụ, nó là hữu ích để biết những gì một CLASSPATH là, những gì các tùy chọn dòng lệnh java là, vv ...

Trả lời

9

Đó 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.

+0

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

+0

Xin đừng lấy ngày từ thư viện chuẩn của Java. – Debilski

+0

@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

4

Các thư viện chuẩn, trên hết, bởi vì đó là những gì Scala có hầu hết điểm chung với Java .

Bạn cũng nên lấy một ý tưởng cơ bản về cú pháp của Java, bởi vì rất nhiều sách kết thúc so sánh một cái gì đó trong Scala với một cái gì đó trong Java. Nhưng ngoài nền tảng và một số thư viện, chúng là các ngôn ngữ hoàn toàn khác biệt.

Có một vài quy ước tầm thường được truyền từ một đến khác (như tùy chọn dòng lệnh), nhưng khi bạn đọc sách và hướng dẫn trên Scala, bạn nên chọn những cuốn sách đó bất kể trải nghiệm Java trước đó.

4

Serie "Scala for Java Refugees" có thể cung cấp một số chỉ dẫn về các chủ đề Java điển hình mà bạn có nghĩa vụ phải biết và cách chúng dịch sang Scala.
Ví dụ: chức năng Java cơ bản main() Java dịch thành các đặc điểm Application, once considered harmfulnow improved (đối với Scala 2,9).

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