chrome.runtime (original) (raw)

Chuyển ngay đến nội dung chính

chrome.runtime

Mô tả

Sử dụng API chrome.runtime để truy xuất trình thực thi dịch vụ, trả về thông tin chi tiết về tệp kê khai, đồng thời theo dõi và phản hồi các sự kiện trong vòng đời của tiện ích. Bạn cũng có thể dùng API này để chuyển đổi đường dẫn tương đối của URL thành URL đủ điều kiện.

Hầu hết các thành phần của API này đều không yêu cầu bất kỳ quyền nào. Bạn cần có quyền này cho connectNative(), sendNativeMessage()onNativeConnect.

Ví dụ sau đây cho biết cách khai báo quyền "nativeMessaging" trong tệp kê khai:

manifest.json:

{
  "name": "My extension",
  ...
  "permissions": [
    "nativeMessaging"
  ],
  ...
}

Khái niệm và cách sử dụng

Runtime API cung cấp các phương thức hỗ trợ một số lĩnh vực mà các tiện ích của bạn có thể sử dụng:

Truyền thông báo

Tiện ích của bạn có thể giao tiếp với các bối cảnh khác nhau trong tiện ích của bạn và cả với các tiện ích khác bằng cách sử dụng các phương thức và sự kiện sau: connect(), onConnect, onConnectExternal, sendMessage(), onMessageonMessageExternal. Ngoài ra, tiện ích của bạn có thể truyền thông báo đến các ứng dụng gốc trên thiết bị của người dùng bằng cách sử dụng connectNative()sendNativeMessage().

Truy cập vào siêu dữ liệu của tiện ích và nền tảng

Các phương thức này cho phép bạn truy xuất một số phần siêu dữ liệu cụ thể về tiện ích và nền tảng. Các phương thức trong danh mục này bao gồm getManifest()getPlatformInfo().

Quản lý vòng đời và các lựa chọn của tiện ích

Các thuộc tính này cho phép bạn thực hiện một số thao tác meta trên tiện ích và hiển thị trang tuỳ chọn. Các phương thức và sự kiện trong danh mục này bao gồm onInstalled, onStartup, openOptionsPage(), reload(), requestUpdateCheck()setUninstallURL().

Tiện ích trợ lý

Các phương thức này cung cấp tiện ích, chẳng hạn như việc chuyển đổi các biểu thị tài nguyên nội bộ sang định dạng bên ngoài. Các phương thức trong danh mục này bao gồm getURL().

Tiện ích ở chế độ Kiosk

