✨Giao diện lập trình ứng dụng

Giao diện lập trình ứng dụng

nhỏ|Ảnh chụp màn hình tài liệu [[API web viết bởi NASA]] Một giao diện lập trình ứng dụng (, viết tắt: API) là một giao diện mà một hệ thống máy tính hay ứng dụng cung cấp để cho phép các yêu cầu dịch vụ có thể được tạo ra từ các chương trình máy tính khác, và/hoặc cho phép dữ liệu có thể được trao đổi qua lại giữa chúng. Chẳng hạn, một chương trình máy tính có thể (và thường là phải) dùng các hàm API của hệ điều hành để xin cấp phát bộ nhớ và truy xuất tập tin. Nhiều loại hệ thống và ứng dụng thực hiện API, như các hệ thống đồ họa, cơ sở dữ liệu, mạng, dịch vụ web, và ngay cả một số trò chơi máy tính. Đây là phần mềm hệ thống cung cấp đầy đủ các chức năng và các tài nguyên mà các lập trình viên có thể rút ra từ đó để tạo nên các tính năng giao tiếp người - máy như: các trình đơn kéo xuống, tên lệnh, hộp hội thoại, lệnh bàn phím và các cửa sổ. Một trình ứng dụng có thể sử dụng nó để yêu cầu và thi hành các dịch vụ cấp thấp do hệ điều hành của máy tính thực hiện. Hệ giao tiếp lập trình ứng dụng giúp ích rất nhiều cho người sử dụng vì nó cho phép tiết kiệm được nhiều thời gian tìm hiểu các chương trình mới, do đó khích lệ mọi người dùng nhiều ứng dụng hơn.

Mô tả

Một trong các mục đích chính của một API là cung cấp khả năng truy xuất đến một tập các hàm hay dùng — ví dụ, hàm để vẽ các cửa sổ hay các icon trên màn hình. Các API, cũng như hầu hết các interfaces, là trừu tượng (abstract). Phần mềm mà muốn cung cấp truy xuất đến chính nó thông qua các API cho sẵn, phải hiện thực API đó. Trong nhiều tình huống, một API thường là một phần của bộ SDK, hay software development kit. Một bộ SDK có thể bao gồm một API cũng như các công cụ/phần cứng, vì thế hai thuật ngữ này không thay thế cho nhau được.

Có nhiều mô hình thiết kế khác nhau cho các APIs. Interfaces nhằm là cách thực thi nhanh nhất thường gồm các tập các hàm, thủ tục, biến và các cấu trúc dữ liệu. Tuy nhiên, các mô hình khác vẫn tồn tại, như bộ thông dịch dùng để ước giá biểu thức trong ECMAScript/JavaScript. Một API tốt thường cung cấp một "hộp đen" hay là một lớp trừu tượng (abstraction layer) bao bọc nó, nhằm đảm bảo là nhà lập trình không thể biết cách hiện thực cụ thể bên trong của mỗi hàm trong API. Điều này làm cho việc thiết kế lại hay cải tiến hàm của API đó trở nên dễ dàng hơn vì nó không làm đổ ỗ các đoạn mã khác mà có sử dụng các hàm đó.

Có hai dòng chính sách đối với việc công bố các APIs:

Một số công ty bảo vệ APIs của họ một cách mạnh mẽ. Ví dụ, Sony thường chỉ cung cấp API chính thức của PlayStation 2 cho các nhà phát triển PlayStation có đăng ký. Điều này là vì Sony muốn giới hạn những người có thể viết trò chơi trên PlayStation 2, và muốn thu lợi nhuận từ những người này càng nhiều càng tốt. Đây thường là chính sách đối với các công ty mà họ không thu lợi từ việc bán các hiện thực API của họ. Tuy nhiên, PlayStation 3 là công bố hoàn toàn APIs.

Một số công ty thì cung cấp miễn phí APIs. Ví dụ, Microsoft công bố hầu như hoàn toàn thông tin về các API, để cho các phần mềm có thể được viết chạy trên nền Windows. Việc bán của các phần mềm hãng thứ 3 đồng thời với việc phải mua Hệ điều hành Microsoft Windows. Đây thường là các công ty thu lợi nhuận từ việc bán các hiện thực API.

