Groovy và sự khác biệt với Java

0
224
Groovy là gì

Groovy là gì

Video Groovy là gì

groovy: một ngôn ngữ lập trình động chạy trên máy ảo java, với các tính năng tương tự như python hoặc ruby. nó hỗ trợ 99% cú pháp java, vì vậy việc dán mã java để chạy nó trong Groovy rất đơn giản và thân thiện.

làm việc với groovy từ năm 2013 khi google io thông báo rằng studio android đã sử dụng bản dựng lớp với tập lệnh groovy. nhưng cho đến nay, tôi vẫn chưa có cơ hội sử dụng groovy như một ngôn ngữ thay thế trong một dự án thực tế. mọi thứ đối với tôi vẫn dừng lại ở cấu hình tập lệnh xây dựng trong đường dẫn gradle hoặc jenkins. nên với tất cả những gì mình học được và một chút kinh nghiệm của bản thân, nếu có gì sai sót mong các bạn góp ý. cảm ơn bạn!!

nhập gói mỗi khi bạn sử dụng một lớp như java.io.file thường được yêu cầu bởi tất cả các nhà phát triển java. nhưng trong Groovy thì không cần làm vậy, mặc định các gói sau được nhập vào.

Giả sử chúng ta có một đoạn mã với 2 phương thức được nạp chồng như hình bên dưới. biên dịch và chạy cho cả java và groovy -> sẽ cho 2 kết quả khác nhau.

