so sánh Groovy và Java

So sánh Groovy với Java, những điểm khác biệt thú vị

1. Default imports

Tất cả các packageclass này được import mặc định trong Groovy, tức là bạn không cần phải khai báo chúng như trong Java:

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

2. Không bắt buộc có dấu chấm phẩy

Groovy không bắt buộc phải có dấu chấm phẩy để kết thúc mỗi câu lệnh như trong Java. Tuy nhiên bạn có thể sử dụng dấu chấm phẩy trong một số trường hợp nhằm làm cho code dễ đọc hơn.

3. Không bắt buộc có lệnh return

Khi cần trả về một giá trị, bạn không bắt buộc phải có lệnh return mà chỉ cần có giá trị trả về là đủ.

Ví dụ:

void sum(a, b) {
    a + b // (tương ứng với return a + b)
}

4. Từ khóa def

Khi khai báo một biến hoặc một hàm, ta có thể sử dụng từ khóa def để định nghĩa kiểu nếu không muốn hạn chế kiểu dữ liệu của một đối tượng, sau đó def có thể được gán bằng một kiểu khác trong lúc runtime (giống như việc khai báo biến dùng kiểu Object trong Java vậy).

Ví dụ:

def a = 0
a = 'Hello World'

def someFunction(int i)  { // tương tự như Object someFunction(int i) {...}
    if (i < 0) {
        -1
    }
    'Hello World'
}

5. Public là access modifiers mặc định

Trong Groovy, các class và method được hiểu mặc định là public nên bạn không cần phải khai báo từ khóa public. Nếu bạn muốn thay đổi access modifiers thì bạn mới cần khai báo.

Ví dụ:

thay vì viết:

public class Bar {}

bạn nên viết:

class Bar {}

Nếu bạn muốn access modifiers chỉ trong một package thì bạn sẽ viết như thế này, dùng anotation:

class Student{
    @PackageScope String id
}

6. Khởi tạo mảng

Trong Groovy, khối {…} dành riêng cho Closures nên bạn không thể khai báo mảng giống Java như thế này:

int[] array = { 1, 2, 3}

Mà bạn sẽ phải viết như thế này:

int[] array = [1,2,3]

7. Toán tử ==

Trong Java bạn không thể dùng toán tử == để so sánh chuỗi. Tuy nhiên trong Groovy thì bạn có thể làm được.

Ví dụ:

'a'=='b' // false

sẽ tương ứng với:

a.compareTo(b) trong java

8. Getters and Setters

Trong một Java class thay vì bạn viết:

class Employee {
    private String name String getId(){
        return id;
    }
    void setId(String id) {
        this.id= id;
    }
}

thì trong Groovy bạn chỉ cần viết đơn giản:

class Employee {
    String id
}

9. Catch Exception

Trong Java thay vì bạn phải tường minh Exception:

try {
    int a = 1/0;
catch (Exception e) {
    e.printStackTrace();
}

thì trong Groovy bạn chỉ cần viết thế này:

try {
    int a = 1/0
catch (e) {
    e.printStackTrace()
}

(còn nữa)

Lời kết

Trên đây mình đã so sánh Groovy với Java, chia sẻ một số điểm khác biệt thú vị qua quá trình mình tìm hiểu và làm việc với chúng. Hy vọng sẽ giúp ích cho các bạn

Nếu các bạn có bất kỳ thắc mắc hoặc góp ý xin vui lòng để lại bình luận bên dưới nhé!

Cảm ơn các bạn!

Bonus:

  • Giới thiệu đến các bạn khóa học Lập trình Java trong 4 tuần cực hay của giảng viên nổi tiếng Trần Duy Thanh dành cho những bạn nào muốn học nhanh về Java.
  • Nội dung những gì bạn sẽ được học: Xem tại đây!

Nhớ ghi nguồn https://susudev.com khi đăng tải lại bài viết này