Một số APIs, chẳng hạn các API là chuẩn cho một hệ điều hành, được hiện thực dưới dạng các thư viện mã độc lập được phân phối kèm theo hệ điều hành. Một số khác thì đòi hỏi nhà sản xuất phần mềm phải tích hợp API trực tiếp vào trong chương trình. Microsoft Windows APIs đi kèm theo hệ điều hành cho phép mọi người có thể sử dụng chúng. Phần mềm cho các hệ thống nhúng như thiết bị chơi trò chơi thường thuộc vào loại tích hợp vào trong ứng dụng. Trong khi các tài liệu API chính thức của PlayStation là nên đọc, nhưng nó chẳng giúp ích gì nếu ta chẳng có các hiện thực của nó, dưới dạng một thư viện độc lập hay bộ công cụ phát triển phần mềm.

Một API mà cho phép truy xuất và sử dụng tự do được gọi là "mở." Các APIs được cung cấp bởi phần mềm mở (như mọi phần mềm được phân phối theo giấy phép đăng ký GNU), là mở theo đúng nghĩa, vì mọi người có thể xem mã nguồn của phần mềm và tìm ra API. Mặc dù việc tham khảo hiện thực vẫn tồn tại cho một API (như với Microsoft Windows cho Win32 API), thì việc tạo thêm các hiện thực bổ sung vẫn có thể diễn ra. Ví dụ, hầu hết các Win32 API có thể được cung cấp từ hệ thống UNIX dùng phần mềm tên là Wine.

