Danh mục

Java.next: Ngôn ngữ Java.next

Số trang: 15      Loại file: pdf      Dung lượng: 175.24 KB      Lượt xem: 21      Lượt tải: 0    
Thư viện của tui

Phí tải xuống: 1,000 VND Tải xuống file đầy đủ (15 trang) 0
Xem trước 2 trang đầu tiên của tài liệu này:

Thông tin tài liệu:

Bài viết này mở ra một loạt bài mới của Neal Ford trên developerWorks tiến hành so sánh kỹ 3 thế hệ tiếp theo của ngôn ngữ JVM: Groovy, Scala, and Clojure.
Nội dung trích xuất từ tài liệu:
Java.next: Ngôn ngữ Java.nextJava.next: Ngôn ngữ Java.nextBài viết này mở ra một loạt bài mới của Neal Ford trên developerWorks tiến hànhso sánh kỹ 3 thế hệ tiếp theo của ngôn ngữ JVM: Groovy, Scala, and Clojure.Trong bài này, bạn sẽ tìm hiểu những điểm tương đồng và khác biệt giữa chúng —và bạn sẽ lựa chọn Java™ là ngôn ngữ lập trình chính của bạn hay khôngTrong một bài phát biểu mà tôi có dịp từng hợp tác với Martin Fowler, ông đã cócái nhìn sâu sắc:Di sản của Java chính là nền tảng, không phải ngôn ngữ.Các kỹ sư Java đã có một quyết định tuyệt vời là tách ngôn ngữ ra khỏi thành phầnruntime, tạo điều kiện cho hơn 200 ngôn ngữ có thể chạy được trên nền tảng Java.Kiến trúc này rất quan trọng cho các nền tảng lâu dài, bởi vì ngôn ngữ lập trìnhmáy tính thường có tuổi thọ ngắn. Từ năm 2008, Hội nghị thượng đỉnh Ngôn ngữJVM hàng năm, được tổ chức bởi Oracle, đã tạo cơ hội cho các nhà phát triển ngônngữ khác cởi mở hợp tác với các kỹ sư Java.Chào mừng bạn đến với loại bài về Java.next. Trong đó, tôi sẽ giới thiệu sơ bộ vềba ngôn ngữ JVM hiện đại — Groovy, Scala, và Clojure — chúng cung cấp một sựpha trộn thú vị của mô hình, lựa chọn thiết kế, và yếu tố tiện nghi. Tôi sẽ khôngdành nhiều thời gian ở đây để cung cấp sự mô tả sâu của mỗi ngôn ngữ, chúng đãcó sẵn trên trang web của chúng tôi (xem phần Tài nguyên). Nhưng các trang webngôn ngữ cộng đồng — với mục đích chính là truyền bá — thông tin khách quanhoặc thiếu các ví dụ về việc một ngôn ngữ là không thích hợp. So sánh nội dung tôisẽ thực hiện trong loạt bài này là để giúp lấp đầy khoảng trống. Điều này đặt ra giaiđoạn với tổng quan về ngôn ngữ Java.next và những lợi ích của việc học về chúng.Nhìn lại JavaNgôn ngữ Java nổi lên thông qua Bruce Tate, trong cuốn sách của ông BeyondJava (xem phần Tài nguyên), có thể gọi là một cơn bão hoàn hảo: sự kết hợp cácyếu tố của sự nổi lên của web, không phù hợp của công nghệ web đã có vì nhiều lýdo, và sự gia tăng của phát triển ứng dụng đa tầng của các doanh nghiệp. Tate cũnglập luận rằng cơn bão hoàn hảo này là một loạt các sự kiện độc đáo, và không cóngôn ngữ nào khác sẽ vượt qua sự nổi bật tương tự bằng cùng một cách.Ngôn ngữ Java đã chứng tỏ tính mềm dẻo, nhưng cú pháp của nó và mô hình vốncó những hạn chế phải mất nhiều thời gian mới hiểu rõ được. Mặc dù ngôn ngữcũng đang có những thay đổi đầy hứa hẹn, nhưng cú pháp đơn giản không thể hỗtrợ các mục tiêu quan trọng trong tương lai, chẳng hạn như các yếu tố của lập trìnhchức năng. Nhưng nếu bạn đang cố gắng để tìm một ngôn ngữ mới duy nhất đểthay Java, thì bạn đang tìm không đúng hướng.Lập trình đa ngôn ngữ (Polyglot programming)Lập trình đa ngôn ngữ— một thuật ngữ mà tôi đã hồi sinh và làm cho nó phổ biếnlại trong một blog vào năm 2006 (xem phần Tài nguyên) — được dựa trên nhậnthức rằng không có ngôn ngữ đơn thuần nào phù hợp để giải quyết mọi vấn đề.Một số ngôn ngữ đã được xây dựng trong quan điểm hoặc các tính năng phù hợpvới các vấn đề cụ thể hơn. Ví dụ, như tính tinh vi của Swing, các nhà phát triểnnhận ra rằng thật phức tạp khi viết UIS Swing trong Java, bởi vì nó đòi hỏi phảikhai báo kiểu, lớp ẩn danh bên trong vụng về để thực hiện hành động, và các thủtục khác. Sử dụng ngôn ngữ đó là tốt hơn phù hợp để xây dựng các UI, chẳng hạnmột Groovy với SwingBuilder làm cơ sở (xem Tài nguyên), làm cho việc xây dựngcác ứng dụng Swing dễ dàng hơn.Sự gia tăng của ngôn ngữ chạy trên JVM làm cho ý tưởng của lập trình đa ngônngữ hấp dẫn hơn, bởi vì bạn có thể trộn và kết hợp trong khi duy trì các mã byte cơbản và thư viện giống nhau. Ví dụ, SwingBuilder không thể thay thế Swing, nó làlớp sẵn có trên Swing API. Tất nhiên, trong một thời gian dài, các nhà phát triển đãtiến hành pha trộn ngôn ngữ bên ngoài JVM — ví dụ, sử dụng SQL và JavaScriptcho các mục đích chuyên môn — nhưng nó đang trở thành phổ biến trong phạm viJVM. Nhiều dự án ThoughtWorks kết hợp nhiều ngôn ngữ, và tất cả các công cụđược phát triển bởi ThoughtWorks Studios sử dụng ngôn ngữ hỗn hợp.Ngay cả khi Java vẫn phát triển ngôn ngữ chính của bạn, học cách làm việc vớingôn ngữ thay thế cho phép bạn kết hợp chúng một cách chiến lược. Java sẽ vẫn làmột phần quan trọng của hệ sinh thái JVM, nhưng cuối cùng hơn như ngôn ngữ lắpráp của nền tảng — một nơi mà bạn đi hoàn toàn vì lý do hiệu suất hoặc để đápứng yêu cầu chuyên môn.Sự phát triểnTrong đầu những năm 1980, khi tôi còn trong trường đại học, chúng tôi sử dụngmột môi trường phát triển được gọi là Pecan Pascal. Tính năng độc đáo của nó làgiống như mã Pascal có thể chạy trên cả máy Apple II hoặc IBM PC. Các kỹ sưPecan đạt được điều này bằng cách sử dụng một cái gì đó bí ẩn được gọi là bytecode. Các nhà phát triển biên dịch mã Pascal của họ thành byte code, chạy trênmáy ảo được viết dành riêng cho mỗi nền tảng. Đó là một kinh nghiệm xươngmáu! Mã kết quả đã được chậm chạm kinh khủng ngay cả đối với bài toán đơngiản. Phần cứng vào thời điểm đó không phù hợp với sự thử thách này.Một thập kỷ sau khi Pecan Pascal, Sun phát hành Java bằng cách sử dụng kiến trúctương tự, căng thẳng nhưng thành công trong môi trường phần cứng giữa nhữngnăm 1990. Nó cũng có thêm tính năng phát triển thân thiện khác như dọn dẹp bộnhớ tự động. Đã từng làm việc với các ngôn ngữ như C++, tôi không bao giờ muốnlập trình với một ngôn ngữ không tự thu gom rác (non-garbage-collected) lần nàonữa. Tôi muốn dành nhiều thời gian ở một mức độ trừu tượng cao hơn suy nghĩ vềcách để giải quyết vấn đề kinh doanh phức tạp, chứ không phải các vấn đề hệthống phức tạp như việc quản lý bộ nhớ.Một trong những lý do mà ngôn ngữ máy tính thường không có vòng đời lâu dài làdo tốc độ đổi mới trong ngôn ngữ và nền tảng thiết kế. Các nền tảng của chúng tatrở nên mạnh hơn, chúng có thể xử lý nhiều công việc phức tạp hơn. Ví dụ, tínhnăng memoization của Groovy (được bổ sung vào năm 2010) lưu trữ các kết ...

Tài liệu được xem nhiều: