Skip to main content

Groovy là gì - Khác nhau giữa Groovy và Java


Groovy là 1 ngôn ngữ dynamic typing, được rất nhiều người sử dụng vì tính linh hoạt của nó. Groovy được biết đến như là một thế hệ mới thay thế Java. Groovy sử dụng trình biên dịch Java và hoàn toàn chạy trên JVM, nó cũng được dịch ra bytecode như Java và ngoài ra còn cung cấp sự ổn định và tin cậy của Java một cách tốt hơn, linh hoạt hơn.
Mặc dù Java là một ngôn ngữ lập trình rất tốt và được sử dụng rộng rãi nhưng thực hiện một số nhiệm vụ như thao tác xử lý chuỗi và xử lý file là một vấn đề trong Java. Sử dụng Groovy, người ta có thể xử lý những vấn đề đó một cách rất linh động và dễ dàng. Các file Groovy có phần mở rộng là '.groovy' và không giống như Java, chúng ta không cần đặt dấu chấm phẩy sau mỗi câu lệnh. Nếu bạn thành thạo Java thì sẽ rất dễ dàng để tìm hiểu làm quen với groovy. Có một số điểm tương đồng và một số khác biệt giữa Java và Groovy , một số trong số chúng được liệt kê dưới đây: 

Groovy được thiết kế tương tự như Java và phải nói là 99% cú pháp giống Java

Sự khác nhau giữa Groovy và Java

 1 - Trong Java, chúng ta có package 'java.lang' được import mặc định, nhưng trong groovy có nhiều package và class được import sẵn cho chúng ta, đó là:

    groovy.lang * 
    groovy.util. * 
    Java.io . * 
    java.net. * 
    java.util. * 
    java.lang. * 
    java.math.BigDecimal 
    java.math.BigInteger

Có nghĩa là sử dụng groovy chúng ta không cần phải import những package và class trên nữa, tính năng này cho phép groovy developer có thể bắt đầu 1 chương trình 1 cách nhanh chóng. 

2 - Trong java chúng ta sử dụng '==' để so sánh các kiểu nguyên thủy và '.equals ()' để so sánh hai đối tượng, nhưng trong groovy chúng ta có thể sử dụng '==' để so sánh cả hai loại nguyên thủy và đối tượng. Mặc dù trong groovy cũng có '.equals ()' để so sánh đối tượng.

3 - Dấu chấm phẩy cuối câu bắt buộc, chỉ sử dụng chúng nếu bạn thích hoặc nếu bạn muốn viết nhiều câu trong một dòng. 

4 - Trong groovy 'in' là keyword và chúng ta không thể sử dụng nó để đặt tên biến.

5 - Khi khai báo một mảng chúng ta không thể viết 

    int arr [] = (1,2,3,4 ...}

   mà chúng ta phải viết là

    int arr [] = [1,2,3,4 ... ]

6 - Sử dụng vòng lặp trong groovy rất dễ dàng, chúng ta có thể định nghĩa 1 một vòng lặp như sau:

    for (i in 0..size-1) {}
        hoặc
    for (i in 0..<size) {}
        hoặc
    size.times {}

    Mặc dù for(int i; i <-size, i ++) {} cũng hợp lệ trong groovy.

7 - 'return' giá trị trong 1 phương thức là không bắt buộc trong Groovy. Chúng ta hoàn toàn có thể viết: 

    int addNumbers () { 
        sum = num1 + num2 
    }
    
 Đôi khi chúng ta vẫn nên sử dụng return cho những phương thức phức tạp để code dễ hiểu và mạch lạc hơn.

8 - Mặc định tất cả các phương thức và classes trong Groovy đều public, nên chúng ta không cần viết từ khóa public cho chúng

9 - Trong groovy không có sự khác biệt giữa một 'checked' và 'unchecked' exception, do đó, nếu bạn đang viết 'throws' trong code của bạn, thì nó sẽ không được biên dịch bởi trình biên dịch groovy. 

10 -Trong groovy bạn không cần phải chỉ định một kiểu nguyên thủy như int, float ... hoặc một kiểu class để tạo ra một đối tượng, Tất cả bạn cần là đặt từ khoá 'def' và trình biên dịch groovy là đủ thông minh để phát hiện loại giá trị tham chiếu bạn đang gán cho một biến. 

def a = 10 
def f = 3.4 
def str = "Hello World"

những cú pháp này hoàn toàn hợp lệ trong groovy, mặc dù chúng ta có thể sử dụng như java:
int a = 10 
float f = 3.4 
String str = "Hello World" 

11 - Trong groovy, các parameteres chúng ta không cần định nghĩa kiểu cho chúng:
    def getValues ​​(number1, string1, ....)

   điều này là hoàn toàn đúng trong groovy, mặc dù bạn có thể viết
    def getValues ​​(def number1, def string1, ....)

   hoặc bạn có thể viết theo phong cách java
    getValues ​​def (int number1, String string1, ....) 

12 - Trong groovy, khi gọi một phương thức có tham số, ta có thể không cần truyền tham số. Ví dụ:
Nếu chúng ta có một phương thức
    def getValues (int number1, String string1, ....) 
Hoàn toàn chúng ta có thể gọi obj.getValues​​()Nhưng nếu các tham số được truyền thì chúng phải phù hợp với kiểu tham số tương ứng. 


Có rất nhiều thứ để thêm vào đây, nhưng những điểm đã đề cập ở trên sẽ cho bạn một sự hiểu biết nhanh chóng và tốt hơn về groovy?, sự khác biệt giữa java và groovy và những thứ khác. Nếu bạn là một Java Dev thì việc tiếp cận Groovy thật dễ dàng. Hãy thử groovy và cảm thấy sự khác biệt.

Comments

Popular posts from this blog

Ứng dụng giải thuật MiniMax trong trò chơi cờ tướng - Tìm hiểu về trí tuệ nhân tạo (Phần 2)

Chắc hẳn mọi người đều biết về trò chơi thú vị như cờ tướng. Tiếp theo loạt bài về trí tuệ nhân tạo, bài viết này mình sẽ nói về cụ thể giải thuật Minimax ứng dụng trong trò chơi trí tuệ cờ tướng như thế nào. OK! Let's go. 1. Ý tưởng Cờ tướng là trò chơi đối kháng, trong đó hai người luôn phiên nhau đi nước đi của mình. Trạng thái bắt đầu là trạng thái khởi tạo bàn cờ, sau mỗi nước đi của một bên, trạng thái bàn cờ sẽ được thay đổi thành một trạng thái mới hiện hành. Cờ tướng có luật của nó, và trò chơi sẽ kết thúc khi một người có được trạng thái phản ánh sự thắng cuộc hoặc hai người rơi vào trạng thái hòa cờ. Ta tìm cách phân tích xem từ một trạng thái nào đó sẽ dẫn đến đấu thủ nào sẽ thắng với điều kiện cả hai có trình độ như nhau. Giải thuật Minimax sẽ được áp dụng vào trong trò chơi cờ tướng. Hai đấu thủ trong trò chơi sẽ được gọi là MIN và MAX và hai đấu

Sử dụng Jedis làm việc với Redis trong Java

Bài viết này mình sẽ   giới thiệu về Jedis , một thư viện client Java cho  Redis . 1. Tại sao lại là Jedis? Redis liệt kê các thư viện client nổi tiếng nhất trên  trang web chính thức  của họ  .  Có nhiều lựa chọn thay thế cho Jedis, nhưng chỉ có hai lựa chọn khác xứng đáng để đề xuất đó là  lettuce  và  Redisson . Hai clients này có một số tính năng độc đáo như an toàn luồng, xử lý kết nối lại trong suốt và API không đồng bộ, tất cả các tính năng mà Jedis thiếu. Tuy nhiên, Jedis nhỏ và nhanh hơn đáng kể so với hai loại kia.  Bên cạnh đó, nó là thư viện client được lựa chọn của các nhà phát triển Spring Framework, và nó có cộng đồng lớn nhất trong cả ba. 2. Maven Dependencies Hãy bắt đầu bằng cách khai báo dependency trong file  pom.xml  : 1 2 3 4 5 < dependency >      < groupId >redis.clients</ groupId >      < artifactId >jedis</ artifactId >      < version >2.8.1</ version > </ dependency >

Sử dụng Jenkins để Build Docker Images

Khởi chạy Jenkins Khởi chạy Jenkins như một Docker Container với lệnh sau: docker run -d -u root --name jenkins \ -p 8080:8080 -p 50000:50000 \ -v /root/jenkins_2112:/var/jenkins_home \ jenkins/jenkins:2.112-alpine Load Dashboard Tên người dùng  admin có mật khẩu mặc định là  344827fbdbfb40d5aac067c7a07b9230 Trên hệ thống của bạn, bạn có thể tìm mật khẩu bằng docker exec -it jenkins cat /var/jenkins_home/secrets/initialAdminPassword Có thể mất vài giây để Jenkins hoàn thành việc bắt đầu và có sẵn.  Trong các bước tiếp theo, bạn sẽ sử dụng trang Dashboard để định cấu hình các plugin và bắt đầu tạo Image Docker. Cấu hình Plugin Docker Bước đầu tiên là cấu hình  plugin Docker  .  Plugin này dựa trên plugin Jenkins Cloud.  Khi build Docker Image, nó sẽ tạo ra một "Cloud Agent" thông qua plugin.  Tác nhân sẽ là Docker Container được cấu hình để giao tiếp với Docker Daemon Job build của Jenkins sẽ sử dụng vùng chứa nà