👁️ 2 | 🔗 | 💖 | ✨ | 🌍 | ⌚
nhỏ|Ảnh chụp màn hình tài liệu [[API web viết bởi NASA]] Một **giao diện lập trình ứng dụng** (, viết tắt: _API_) là một giao diện mà một hệ thống máy tính hay ứng dụng
**Giao tiếp lập trình ứng dụng mở** (Open API) (thường được gọi là một giao tiếp lập trình ứng dụng công cộng.) là một giao tiếp lập trình ứng dụng công khai cung cấp cho
nhỏ|300x300px| So sánh cấp cao các API và ABI trong nhân-không gian người dùng và nội bộ nhân nhỏ|300x300px| [[Hạt nhân Linux|Nhân Linux và Thư viện GNU C định nghĩa API Linux. Sau khi biên
nhỏ|Plugin (điện toán) (Hình ảnh minh họa) Trong kỹ thuật máy tính, **plugin** (), **trình cắm**, hay **phần bổ trợ** là một bộ phần mềm hỗ trợ mà thêm những tính năng cụ thể cho
**Windows Runtime** (**WinRT**) là kiến trúc ứng dụng không cần biết nền tảng được giới thiệu lần đầu tiên trong Windows 8 và Windows Server 2012 năm 2012. WinRT hỗ trợ phát triển trong C++/WinRT
Trong thời đại công nghệ số hiện nay, API (Application Programming Interface - Giao diện lập trình ứng dụng) không chỉ đơn giản là một ứng dụng công nghệ. Nó còn là đại diện cho
**Document Object Model** (Mô hình Đối tượng Tài liệu), viết tắt là **DOM**, là một giao diện lập trình ứng dụng (API). Thông thường, DOM có dạng một cây cấu trúc dữ liệu, được dùng
**Giao diện quản lý nền tảng thông minh** (hay được gọi là **IPMI**, viết tắt của The Intelligent Platform Management Interface) là một tập hợp các thông số kỹ thuật giao diện máy tính cho
**Microsoft DirectX** là một tập hợp các giao diện lập trình ứng dụng (API) để xử lý các nhiệm vụ liên quan đến đa phương tiện, đặc biệt là chương trình trò chơi và video
**Streaming API cho XML** (StAX) là một giao diện lập trình ứng dụng (API) để đọc và viết các tài liệu XML, có nguồn gốc từ các cộng đồng ngôn ngữ lập trình Java. Theo
**API Windows** / **Windows API**, tên không chính thức **WinAPI**, là bộ giao diện lập trình ứng dụng (API) cốt lõi của Microsoft có sẵn trong các hệ điều hành Microsoft Windows. Tên Windows API
Hiện nay, Ngành ngân hàng đang chuyển dịch mạnh mẽ nhờ vào Open API (giao diện lập trình ứng dụng mở) và công nghệ AI (trí tuệ nhân tạo). Đây không chỉ là xu hướng
Trước đây, việc điều khiển một cỗ máy bằng cách nói chuyện với chúng chỉ là những câu chuyện trong khoa học viễn tưởng. Nhưng viễn tưởng này đang dần trở thành hiện thực với
**Phần mềm máy chủ ứng dụng** (tiếng Anh: _Application Server_) là một phần mềm (software engine) trong cung cấp ứng dụng phần mềm cho các máy trạm hoặc thiết bị, thông thường là qua mạng
**Pascal** là một ngôn ngữ lập trình cho máy tính thuộc dạng mệnh lệnh và thủ tục, được Niklaus Wirth phát triển vào năm 1970. Pascal là ngôn ngữ lập trình đặc biệt thích hợp
[[KDE 3.5]] [[GNOME 2.12.0]] Trong khoa học máy tính, **Hệ thống X Window** (còn được gọi tắt là **X11** hay **X**) là một windowing system dùng để hiển thị đồ họa bitmap. Nó cung ứng
**Unity** là một là một môi trường desktop phân nhánh từ GNOME được phát triển bởi Canonical Ltd. cho hệ điều hành Ubuntu. Unity ra mắt trong phiên bản netbook edition của Ubuntu 10.10. Ban
**Python** () là ngôn ngữ lập trình bậc cao đa năng. Triết lý thiết kế của nó nhấn mạnh khả năng đọc mã bằng cách sử dụng thụt lề đáng kể. Python có kiểu động
**C** là một ngôn ngữ mệnh lệnh được phát triển từ đầu thập niên 1970 bởi Dennis Ritchie để dùng trong hệ điều hành UNIX. Từ đó, ngôn ngữ này đã lan rộng ra nhiều
nhỏ|Linux API, Linux ABI, API và ABI trong nhân **Nhân Linux** cung cấp một số giao diện cho các ứng dụng ở không gian người dùng sử dụng cho các mục đích khác nhau và
nhỏ|Khan Academy, một ví dụ về một Universal Windows App nhỏ|Trái: Một ứng dụng desktop truyền thống chưa có nội dung gì; nó đang hiển thị 60 [[Thành tố điều khiển|thành tố đồ họa, và
**Lập trình máy tính** hay **lập chương trình máy tính,** thường gọi tắt là **lập trình** (, hay _programming_), là việc lập ra chương trình làm việc cho máy có bộ xử lý, nói riêng
Trong lập trình hướng đối tượng, **giao thức** (tiếng Anh: _protocol_) hay **giao diện** (_interface_) là một phương tiện phổ biến để các đối tượng không liên quan giao tiếp với nhau. Đây là định
**D** là một ngôn ngữ lập trình hệ thống hướng đối tượng, dùng câu lệnh, đa mẫu hình do Walter Bright của Digital Mars tạo ra và phát hành năm 2001. Quá trình thiết kế
**Kotlin** là một ngôn ngữ lập trình kiểu tĩnh chạy trên máy ảo Java (JVM) và có thể được biên dịch sang mã nguồn Java hay sử dụng cơ sở hạ tầng trình biên dịch
thumb|**Simple DirectMedia Layer** **Simple DirectMedia Layer** (thường được viết tắt là SDL) là một thư viện lập trình có khả năng trừu tượng hóa các phần cứng đồ họa, âm thanh hay thiết bị vào
**OpenGL** (**Open Graphics Library**) là một API đa nền tảng, đa ngôn ngữ cho kết xuất đồ họa vector 2D và 3D. API thường được sử dụng để tương tác với bộ xử lý đồ
phải|nhỏ|402x402px|[[Mã nguồn của một chương trình máy tính đơn giản được viết bằng ngôn ngữ lập trình C. Khi được biên dịch và chạy, nó sẽ cho kết quả "Hello, world!".]] **Ngôn ngữ lập trình**
**Lập trình hướng đối tượng** () là một mẫu hình lập trình dựa trên khái niệm "đối tượng", mà trong đó, đối tượng chứa đựng các dữ liệu trong các trường, thường được gọi là
thumb|**[[Phép tính lambda** là một hệ thống hình thức để định nghĩa hàm, ứng dụng hàm và đệ quy được Alonzo Church đề xuất vào những năm 193x.]] **Lý thuyết ngôn ngữ lập trình** (thường
Trong kỹ thuật phần mềm, một **Ứng dụng web** hay **web application**, **web app** là một trình ứng dụng mà có thể tiếp cận qua web thông qua mạng như Internet hay intranet. Ứng dụng
**Scratch** là một ngôn ngữ lập trình mang tính giáo dục miễn phí dựa trên các khối ngôn ngữ lập trình trực quan (VPL) và trang web chủ yếu để giáo dục lập trình, với
nhỏ|Ngôn ngữ lập trình TK **Tk** là bộ công cụ gồm các thành phần giao diện người dùng đồ họa (_GUI widget_). Sử dụng Tk với một ngôn ngữ lập trình, ta có thể viết
**Material Design** (tên mã là **Quantum Paper**) là một ngôn ngữ thiết kế được phát triển vào năm 2014 bởi Google. Mở rộng dựa trên mô típ "thẻ" có mặt trên Google Now, Material Design
Một **tiện ích mở rộng trình duyệt** hay **tiện ích mở rộng** (, đôi khi chỉ là _extension_) là một phần mềm nhỏ dùng để tùy biến một trình duyệt web. Trình duyệt thường có
Trong tin học, **ODBC** (viết tắt của **Open Database Connectivity** - _kết nối cơ sở dữ liệu mở_) cung cấp một phương pháp API phần mềm chuẩn cho việc sử dụng các hệ quản trị
Điện thoại phổ thông Goly G168 **Điện thoại phổ thông** (), còn gọi là điện thoại "cục gạch", điện thoại cơ bản hay điện thoại đời cũ (old phone), để phân biệt với điện thoại
Thuật ngữ **MPI** là viết tắt của **Message Passing Interface**, chỉ một dạng giao thức kết nối của máy tính. Nó nằm trong chuẩn _de facto_ cho kết nối giữa các nút chạy một chương
**Phần mềm dạng dịch vụ** (**SaaS** ) là mô hình cấp phép và phân phối phần mềm trong đó phần mềm được cấp phép trên cơ sở đăng ký và được lưu trữ tập trung.
**Salesforce.com, Inc.** hay **Salesforce** (tạm dịch: _Mại lực_, thường được viết tắt là **SF** hoặc **SFDC**) là một công ty phần mềm dựa trên đám mây của Mỹ có trụ sở tại San Francisco, California.
**Adobe AIR** (trước đây là **Adobe Integration Runtime**) là một hệ thống runtime đa nền tảng được Adobe Systems phát triển để xây dựng các ứng dụng máy tính để bàn và ứng dụng di
**Skype** (IPA: /'skaɪp/) là một mạng điện thoại Internet ngang hàng được thành lập bởi Niklas Zennström và Janus Friis, cũng là những người thành lập ra ứng dụng chia sẻ tập tin Kazaa và
**Shopify Inc.** là một công ty thương mại điện tử đa quốc gia của Canada có trụ sở chính tại Ottawa, Ontario. Shopify là tên của nền tảng thương mại điện tử độc quyền dành
**Mail** là một trình duyệt thư điện tử và newsgroup được phát triển bởi Microsoft và được cài đặt sẵn trong các hệ điều hành Windows Vista, 8, 8.1, và 10. Chức năng chính của
thumb|Các vòng lặp lên kế hoạch và phản hồi trong lập trình cực hạn **Lập trình cực hạn** (tiếng Anh: **Extreme programming**, viết tắt là **XP**) là một quy trình phát triển phần mềm nhằm
nhỏ|Trò chơi điện tử ứng dụng hóa **Trò chơi điện tử ứng dụng hóa** hay còn gọi tắt là **game hóa** (tiếng Anh: _gamification_) một thuật ngữ về một xu hướng quản lý mới, cho
**LibreOffice** là bộ ứng dụng văn phòng mã nguồn mở do The Document Foundation phát triển. Nó phân nhánh từ OpenOffice.org năm 2010, phiên bản nguồn mở của StarOffice trước đó. Bộ LibreOffice bao gồm
**Java** (phiên âm Tiếng Việt: "_Gia-va_") là một ngôn ngữ lập trình hướng đối tượng, dựa trên lớp được thiết kế để có càng ít phụ thuộc thực thi càng tốt. Nó là ngôn ngữ
thumb|[[Menu thả xuống gồm các lệnh thao tác tập tin trong chương trình trên Microsoft Windows.]] Trong điện toán và viễn thông thì **menu** là danh sách các tùy chọn hoặc các lệnh được trình
**Ada** là ngôn ngữ lập trình xuất xứ từ Bộ quốc phòng Mỹ vào khoảng nửa đầu thập niên 80 của thế kỷ 20. Ngôn ngữ này được đặt tên theo Ada Augusta nữ bá