Các phương thức này chỉ có trên ChromeOS và chủ yếu dùng để hỗ trợ việc triển khai chế độ kiosk. Các phương thức trong danh mục này bao gồm restart()restartAfterDelay()`.

Hành vi của tiện ích chưa đóng gói

Khi một tiện ích chưa đóng gói được tải lại, thao tác này được coi là một bản cập nhật. Điều này có nghĩa là sự kiện chrome.runtime.onInstalled sẽ kích hoạt với lý do "update". Điều này bao gồm cả trường hợp tiện ích được tải lại bằng chrome.runtime.reload().

Trường hợp sử dụng

Thêm hình ảnh vào trang web

Để truy cập vào một tài sản được lưu trữ trên một miền khác, trang web phải chỉ định URL đầy đủ của tài nguyên (ví dụ: <img src="https://example.com/logo.png">). Điều này cũng đúng khi bạn muốn thêm một thành phần mở rộng vào trang web. Hai điểm khác biệt là tài sản của tiện ích phải được hiển thị dưới dạng tài nguyên có thể truy cập trên web và thông thường, tập lệnh nội dung chịu trách nhiệm chèn tài sản tiện ích.

Trong ví dụ này, tiện ích sẽ thêm logo.png vào trang mà tập lệnh nội dung đang được chèn vào bằng cách sử dụng runtime.getURL() để tạo một URL đủ điều kiện. Nhưng trước tiên, tài sản phải được khai báo là một tài nguyên có thể truy cập trên web trong tệp kê khai.

manifest.json:

{
  ...
  "web_accessible_resources": [
    {
      "resources": [ "logo.png" ],
      "matches": [ "https://*/*" ]
    }
  ],
  ...
}

content.js:

{ // Block used to avoid setting global variables
  const img = document.createElement('img');
  img.src = chrome.runtime.getURL('logo.png');
  document.body.append(img);
}

Gửi dữ liệu từ một tập lệnh nội dung đến service worker

Thông thường, tập lệnh nội dung của một tiện ích cần dữ liệu do một phần khác của tiện ích quản lý, chẳng hạn như worker dịch vụ. Giống như hai cửa sổ trình duyệt mở cùng một trang web, hai ngữ cảnh này không thể truy cập trực tiếp vào các giá trị của nhau. Thay vào đó, tiện ích có thể sử dụng truyền thông điệp để phối hợp trên các bối cảnh khác nhau này.

Trong ví dụ này, tập lệnh nội dung cần một số dữ liệu từ trình chạy dịch vụ của tiện ích để khởi động giao diện người dùng. Để lấy dữ liệu này, nó sẽ truyền thông báo get-user-data do nhà phát triển xác định đến worker dịch vụ và phản hồi bằng một bản sao thông tin của người dùng.

content.js:

// 1. Send a message to the service worker requesting the user's data
chrome.runtime.sendMessage('get-user-data', (response) => {
  // 3. Got an asynchronous response with the data from the service worker
  console.log('received user data', response);
  initializeUI(response);
});

service-worker.js:

// Example of a simple user data object
const user = {
  username: 'demo-user'
};

chrome.runtime.onMessage.addListener((message, sender, sendResponse) => {
  // 2. A page requested user data, respond with a copy of `user`
  if (message === 'get-user-data') {
    sendResponse(user);
  }
});

Thu thập ý kiến phản hồi về việc gỡ cài đặt

Nhiều tiện ích sử dụng các cuộc khảo sát sau khi gỡ cài đặt để tìm hiểu cách tiện ích có thể phục vụ người dùng tốt hơn và cải thiện tỷ lệ giữ chân. Ví dụ sau đây cho thấy cách thêm chức năng này.

background.js:

chrome.runtime.onInstalled.addListener(details => {
  if (details.reason === chrome.runtime.OnInstalledReason.INSTALL) {
    chrome.runtime.setUninstallURL('https://example.com/extension-survey');
  }
});

Ví dụ

Hãy xem Manifest V3 – Bản minh hoạ Tài nguyên có thể truy cập trên web để biết thêm ví dụ về Runtime API.

Loại

ContextFilter

Một bộ lọc để so khớp với một số bối cảnh tiện ích nhất định. Các bối cảnh trùng khớp phải khớp với tất cả bộ lọc được chỉ định; mọi bộ lọc không được chỉ định sẽ khớp với tất cả bối cảnh có sẵn. Do đó, bộ lọc `{}` sẽ khớp với tất cả các bối cảnh có sẵn.

Thuộc tính

ContextType

Enum

"TAB"
Chỉ định loại bối cảnh là thẻ

"POPUP"
Chỉ định loại bối cảnh là cửa sổ bật lên của tiện ích

"BACKGROUND"
Chỉ định loại bối cảnh là một worker dịch vụ.

"OFFSCREEN_DOCUMENT"
Chỉ định loại bối cảnh là tài liệu hiển thị bên ngoài màn hình.

"SIDE_PANEL"
Chỉ định loại bối cảnh là bảng điều khiển bên.

"DEVELOPER_TOOLS"
Chỉ định loại bối cảnh là công cụ cho nhà phát triển.

ExtensionContext

Một bối cảnh lưu trữ nội dung tiện ích.

Thuộc tính

MessageSender

Một đối tượng chứa thông tin về ngữ cảnh tập lệnh đã gửi một thông báo hoặc yêu cầu.

Thuộc tính

OnInstalledReason

Lý do khiến sự kiện này được gửi đi.

Enum

"install"
Chỉ định lý do của sự kiện là cài đặt.

"update"
Chỉ định lý do của sự kiện là bản cập nhật tiện ích.

"chrome_update"
Chỉ định lý do của sự kiện là bản cập nhật Chrome.

"shared_module_update"
Chỉ định lý do của sự kiện là nội dung cập nhật cho một mô-đun dùng chung.

OnRestartRequiredReason

Lý do sự kiện được gửi đi. "app_update" được dùng khi cần khởi động lại vì ứng dụng được cập nhật lên phiên bản mới hơn. "os_update" được dùng khi cần khởi động lại vì trình duyệt/hệ điều hành được cập nhật lên phiên bản mới hơn. "periodic" được dùng khi hệ thống chạy lâu hơn thời gian hoạt động được phép mà bạn đặt trong chính sách doanh nghiệp.

Enum

"app_update"
Chỉ định lý do của sự kiện là bản cập nhật cho ứng dụng.

"os_update"
Chỉ định lý do của sự kiện là bản cập nhật cho hệ điều hành.

"periodic"
Chỉ định lý do xảy ra sự kiện là ứng dụng khởi động lại định kỳ.

PlatformArch

Cấu trúc bộ xử lý của máy.

Enum

"arm"
Chỉ định cấu trúc bộ xử lý là arm.

"arm64"
Chỉ định kiến trúc bộ xử lý là arm64.

"x86-32"
Chỉ định kiến trúc bộ xử lý là x86-32.

"x86-64"
Chỉ định cấu trúc bộ xử lý là x86-64.

"mips"
Chỉ định kiến trúc bộ xử lý là mips.

"mips64"
Chỉ định kiến trúc bộ xử lý là mips64.

"riscv64"
Chỉ định kiến trúc bộ xử lý là riscv64.

PlatformInfo

Một đối tượng chứa thông tin về nền tảng hiện tại.

Thuộc tính

PlatformNaclArch

Cấu trúc ứng dụng gốc. Điều này có thể khác với arch trên một số nền tảng.

Enum

"arm"
Chỉ định kiến trúc ứng dụng gốc là arm.

"x86-32"
Chỉ định kiến trúc ứng dụng gốc là x86-32.

"x86-64"
Chỉ định kiến trúc ứng dụng gốc là x86-64.

"mips"
Chỉ định kiến trúc ứng dụng gốc là mips.

"mips64"
Chỉ định kiến trúc ứng dụng gốc là mips64.

PlatformOs

Hệ điều hành mà Chrome đang chạy.

Enum

"mac"
Chỉ định hệ điều hành MacOS.

"win"
Chỉ định hệ điều hành Windows.

"android"
Chỉ định hệ điều hành Android.

"cros"
Chỉ định hệ điều hành Chrome.

"linux"
Chỉ định hệ điều hành Linux.

"openbsd"
Chỉ định hệ điều hành OpenBSD.

Port

Một đối tượng cho phép giao tiếp hai chiều với các trang khác. Hãy xem phần Kết nối duy trì lâu dài để biết thêm thông tin.

Thuộc tính

RequestUpdateCheckStatus

Kết quả của quá trình kiểm tra bản cập nhật.

Enum

"throttled"
Chỉ định rằng quá trình kiểm tra trạng thái đã bị điều tiết. Điều này có thể xảy ra sau khi bạn kiểm tra nhiều lần trong một khoảng thời gian ngắn.

"no_update"
Chỉ định rằng không có bản cập nhật nào có thể cài đặt.

"update_available"
Cho biết có một bản cập nhật có thể cài đặt.

Thuộc tính

id

Mã nhận dạng của tiện ích/ứng dụng.

lastError

Được điền sẵn thông báo lỗi nếu việc gọi một hàm API không thành công; nếu không, giá trị này sẽ là undefined. Điều này chỉ được xác định trong phạm vi của lệnh gọi lại hàm đó. Nếu xảy ra lỗi nhưng runtime.lastError không được truy cập trong lệnh gọi lại, thì một thông báo sẽ được ghi vào bảng điều khiển, liệt kê hàm API đã gây ra lỗi. Các hàm API trả về promise không đặt thuộc tính này.

Thuộc tính

Phương thức

connect()

chrome.runtime.connect(
  extensionId?: string,
  connectInfo?: object,
): Port

Cố gắng kết nối các trình nghe trong một tiện ích (chẳng hạn như trang nền) hoặc các tiện ích/ứng dụng khác. Điều này hữu ích cho các tập lệnh nội dung kết nối với các quy trình của tiện ích, giao tiếp giữa các ứng dụng/tiện ích và nhắn tin trên web. Xin lưu ý rằng phương thức này không kết nối với bất kỳ trình nghe nào trong tập lệnh nội dung. Tiện ích có thể kết nối với tập lệnh nội dung được nhúng trong các thẻ thông qua tabs.connect.

Thông số

Giá trị trả về

connectNative()

chrome.runtime.connectNative(
  application: string,
): Port

Kết nối với một ứng dụng gốc trong máy chủ lưu trữ. Phương thức này yêu cầu quyền "nativeMessaging". Hãy xem phần Native Messaging (Nhắn tin gốc) để biết thêm thông tin.

Thông số

Giá trị trả về

getBackgroundPage()

Chỉ ở nền trước Không dùng nữa kể từ Chrome 133

chrome.runtime.getBackgroundPage(): Promise<Window | undefined>

Các trang nền không tồn tại trong tiện ích MV3.

Truy xuất đối tượng "window" JavaScript cho trang nền đang chạy trong tiện ích/ứng dụng hiện tại. Nếu trang nền là một trang sự kiện, hệ thống sẽ đảm bảo trang đó được tải trước khi gọi lệnh gọi lại. Nếu không có trang nền, thì sẽ xảy ra lỗi.

Giá trị trả về

getContexts()

Chrome 116 trở lênMV3 trở lên

chrome.runtime.getContexts(
  filter: ContextFilter,
): Promise<ExtensionContext[]>

Tìm nạp thông tin về các bối cảnh đang hoạt động được liên kết với tiện ích này

Thông số

Giá trị trả về

getManifest()

chrome.runtime.getManifest(): object

Trả về thông tin chi tiết về ứng dụng hoặc tiện ích từ tệp kê khai. Đối tượng được trả về là một chuỗi hoá của tệp kê khai đầy đủ.

Giá trị trả về

getPackageDirectoryEntry()

chrome.runtime.getPackageDirectoryEntry(): Promise

Trả về một DirectoryEntry cho thư mục gói.

Giá trị trả về

getPlatformInfo()

chrome.runtime.getPlatformInfo(): Promise<PlatformInfo>

Trả về thông tin về nền tảng hiện tại.

Giá trị trả về

getURL()

chrome.runtime.getURL(
  path: string,
): string

Chuyển đổi một đường dẫn tương đối trong thư mục cài đặt ứng dụng/tiện ích thành một URL đủ điều kiện.

Thông số

Giá trị trả về

getVersion()

chrome.runtime.getVersion(): string

Trả về phiên bản của tiện ích như được khai báo trong tệp kê khai.

Giá trị trả về

openOptionsPage()

chrome.runtime.openOptionsPage(): Promise

Mở trang tuỳ chọn của Tiện ích (nếu có thể).

Hành vi chính xác có thể phụ thuộc vào khoá options_ui hoặc options_page của tệp kê khai hoặc những gì Chrome hỗ trợ tại thời điểm đó. Ví dụ: trang này có thể mở trong một thẻ mới, trong chrome://extensions, trong một ứng dụng hoặc chỉ cần tập trung vào một trang tuỳ chọn đang mở. Thao tác này sẽ không bao giờ khiến trang gọi tải lại.

Nếu Tiện ích của bạn không khai báo trang tuỳ chọn hoặc Chrome không tạo được trang tuỳ chọn vì một số lý do khác, lệnh gọi lại sẽ đặt lastError.

Giá trị trả về

reload()

chrome.runtime.reload(): void

Tải lại ứng dụng hoặc tiện ích. Phương thức này không được hỗ trợ ở chế độ kiosk. Đối với chế độ kiosk, hãy sử dụng phương thức chrome.runtime.restart().

requestUpdateCheck()

chrome.runtime.requestUpdateCheck(): Promise

Yêu cầu kiểm tra bản cập nhật ngay lập tức cho ứng dụng/tiện ích này.

Quan trọng: Hầu hết các tiện ích/ứng dụng không nên sử dụng phương thức này, vì Chrome đã tự động kiểm tra sau mỗi vài giờ và bạn có thể theo dõi sự kiện runtime.onUpdateAvailable mà không cần gọi requestUpdateCheck.

Phương thức này chỉ phù hợp để gọi trong những trường hợp rất hạn chế, chẳng hạn như nếu tiện ích của bạn giao tiếp với một dịch vụ phụ trợ và dịch vụ phụ trợ đó xác định rằng phiên bản tiện ích của ứng dụng đã quá cũ và bạn muốn nhắc người dùng cập nhật. Hầu hết các trường hợp sử dụng requestUpdateCheck khác, chẳng hạn như gọi hàm này vô điều kiện dựa trên bộ hẹn giờ lặp lại, có thể chỉ làm lãng phí tài nguyên của máy khách, mạng và máy chủ.

Lưu ý: Khi được gọi bằng một lệnh gọi lại, thay vì trả về một đối tượng, hàm này sẽ trả về hai thuộc tính dưới dạng các đối số riêng biệt được truyền đến lệnh gọi lại.

Giá trị trả về

restart()

chrome.runtime.restart(): void

Khởi động lại thiết bị ChromeOS khi ứng dụng chạy ở chế độ kiosk. Nếu không, thao tác này sẽ không có hiệu lực.

restartAfterDelay()

chrome.runtime.restartAfterDelay(
  seconds: number,
): Promise

Khởi động lại thiết bị ChromeOS khi ứng dụng chạy ở chế độ kiosk sau một số giây nhất định. Nếu được gọi lại trước khi hết thời gian, quá trình khởi động lại sẽ bị trì hoãn. Nếu được gọi bằng giá trị -1, quá trình khởi động lại sẽ bị huỷ. Đây là một thao tác không có tác dụng ở chế độ không phải kiosk. Chỉ tiện ích đầu tiên gọi API này mới được phép gọi API này nhiều lần.

Thông số

Giá trị trả về

sendMessage()

chrome.runtime.sendMessage(
  extensionId?: string,
  message: any,
  options?: object,
): Promise

Gửi một thông báo duy nhất đến trình nghe sự kiện trong tiện ích hoặc một tiện ích/ứng dụng khác. Tương tự như runtime.connect nhưng chỉ gửi một thông báo duy nhất, có phản hồi không bắt buộc. Nếu gửi đến tiện ích của bạn, sự kiện runtime.onMessage sẽ được kích hoạt trong mọi khung hình của tiện ích (ngoại trừ khung hình của người gửi) hoặc runtime.onMessageExternal nếu là một tiện ích khác. Xin lưu ý rằng tiện ích không thể gửi thông báo đến tập lệnh nội dung bằng phương thức này. Để gửi thông báo đến tập lệnh nội dung, hãy dùng tabs.sendMessage.

Thông số

Giá trị trả về

sendNativeMessage()

chrome.runtime.sendNativeMessage(
  application: string,
  message: object,
): Promise

Gửi một thông báo duy nhất đến một ứng dụng gốc. Phương thức này yêu cầu quyền "nativeMessaging".

Thông số

Giá trị trả về

setUninstallURL()

chrome.runtime.setUninstallURL(
  url: string,
): Promise

Đặt URL sẽ được truy cập khi gỡ cài đặt. Bạn có thể dùng dữ liệu này để dọn dẹp dữ liệu phía máy chủ, phân tích và triển khai các bản khảo sát. Tối đa 1023 ký tự.

Thông số

Giá trị trả về

Sự kiện

onBrowserUpdateAvailable

chrome.runtime.onBrowserUpdateAvailable.addListener(
  callback: function,
)

Vui lòng sử dụng runtime.onRestartRequired.

Sự kiện này sẽ kích hoạt khi có bản cập nhật Chrome nhưng không được cài đặt ngay vì cần phải khởi động lại trình duyệt.

Thông số

onConnect

chrome.runtime.onConnect.addListener(
  callback: function,
)

Kích hoạt khi có kết nối từ quy trình tiện ích hoặc tập lệnh nội dung (bằng runtime.connect).

Thông số

onConnectExternal

chrome.runtime.onConnectExternal.addListener(
  callback: function,
)

Được kích hoạt khi có kết nối từ một tiện ích khác (bằng runtime.connect) hoặc từ một trang web có thể kết nối bên ngoài.

Thông số

onConnectNative

chrome.runtime.onConnectNative.addListener(
  callback: function,
)

Được kích hoạt khi có một kết nối từ ứng dụng gốc. Sự kiện này yêu cầu quyền "nativeMessaging". Tính năng này chỉ được hỗ trợ trên ChromeOS.

Thông số

onInstalled

chrome.runtime.onInstalled.addListener(
  callback: function,
)

Kích hoạt khi tiện ích được cài đặt lần đầu, khi tiện ích được cập nhật lên phiên bản mới và khi Chrome được cập nhật lên phiên bản mới.

Thông số

onMessage

chrome.runtime.onMessage.addListener(
  callback: function,
)

Kích hoạt khi một thông báo được gửi từ quy trình của tiện ích (bằng runtime.sendMessage) hoặc một tập lệnh nội dung (bằng tabs.sendMessage).

Thông số

onMessageExternal

chrome.runtime.onMessageExternal.addListener(
  callback: function,
)

Kích hoạt khi một thông báo được gửi từ một tiện ích khác (bằng runtime.sendMessage). Không thể dùng trong tập lệnh nội dung.

Thông số

onRestartRequired

chrome.runtime.onRestartRequired.addListener(
  callback: function,
)

Kích hoạt khi một ứng dụng hoặc thiết bị mà ứng dụng đó chạy cần được khởi động lại. Ứng dụng nên đóng tất cả các cửa sổ vào thời điểm thuận tiện sớm nhất để cho phép quá trình khởi động lại diễn ra. Nếu ứng dụng không làm gì, thì hệ thống sẽ buộc khởi động lại sau khi hết thời gian gia hạn 24 giờ. Hiện tại, sự kiện này chỉ được kích hoạt cho các ứng dụng ở chế độ kiosk trên ChromeOS.

Thông số

onStartup

chrome.runtime.onStartup.addListener(
  callback: function,
)

Kích hoạt khi một hồ sơ đã cài đặt tiện ích này khởi động lần đầu tiên. Sự kiện này không được kích hoạt khi một hồ sơ ẩn danh được khởi động, ngay cả khi tiện ích này đang hoạt động ở chế độ ẩn danh "tách biệt".

Thông số

onSuspend

chrome.runtime.onSuspend.addListener(
  callback: function,
)

Được gửi đến trang sự kiện ngay trước khi trang này bị huỷ tải. Điều này giúp tiện ích có cơ hội dọn dẹp một số nội dung. Xin lưu ý rằng vì trang đang được huỷ tải, nên mọi thao tác không đồng bộ bắt đầu trong khi xử lý sự kiện này đều không được đảm bảo hoàn tất. Nếu có nhiều hoạt động hơn cho trang sự kiện trước khi trang đó được huỷ tải, thì sự kiện onSuspendCanceled sẽ được gửi và trang sẽ không bị huỷ tải.

Thông số

onSuspendCanceled

chrome.runtime.onSuspendCanceled.addListener(
  callback: function,
)

Được gửi sau onSuspend để cho biết rằng ứng dụng sẽ không bị gỡ tải sau khi tất cả.

Thông số

onUpdateAvailable

chrome.runtime.onUpdateAvailable.addListener(
  callback: function,
)

Kích hoạt khi có bản cập nhật nhưng không được cài đặt ngay lập tức vì ứng dụng hiện đang chạy. Nếu không làm gì, bản cập nhật sẽ được cài đặt vào lần tiếp theo trang nền được gỡ tải. Nếu muốn cài đặt sớm hơn, bạn có thể gọi chrome.runtime.reload() một cách rõ ràng. Nếu tiện ích của bạn đang sử dụng trang nền liên tục, thì trang nền sẽ không bao giờ được gỡ tải. Do đó, trừ phi bạn gọi chrome.runtime.reload() theo cách thủ công để phản hồi sự kiện này, nếu không bản cập nhật sẽ không được cài đặt cho đến lần tiếp theo Chrome tự khởi động lại. Nếu không có trình xử lý nào đang theo dõi sự kiện này và tiện ích của bạn có một trang nền liên tục, thì tiện ích sẽ hoạt động như thể chrome.runtime.reload() được gọi để phản hồi sự kiện này.

Thông số

onUserScriptConnect

Chrome 115 trở lênMV3 trở lên

chrome.runtime.onUserScriptConnect.addListener(
  callback: function,
)

Được kích hoạt khi một kết nối được thực hiện từ tập lệnh người dùng của tiện ích này.

Thông số

onUserScriptMessage

Chrome 115 trở lênMV3 trở lên

chrome.runtime.onUserScriptMessage.addListener(
  callback: function,
)

Được kích hoạt khi một thông báo được gửi từ tập lệnh người dùng liên kết với cùng một tiện ích.

Thông số

Trừ phi có lưu ý khác, nội dung của trang này được cấp phép theo Giấy phép ghi nhận tác giả 4.0 của Creative Commons và các mẫu mã lập trình được cấp phép theo Giấy phép Apache 2.0. Để biết thông tin chi tiết, vui lòng tham khảo Chính sách trang web của Google Developers. Java là nhãn hiệu đã đăng ký của Oracle và/hoặc các đơn vị liên kết với Oracle.

Cập nhật lần gần đây nhất: 2024-02-06 UTC.