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 nên rất đơn giản và thân thiện để bạn dán một đoạn code java để chạy trên groovy.
Đã sử dụng groovy từ năm 2013, khi google io công bố android studio sử dụng bản dựng lớp và tập lệnh groovy. Nhưng cho đến bây giờ, tôi vẫn chưa có cơ hội sử dụng groovy như một ngôn ngữ thay thế trong các dự án thực tế. Đối với tôi, mọi thứ vẫn chỉ gặp khó khăn khi định cấu hình các tập lệnh xây dựng trong đường dẫn gradle hoặc jenkins. Vì vậy, kết hợp tất cả những gì tôi đã học được với một chút kinh nghiệm của bản thân, tôi rất mong nhận được sự góp ý của các bạn nếu có gì sai sót. Cảm ơn! !
Mọi nhà phát triển java nói chung vẫn cần nhập gói mỗi khi một lớp như java.io.file được sử dụng. Nhưng điều này không bắt buộc trong groovy, các gói sau được nhập theo mặc định.
Giả sử đoạn code của chúng ta có 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 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ả bình thường sẽ là 1.
- y : Có, java có thể chuyển đổi
- c : có, nhưng yêu cầu chuyển đổi rõ ràng
- t : có, nhưng dữ liệu sẽ bị loại bỏ
- n : Không, không được phép
- y: vâng, Groovy có thể chuyển đổi
- d : có, chuyển đổi tự động tại thời điểm biên dịch hoặc yêu cầu chuyển đổi rõ ràng
- t : có, nhưng dữ liệu sẽ bị loại bỏ
- b : có, autoboxing/unboxing n : không, không được phép
- Như
- Xác định
- tại
- Đặc điểm
Đối với java, phương thức sẽ được chọn tại thời điểm biên dịch dựa trên kiểu dữ liệu được khai báo là một đối tượng trong ví trên
Trong khi với Groovy, phương thức sẽ được chọn trong thời gian chạy, điều này cũng dựa trên kiểu dữ liệu đã khai báo. Nhưng trong thời gian chạy, o bây giờ là một đối tượng chuỗi. Vì vậy, 1 là kết quả của groovy ==> đây được gọi là công văn thời gian chạy hoặc đa phương thức trong groovy.
Trong java, việc khởi tạo mảng có thể được thực hiện như sau:
Nhưng nó không được phép trong groovy. Bởi vì các cặp {} chỉ được sử dụng để đóng. Thay vào đó, nó sẽ sử dụng như sau:
Trong java:
Trong Groovy, không có khái niệm về công cụ sửa đổi truy cập trường.
Điều đó có nghĩa là, ngay cả khi bạn thêm/xóa một công cụ sửa đổi trường như java, nó sẽ hoàn toàn không ảnh hưởng đến khả năng truy cập của trường đó.
Để thực hiện việc này, bạn cần sử dụng chú thích @packagescope, chú thích này 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 ngầm 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ó giá trị như nhau và các lần đóng mang lại sự đơn giản hơn
Việc tạo các 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 đơn giản hơn một chút, có một số từ bổ nghĩa cú pháp, không có từ bổ trợ truy cập, các biến cục bộ không cần phải là giá trị cuối cùng
Lớp bên trong tĩnh
Lớp bên trong ẩn danh
Tạo một thể hiện của lớp bên trong không tĩnh
Cú pháp y.new x(); Groovy không hỗ trợ. Thay vào đó, chúng ta phải viết x(y) mới như thế này:
java 8 có lambdas, groovy có bao đóng.
Đây là cách java 8 sử dụng lambdas:
Và hấp dẫn
Để nối chuỗi trong java, 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.
và cặp ký tự chuỗi trích dẫn kép ${} ở trên được gọi là giá trị gstring.
Trong groovy, dấu nháy đơn được sử dụng cho chuỗi, dấu ngoặc kép được sử dụng cho chuỗi hoặc gstrings (nếu nội suy gstring ${} )
Kiểu dữ liệu char chỉ được hiểu nếu biến được khai báo rõ ràng là char
Truyền nhân vật
groovy hỗ trợ 2 loại chuyển đổi, từ chuỗi thành ký tự ->. Đúc cũng tạo nên sự khác biệt.
Groovy sử dụng các đối tượng cho mọi thứ và các kiểu dữ liệu nguyên thủy được tự động đưa vào các lớp trình bao bọc thích hợp.
Bảng đóng gói ban đầu
Xem ví dụ bên dưới để biết sự khác biệt khi sử dụng java và groovy trong thời gian chạy.
Trong java, so sánh == được hiểu là so sánh 2 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 Java và Groovy.
bảng chuyển đổi java
Bảng chuyển đổi chung
Ngoài các từ khóa java, groovy còn sử dụng các từ khóa sau:
Cũng như trong java, từ khóa không được sử dụng làm tên biến.
Trong java, mọi câu lệnh đều kết thúc bằng dấu chấm phẩy ;. Nhưng với groovy thì đó là tùy chọn và tất nhiên không có nó cũng không sao. groovy hiểu và biên dịch 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.
Không còn cần thiết phải sử dụng các phương thức trả về hấp dẫn nữa. Điều này hữu ích cho 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 này không có nghĩa là chúng ta phải từ bỏ việc trả lại, bởi vì trong một số trường hợp, việc trả lại vẫn được yêu cầu.
Hậu tố
.class có thể được bỏ qua khi được truyền dưới dạng đối số. Giống như ví dụ về person.class bên dưới
Đối với java, bạn cần chỉ định rõ ràng ngoại lệ trong phần khai báo.
Nhưng đối với Groovy thì nó như thế này
Có lẽ có nhiều điểm khác biệt thú vị hơn trong Groovy.
Những điều trên là do tôi tự tìm hiểu và viết lại theo cách hiểu của bản thân, và một phần áp dụng vào công việc thực tế.
groovy Nó hỗ trợ 99% cú pháp java và nó cung cấp cú pháp trình bày ngắn gọn và đơn giản. Khi grails ngày càng trở nên phổ biến, nó sẽ giúp chúng ta phát triển ứng dụng nhanh hơn
Tìm hiểu về groovy, learn, docs, v.v. Bạn có thể tìm thấy nó tại http://groovy-lang.org