kết quả:

  • kết quả java sẽ là 2.
  • kết quả tuyệt vời sẽ là 1.
  • với java, các phương thức sẽ được chọn lúc biên dịch, dựa trên kiểu dữ liệu được khai báo trong ví ở trên làm đối tượng

    và với Groovy, các phương thức sẽ được chọn trong thời gian chạy, cũng dựa trên kiểu dữ liệu đã khai báo. nhưng trong thời gian chạy hoặc bây giờ là một đối tượng chuỗi. vì vậy 1 là kết quả trong groovy ==> điều này được gọi là điều phối thời gian chạy hoặc nhiều phương thức trong groovy.

    với java, việc khởi tạo mảng có thể thực hiện như sau:

    nhưng trong groovy thì không được phép. bởi vì cặp { } chỉ dành cho bao đóng. thay vào đó, tôi sẽ sử dụng như sau:

    bằng java:

    trong Groovy, không có khái niệm về công cụ sửa đổi truy cập cho các trường.

    điều đó có nghĩa là ngay cả khi bạn thêm/xóa công cụ sửa đổi của một trường như java, nó sẽ không ảnh hưởng gì đến khả năng truy cập của trường đó.

    để làm điều đó, hãy sử dụng chú thích @packagescope sẽ kết hợp bộ thu thập và bộ thiết lập của trường đó (bộ thu thập và bộ thiết lập được tạo theo mặc định trong Groovy)

    arm (quản lý tài nguyên tự động) được hỗ trợ kể từ java 7, trong khi groovy thì không. thay vào đó, Groovy cung cấp các cách khác nhau để dựa vào các lần đóng có hiệu quả như nhau, trong khi các lần đóng mang lại sự ngắn gọn hơn

    việc tạo một lớp bên trong ẩn danh và các lớp lồng nhau vẫn tuân theo các quy tắc java. tuy nhiên trong Groovy, cú pháp có phần đơn giản hơn và một số bổ ngữ cú pháp, không cần bổ trợ truy cập, các biến cục bộ không nhất thiết phải là cuối cùng

    các lớp bên trong tĩnh

    các lớp bên trong ẩn danh

    tạo thể hiện của các lớp bên trong không tĩnh

    cú pháp y.new x(); nó không tương thích với groovy. thay vào đó, chúng ta phải viết một x(y) mới như sau:

    java 8 có lambda, groovy có bao đóng.

    đây là cách java 8 hoạt động với lambdas:

    cũng với Groovy

    Trong java để nối chuỗi chúng ta thường sử dụng toán tử + để nối chuỗi, như sau:

    nhưng trong Groovy thì đơn giản và dễ dàng hơn nhiều.

    và cặp ký tự chuỗi nằm trong dấu ngoặc kép ${} như trên được gọi là giá trị chuỗi.

    trong Groovy, sử dụng dấu nháy đơn cho chuỗi và dấu nháy kép cho chuỗi hoặc gstring (nếu nội suy gstring ${} )

    kiểu dữ liệu char chỉ được hiểu khi khai báo rõ ràng một biến là char

    chọn ký tự

    groovy hỗ trợ 2 loại chuyển đổi từ chuỗi sang -> char. cũng có sự khác biệt trong việc truyền.

    groovy sử dụng các đối tượng cho mọi thứ, các kiểu dữ liệu nguyên thủy sẽ tự động ngắt thành lớp trình bao bọc thích hợp.

    bảng các hàm bao nguyên thủy

    xem ví dụ sau để thấy sự khác biệt khi bộ thực thi sử dụng java và groovy.

    trong java, so sánh == được hiểu là so sánh hai giá trị nguyên thủy hoặc xác định đối tượng.

    trong groovy == được hiểu là a.compareto(b)==0 nếu ab có thể so sánh được, nếu không thì nó được hiểu là a.equals(b)

    bảng so sánh chuyển đổi loại dữ liệu giữa java và groovy.

    • y: vâng, java có thể chuyển đổi
    • c: có, nhưng cần được thông qua rõ ràng
    • t: có, nhưng dữ liệu sẽ bị xóa
    • n: không, không được phép
    • bảng chuyển đổi java

      biểu đồ chuyển đổi thú vị

      • y: vâng, Groovy có thể chuyển đổi
      • d: có, tự động chuyển đổi khi được biên dịch hoặc bạn cần phát trực tuyến rõ ràng
      • t: có, nhưng dữ liệu sẽ bị xóa
      • b : có, tự động mở/mở hộp n : không, không được phép
      • Ngoài các từ khóa java, groovy còn sử dụng một số từ khóa sau:

        • như
        • def
        • trong
        • đặc điểm
        • giống như java, từ khóa cũng không được dùng làm tên biến.

          với java, mỗi câu lệnh sẽ kết thúc bằng dấu chấm phẩy;. nhưng với groovy thì đó là tùy chọn, tất nhiên là không có nó cũng không sao. groovy hiểu và biên dịch hoàn toàn tốt.

          điều duy nhất, nếu ; được sử dụng, một số ide sẽ đánh dấu nó là không cần thiết.

          một phương thức không còn yêu cầu lợi nhuận tuyệt vời nữa. điều này hữu ích với các khối mã như bao đóng hoặc các phương thức đơn giản.

          Tất nhiên, điều đó không có nghĩa là chúng tôi sẽ ngừng quay lại, bởi vì trong một số trường hợp, việc sử dụng return vẫn cần thiết.

          hậu tố

          .class có thể được bỏ qua khi được truyền dưới dạng tham số. như ví dụ person.class bên dưới

          với java, bạn cần chỉ định rõ ràng ngoại lệ trong phần khai báo.

          nhưng với Groovy, cứ như vậy

          và có thể có nhiều điểm khác biệt thú vị hơn trong Groovy.

          Trên đây chỉ là những gì tôi tìm hiểu và viết lại theo cách hiểu của bản thân và một số áp dụng khi làm việc thực tế.

          với Groovy hỗ trợ 99% cú pháp java, đồng thời cung cấp sự ngắn gọn và đơn giản trong cú pháp trình bày. nó sẽ giúp chúng tôi phát triển ứng dụng nhanh hơn một chút khi grail ngày càng trở nên phổ biến

          để học về groovy, học tập, tài liệu, v.v., bạn có thể tìm thấy tại http://groovy-lang.org

LEAVE A REPLY

Please enter your comment!
Please enter your name here