Trong khoa học máy tính, thư viện là tập hợp các tài nguyên không biến động được sử dụng bởi các chương trình máy tính, thường để phát triển phần mềm. Chúng có thể bao gồm dữ liệu cấu hình, tài liệu, dữ liệu trợ giúp, mẫu thông báo, mã được viết sẵn và chương trình con, lớp, giá trị hoặc thông số kỹ thuật loại. Trong OS / 360 của IBM và những người kế nhiệm của họ, chúng được gọi là các tập dữ liệu được phân vùng.
Một thư viện cũng là một tập hợp các triển khai hành vi, được viết bằng ngôn ngữ, có giao diện được xác định rõ ràng theo đó hành vi được gọi. Chẳng hạn, những người muốn viết chương trình cấp cao hơn có thể sử dụng thư viện để thực hiện các cuộc gọi hệ thống thay vì thực hiện các cuộc gọi hệ thống đó nhiều lần. Ngoài ra, hành vi được cung cấp để tái sử dụng bởi nhiều chương trình độc lập. Một chương trình gọi hành vi do thư viện cung cấp thông qua cơ chế của ngôn ngữ. Ví dụ, trong một ngôn ngữ mệnh lệnh đơn giản như C, hành vi trong thư viện được gọi bằng cách sử dụng chức năng gọi bình thường của C. Điều phân biệt lời gọi là chức năng thư viện, so với chức năng khác trong cùng một chương trình, là cách mã được tổ chức trong hệ thống.
Mã thư viện được tổ chức theo cách có thể được sử dụng bởi nhiều chương trình không có kết nối với nhau, trong khi mã là một phần của chương trình được tổ chức chỉ được sử dụng trong một chương trình đó. Sự khác biệt này có thể đạt được một khái niệm phân cấp khi một chương trình phát triển lớn, chẳng hạn như một chương trình hàng triệu dòng. Trong trường hợp đó, có thể có các thư viện nội bộ được sử dụng lại bởi các phần phụ độc lập của chương trình lớn. Đặc điểm nổi bật là một thư viện được tổ chức cho các mục đích được sử dụng lại bởi các chương trình hoặc chương trình phụ độc lập và người dùng chỉ cần biết giao diện chứ không phải chi tiết bên trong của thư viện.
Bạn đang đọc: Thư viện (máy tính) – Wikipedia tiếng Việt">Thư viện (máy tính) – Wikipedia tiếng Việt
Giá trị của một thư viện nằm trong việc tái sử dụng hành vi. Khi một chương trình gọi một thư viện, nó có được hành vi được thực thi bên trong thư viện đó mà không phải thực thi chính hành vi đó. Các thư viện khuyến khích việc san sẻ mã theo kiểu mô đun và thuận tiện phân phối mã .Hành vi được triển khai bởi một thư viện hoàn toàn có thể được liên kết với chương trình gọi ở những tiến trình vòng đời chương trình khác nhau. Nếu mã của thư viện được truy vấn trong quy trình thiết kế xây dựng chương trình gọi, thì thư viện được gọi là thư viện tĩnh. [ 1 ] Một cách khác là kiến thiết xây dựng chương trình thực thi của chương trình gọi và phân phối nó, độc lập với việc tiến hành thư viện. Hành vi thư viện được liên kết sau khi thực thi đã được gọi để được thực thi, như thể một phần của quy trình mở màn thực thi, hoặc ở giữa thực thi. Trong trường hợp này, thư viện được gọi là thư viện động ( được tải trong thời hạn chạy ). Một thư viện động hoàn toàn có thể được tải và link khi chuẩn bị sẵn sàng một chương trình để thực thi, bởi trình link. Ngoài ra, ở giữa thực thi, một ứng dụng hoàn toàn có thể nhu yếu rõ ràng rằng một mô-đun được tải .Hầu hết những ngôn từ được biên dịch đều có thư viện chuẩn mặc dầu những lập trình viên cũng hoàn toàn có thể tạo thư viện tùy chỉnh của riêng họ. Hầu hết những mạng lưới hệ thống ứng dụng tân tiến phân phối những thư viện triển khai phần đông những dịch vụ mạng lưới hệ thống. Các thư viện như vậy đã thương mại kinh doanh hóa những dịch vụ mà một ứng dụng tân tiến nhu yếu. Như vậy, hầu hết những mã được sử dụng bởi những ứng dụng tân tiến được phân phối trong những thư viện mạng lưới hệ thống này .
Các khái niệm lập trình sớm nhất tương tự như như những thư viện nhằm mục đích mục tiêu tách những định nghĩa tài liệu khỏi việc thực thi chương trình. JOVIAL đã đưa khái niệm ” COMPOOL ” ( Nhóm truyền thông online ) được quan tâm vào năm 1959, mặc dầu nó đã vận dụng ý tưởng sáng tạo từ ứng dụng mạng lưới hệ thống lớn SAGE. Theo những nguyên tắc khoa học máy tính về phân tách mối chăm sóc và che giấu thông tin, ” Mục đích của Comm Pool là cho phép san sẻ Dữ liệu Hệ thống giữa nhiều chương trình bằng cách cung ứng diễn đạt tài liệu tập trung chuyên sâu. ” [ 2 ]COBOL cũng gồm có ” những năng lực nguyên thủy cho một mạng lưới hệ thống thư viện ” vào năm 1959, [ 3 ] nhưng Jean Sammet đã diễn đạt chúng là ” cơ sở thư viện không khá đầy đủ ” khi nhìn lại. [ 4 ]Một góp phần lớn khác cho khái niệm thư viện tân tiến Open dưới hình thức thay đổi chương trình con của FORTRAN. Các chương trình con FORTRAN hoàn toàn có thể được biên dịch độc lập với nhau, nhưng trình biên dịch thiếu một trình link. Vì vậy, trước khi trình làng những mô-đun trong Fortran-90, việc kiểm tra kiểu giữa những chương trình con FORTRAN [ NB 1 ] là không hề. [ 5 ]
Cuối cùng, các nhà sử học của khái niệm nên nhớ Simula 67 có ảnh hưởng. Simula là ngôn ngữ lập trình hướng đối tượng đầu tiên và các lớp của nó gần giống với khái niệm hiện đại như được sử dụng trong Java, C++ và C#. Khái niệm lớp của Simula cũng là một tổ tiên của package trong Ada và mô-đun của Modula-2.[6] Ngay cả khi được phát triển ban đầu vào năm 1965, các lớp Simula có thể được bao gồm trong các tệp thư viện và được thêm vào lúc biên dịch.[7]
Thư viện rất quan trọng trong việc liên kết chương trình hay quá trình ràng buộc, trong đó giải quyết tài liệu tham khảo được gọi là link hoặc biểu tượng đến module thư viện. Quá trình liên kết thường được thực hiện tự động bởi một linker hoặc binder tìm kiếm một tập hợp các thư viện và các mô-đun khác theo một thứ tự nhất định. Thông thường, nó không được coi là lỗi nếu có thể tìm thấy mục tiêu liên kết nhiều lần trong một bộ thư viện nhất định. Liên kết có thể được thực hiện khi một file thực thi được tạo hoặc bất cứ khi nào chương trình được sử dụng trong thời gian chạy.
Các tham chiếu đang được xử lý hoàn toàn có thể là địa chỉ cho những bước nhảy và những lời gọi thường thì khác. Chúng hoàn toàn có thể nằm trong chương trình chính, hoặc trong một mô-đun tùy thuộc vào mô-đun khác. Chúng được phân giải thành những địa chỉ cố định và thắt chặt hoặc hoàn toàn có thể xác định lại ( từ một cơ sở chung ) bằng cách phân chia bộ nhớ thời hạn chạy cho những phân đoạn bộ nhớ của mỗi mô-đun được tham chiếu .
Một số ngôn ngữ lập trình có thể sử dụng một tính năng gọi là liên kết thông minh, theo đó trình liên kết nhận biết hoặc tích hợp với trình biên dịch, để trình liên kết biết cách sử dụng các tham chiếu bên ngoài và mã trong thư viện không bao giờ được sử dụng, mặc dù được tham chiếu bên trong bị loại bỏ khỏi ứng dụng biên dịch. Ví dụ, một chương trình chỉ sử dụng số nguyên cho số học hoặc hoàn toàn không có hoạt động số học, có thể loại trừ các thói quen thư viện dấu phẩy động. Tính năng liên kết thông minh này có thể dẫn đến kích thước tệp ứng dụng nhỏ hơn và giảm mức sử dụng bộ nhớ.
Một số tham chiếu trong mô-đun chương trình hoặc thư viện được lưu trữ ở dạng tương đối hoặc biểu tượng không thể giải quyết cho đến khi tất cả mã và thư viện được gán địa chỉ tĩnh cuối cùng. Di chuyển là quá trình điều chỉnh các tham chiếu này và được thực hiện bởi trình liên kết hoặc trình tải. Nói chung, việc di chuyển không thể được thực hiện cho các thư viện riêng lẻ vì các địa chỉ trong bộ nhớ có thể khác nhau tùy thuộc vào chương trình sử dụng chúng và các thư viện khác mà chúng được kết hợp với. Mã độc lập vị trí tránh tham chiếu đến các địa chỉ tuyệt đối và do đó không yêu cầu di chuyển.
Xem Tóm Tắt Bài Viết Này
- 1 Thư viện tĩnh[sửa|sửa mã nguồn]
- 2 Thư viện dùng chung[sửa|sửa mã nguồn]
- 2.1 Chia sẻ bộ nhớ[sửa|sửa mã nguồn]
- 2.2 Liên kết động[sửa|sửa mã nguồn]
- 2.3 Tối ưu hóa[sửa|sửa mã nguồn]
- 2.4 Định vị thư viện trong thời hạn chạy[sửa|sửa mã nguồn]
- 3 Thư viện đối tượng người dùng và lớp[sửa|sửa mã nguồn]
- 4 Thư viện từ xa[sửa|sửa mã nguồn]
- 5 Thư viện tạo mã[sửa|sửa mã nguồn]
- 6 Đặt tên file[sửa|sửa mã nguồn]
- 7 Liên kết ngoài[sửa|sửa mã nguồn]
Thư viện tĩnh[sửa|sửa mã nguồn]
Khi liên kết được thực hiện trong quá trình tạo file thực thi hoặc file đối tượng khác, nó được gọi là liên kết tĩnh hoặc liên kết sớm. Trong trường hợp này, liên kết thường được thực hiện bởi một trình liên kết, nhưng cũng có thể được thực hiện bởi trình biên dịch. Một thư viện tĩnh, còn được gọi là một kho lưu trữ, là một dự định được liên kết tĩnh. Ban đầu, chỉ có các thư viện tĩnh tồn tại. Liên kết tĩnh phải được thực hiện khi bất kỳ mô-đun nào được biên dịch lại.
Tất cả những mô-đun được nhu yếu bởi một chương trình đôi lúc được link tĩnh và sao chép vào file thực thi. Quá trình này và file độc lập tác dụng, được gọi là bản dựng tĩnh của chương trình. Một bản dựng tĩnh hoàn toàn có thể không cần chuyển dời thêm nếu bộ nhớ ảo được sử dụng và không cần ngẫu nhiên sắp xếp khoảng trống địa chỉ. [ 8 ]
Thư viện dùng chung[sửa|sửa mã nguồn]
Thư viện dùng chung hoặc đối tượng dùng chung là một file được dự định chia sẻ bởi các file thực thi và các file đối tượng được chia sẻ thêm. Các mô-đun được sử dụng bởi một chương trình được tải từ các đối tượng chia sẻ riêng lẻ vào bộ nhớ khi tải hoặc thời gian chạy, thay vì được sao chép bởi một trình liên kết khi nó tạo một file thực thi nguyên khối duy nhất cho chương trình.
Thư viện dùng chung có thể được liên kết tĩnh, nghĩa là các tham chiếu đến các mô-đun thư viện được giải quyết và các mô-đun được cấp phát bộ nhớ khi file thực thi được tạo. Nhưng thường liên kết các thư viện chia sẻ bị hoãn cho đến khi chúng được tải.[Còn mơ hồ – thảo luận]
Hầu hết những hệ quản lý và điều hành tân tiến [ NB 2 ] hoàn toàn có thể có những file thư viện dùng chung định dạng với những file thực thi. Điều này phân phối hai ưu điểm chính : thứ nhất, nó nhu yếu chỉ tạo một bộ tải cho cả hai, chứ không phải hai ( có bộ tải đơn được coi là có giá trị phức tạp thêm vào ). Thứ hai, nó được cho phép những file thực thi cũng được sử dụng làm thư viện dùng chung, nếu chúng có bảng ký hiệu. Các định dạng thư viện san sẻ và thực thi phối hợp nổi bật là ELF và Mach-O ( cả trong Unix ) và PE ( Windows ) .Trong một số ít thiên nhiên và môi trường cũ hơn như Windows 16 bit hoặc MPE cho HP 3000, tài liệu chỉ dựa trên ngăn xếp ( cục bộ ) được được cho phép trong mã thư viện dùng chung hoặc những hạn chế đáng kể khác được đặt trên mã thư viện dùng chung .
Chia sẻ bộ nhớ[sửa|sửa mã nguồn]
Mã thư viện có thể được chia sẻ trong bộ nhớ bởi nhiều tiến trình, cũng như trên đĩa. Nếu bộ nhớ ảo được sử dụng, các quy trình sẽ thực thi cùng một trang RAM vật lý được ánh xạ vào các không gian địa chỉ khác nhau của các quy trình. Điều này có lợi thế. Chẳng hạn, trên hệ thống OpenStep, các ứng dụng thường chỉ có kích thước vài trăm kilobyte và được tải nhanh chóng; phần lớn mã của họ được đặt trong các thư viện đã được hệ điều hành tải cho các mục đích khác.[cần dẫn nguồn]
Các chương trình hoàn toàn có thể triển khai san sẻ RAM bằng cách sử dụng mã độc lập với vị trí, như trong Unix, dẫn đến kiến trúc phức tạp nhưng linh động hoặc bằng cách sử dụng những địa chỉ ảo thông dụng, như trong Windows và OS / 2. Các mạng lưới hệ thống này bảo vệ, bằng nhiều thủ pháp khác nhau như ánh xạ trước khoảng trống địa chỉ và vị trí đặt chỗ cho mỗi thư viện dùng chung, mã đó có Tỷ Lệ lớn được san sẻ. Một lựa chọn thay thế sửa chữa thứ ba là bộ nhớ một cấp, được sử dụng bởi Hệ thống IBM / 38 và những người tiếp sau của nó. Điều này được cho phép mã nhờ vào vào vị trí, nhưng không đặt số lượng giới hạn đáng kể về nơi hoàn toàn có thể đặt mã hoặc cách san sẻ mã .Trong 1 số ít trường hợp, những phiên bản khác nhau của thư viện dùng chung hoàn toàn có thể gây ra sự cố, đặc biệt quan trọng là khi những thư viện của những phiên bản khác nhau có cùng tên file và những ứng dụng khác nhau được thiết lập trên một mạng lưới hệ thống, mỗi ứng dụng nhu yếu một phiên bản đơn cử. Một ngữ cảnh như vậy được gọi là âm ti DLL, đặt theo tên file DLL của Windows và OS / 2. Hầu hết những hệ điều hành quản lý tân tiến sau năm 2001 đều có những chiêu thức quét dọn để vô hiệu những trường hợp đó hoặc sử dụng những thư viện ” riêng tư ” dành riêng cho ứng dụng. [ 9 ]
Liên kết động[sửa|sửa mã nguồn]
Liên kết động hoặc link trễ là link được thực thi trong khi chương trình đang được tải ( loadtime ) hoặc được thực thi ( runtime ), thay vì khi file thực thi được tạo. Thư viện được link động ( thư viện link động hay DLL, trong Windows và OS / 2 ; đối tượng người tiêu dùng san sẻ động hay DSO, trong những mạng lưới hệ thống giống Unix ) là thư viện dành cho link động. Chỉ một lượng việc làm tối thiểu được triển khai bởi trình link khi file thực thi được tạo ; nó chỉ ghi lại những gì thư viện liên tục chương trình cần và tên chỉ mục hoặc số của những thường trình trong thư viện. Phần lớn việc làm link được thực thi tại thời gian ứng dụng được tải ( loadtime ) hoặc trong khi thực thi ( runtime ). Thông thường, chương trình link thiết yếu, được gọi là ” trình link động ” hoặc ” trình tải link “, thực sự là một phần của hệ quản lý và điều hành cơ bản. ( Tuy nhiên, hoàn toàn có thể, và không quá khó, để viết một chương trình sử dụng link động và gồm có trình link động của chính nó, ngay cả so với một hệ điều hành quản lý không tương hỗ link động. )
Các lập trình viên ban đầu đã phát triển liên kết động trong hệ điều hành Multics, bắt đầu từ năm 1964 và MTS (Michigan Terminal System), được xây dựng vào cuối những năm 1960.[10]
Tối ưu hóa[sửa|sửa mã nguồn]
Vì những thư viện dùng chung trên hầu hết những mạng lưới hệ thống không đổi khác liên tục, nên những mạng lưới hệ thống hoàn toàn có thể thống kê giám sát địa chỉ tải có năng lực cho mỗi thư viện dùng chung trên mạng lưới hệ thống trước khi cần và tàng trữ thông tin đó trong thư viện và những file thực thi. Nếu mọi thư viện san sẻ được tải đã trải qua quy trình này, thì mỗi thư viện sẽ tải tại địa chỉ được xác lập trước, giúp tăng cường quy trình link động. Tối ưu hóa này được gọi là prebinding trong macOS và prelinking trong Linux. Nhược điểm của kỹ thuật này gồm có thời hạn thiết yếu để giám sát trước những địa chỉ này mỗi khi thư viện san sẻ biến hóa, không hề sử dụng ngẫu nhiên bố cục tổng quan khoảng trống địa chỉ và nhu yếu đủ khoảng trống địa chỉ ảo để sử dụng ( một yếu tố sẽ được giảm bớt khi vận dụng kiến trúc 64 – bit, tối thiểu là trong thời gian hiện tại ) .
Định vị thư viện trong thời hạn chạy[sửa|sửa mã nguồn]
Các trình tải cho những thư viện san sẻ rất phong phú về tính năng. Một số nhờ vào vào những đường dẫn tàng trữ rõ ràng đến những thư viện. Bất kỳ biến hóa nào so với việc đặt tên thư viện hoặc bố cục tổng quan của mạng lưới hệ thống file sẽ khiến những mạng lưới hệ thống này bị lỗi. Thông thường hơn, chỉ có tên của thư viện ( chứ không phải đường dẫn ) được tàng trữ trong file thực thi, với hệ điều hành cung cấp phương pháp để tìm thư viện trên đĩa, dựa trên một số ít thuật toán .
Nếu một thư viện dùng chung mà một file thực thi phụ thuộc vào sẽ bị xóa, di chuyển hoặc đổi tên hoặc nếu một phiên bản thư viện không tương thích được sao chép vào một vị trí sớm hơn trong tìm kiếm, thì file thực thi sẽ không tải được. Đây được gọi là địa ngục phụ thuộc, tồn tại trên nhiều nền tảng. Biến thể Windows (khét tiếng) thường được gọi là địa ngục DLL. Vấn đề này không thể xảy ra nếu mỗi phiên bản của mỗi thư viện được xác định duy nhất và mỗi chương trình chỉ tham chiếu các thư viện bằng các định danh duy nhất đầy đủ của chúng. Các vấn đề”địa ngục DLL”với các phiên bản Windows trước đó phát sinh từ việc chỉ sử dụng tên của các thư viện không được bảo đảm là duy nhất để giải quyết các liên kết động trong các chương trình. (Để tránh”DLL hell”, các phiên bản Windows sau này chủ yếu dựa vào các tùy chọn cho các chương trình cài đặt DLL riêng – về cơ bản là rút lui một phần khỏi việc sử dụng các thư viện dùng chung – cùng với các cơ chế để ngăn thay thế DLL hệ thống dùng chung với các phiên bản trước đó.)
Microsoft Windows kiểm tra registry để xác định vị trí thích hợp để tải DLL thực hiện các đối tượng COM, nhưng đối với các DLL khác, nó sẽ kiểm tra các thư mục theo thứ tự xác định. Đầu tiên, Windows kiểm tra thư mục nơi nó tải chương trình (private DLL); bất kỳ thư mục nào được đặt bằng cách gọi hàm SetDllDirectory()
; các thư mục System32, System và Windows; sau đó là thư mục làm việc hiện tại; và cuối cùng là các thư mục được chỉ định bởi biến môi trường PATH.[11] Ứng dụng viết cho .NET Framework (từ năm 2002), cũng kiểm tra Global hội Cache là kho lưu trữ chính của các Global Assembly Cache là kho lưu trữ chính của các file dll được chia sẻ để loại bỏ vấn đề về địa ngục DLL.
OpenStep đã sử dụng một mạng lưới hệ thống linh động hơn, tích lũy list những thư viện từ một số ít vị trí đã biết ( tựa như như khái niệm PATH ) khi mạng lưới hệ thống khởi động lần tiên phong. Di chuyển những thư viện xung quanh không gây ra yếu tố gì cả, mặc dầu người dùng phải chịu ngân sách thời hạn khi lần tiên phong khởi động mạng lưới hệ thống .
Các mạng lưới hệ thống tựa như Unix[sửa|sửa mã nguồn]
Hầu hết các hệ thống tương tự Unix đều có “đường dẫn tìm kiếm” chỉ định các thư mục hệ thống file để tìm thư viện động. Một số hệ thống chỉ định đường dẫn mặc định trong file cấu hình, một số hệ thống khác mã hóa nó vào trình tải động. Một số định dạng file thực thi có thể chỉ định các thư mục bổ sung để tìm kiếm thư viện cho một chương trình cụ thể. Điều này thường có thể được ghi đè bằng một biến môi trường, mặc dù nó bị vô hiệu hóa cho các chương trình setuid và setgid, do đó người dùng không thể buộc chương trình đó chạy mã tùy ý với quyền gốc. Các nhà phát triển thư viện được khuyến khích đặt thư viện động của họ ở những nơi trong đường dẫn tìm kiếm mặc định. Mặt khác, điều này có thể làm cho việc cài đặt các thư viện mới gặp vấn đề và các vị trí”đã biết”này nhanh chóng trở thành nhà của số lượng file thư viện ngày càng tăng, khiến việc quản lý trở nên phức tạp hơn.
Tảo động ( Dynamic loading ), một tập hợp con của link động, gồm có tải và dỡ tải thư viện được link động tại thời hạn chạy theo nhu yếu. Một nhu yếu như vậy hoàn toàn có thể được triển khai ngầm trong thời hạn biên dịch hoặc rõ ràng vào thời hạn chạy. Các nhu yếu ngầm được triển khai tại thời gian biên dịch khi một trình link thêm những tham chiếu thư viện gồm có những đường dẫn file hoặc chỉ đơn thuần là tên file. Yêu cầu rõ ràng được triển khai khi những ứng dụng thực thi cuộc gọi trực tiếp tới API của hệ quản lý trong thời hạn chạy .
Hầu hết các hệ điều hành hỗ trợ các thư viện được liên kết động cũng hỗ trợ tải động các thư viện đó thông qua API liên kết thời gian chạy. Ví dụ, Microsoft Windows sử dụng các hàm API LoadLibrary, LoadLibraryEx, FreeLibrary và GetProcAddress với Microsoft Dynamic Link Libraries; Các hệ thống dựa trên POSIX, bao gồm hầu hết các hệ thống tương tự Unix và Unix, sử dụng dlopen, dlclose và dlsym. Một số hệ thống phát triển tự động hóa quá trình này.
Thư viện đối tượng người dùng và lớp[sửa|sửa mã nguồn]
Mặc dù khởi đầu đi tiên phong vào những năm 1960, link động không đến được những hệ quản lý được người tiêu dùng sử dụng cho đến cuối những năm 1980. Nó thường có sẵn ở 1 số ít dạng trong hầu hết những hệ quản lý vào đầu những năm 1990. Trong cùng thời hạn này, lập trình hướng đối tượng người dùng ( OOP ) đã trở thành một phần quan trọng trong toàn cảnh lập trình. OOP với ràng buộc thời hạn chạy nhu yếu thông tin bổ trợ mà những thư viện truyền thống cuội nguồn không phân phối. Ngoài tên và điểm nhập của mã nằm trong, họ cũng nhu yếu một list những đối tượng người tiêu dùng mà chúng nhờ vào. Đây là công dụng phụ của một trong những lợi thế chính, sự thừa kế của OOP, có nghĩa là những phần của định nghĩa hoàn hảo của bất kể giải pháp nào hoàn toàn có thể ở những nơi khác nhau. Điều này không chỉ đơn thuần là liệt kê rằng một thư viện nhu yếu dịch vụ của người khác : trong một mạng lưới hệ thống OOP thực sự, bản thân những thư viện hoàn toàn có thể không được biết đến tại thời gian biên dịch và biến hóa tùy theo mạng lưới hệ thống .Đồng thời, nhiều nhà tăng trưởng đã triển khai sáng tạo độc đáo về những chương trình nhiều tầng, trong đó một ” hiển thị ” chạy trên máy tính để bàn sẽ sử dụng những dịch vụ của máy tính lớn hoặc máy tính mini để tàng trữ hoặc giải quyết và xử lý tài liệu. Chẳng hạn, một chương trình trên máy tính dựa trên GUI sẽ gửi tin nhắn đến một máy tính mini để trả về những mẫu nhỏ của một tập dữ liệu khổng lồ để hiển thị. Các lời gọi thủ tục từ xa ( RPC ) đã giải quyết và xử lý những tác vụ này, nhưng không có mạng lưới hệ thống RPC tiêu chuẩn .
Chẳng mấy chốc, phần lớn các nhà cung cấp máy tính mini và máy tính lớn đã thúc đẩy các dự án kết hợp cả hai, tạo ra một định dạng thư viện OOP có thể được sử dụng ở bất cứ đâu. Các hệ thống như vậy được gọi là thư viện đối tượng hoặc đối tượng phân tán, nếu chúng hỗ trợ truy cập từ xa (không phải tất cả đã làm). COM của Microsoft là một ví dụ về một hệ thống như vậy để sử dụng cục bộ, DCOM là phiên bản sửa đổi hỗ trợ truy cập từ xa.
Trong 1 số ít thời hạn, những thư viện đối tượng người tiêu dùng giữ trạng thái ” điều lớn tiếp theo ” trong quốc tế lập trình. Có 1 số ít nỗ lực để tạo ra những mạng lưới hệ thống sẽ chạy trên những nền tảng và những công ty đã cạnh tranh đối đầu để nỗ lực khiến những nhà tăng trưởng bị khóa trong mạng lưới hệ thống của riêng họ. Các ví dụ gồm có System Object Model ( SOM / DSOM ) của IBM, Distributed Objects Everywhere ( DOE ) của Sun Microsystems, Portable Distributed Objects ( PDO ) của NeXT, ObjectBroker của Digital, Component Object Model ( COM / DCOM ) của Microsoft và bất kể số lượng những mạng lưới hệ thống dựa trên CORBA .
Sau sự hạ nhiệt không thể tránh khỏi của tiếp thị cường điệu, các thư viện đối tượng tiếp tục được sử dụng trong cả lập trình hướng đối tượng và hệ thống thông tin phân tán. Các thư viện lớp là tương đương OOP thô của các loại mã thư viện cũ. Chúng chứa các lớp, mô tả các đặc điểm và định nghĩa các hành động (phương thức) liên quan đến các đối tượng. Các thư viện lớp được sử dụng để tạo các thể hiện hoặc các đối tượng với các đặc tính của chúng được đặt thành các giá trị cụ thể. Trong một số ngôn ngữ OOP, như Java, sự khác biệt rất rõ ràng, với các lớp thường có trong các file thư viện (như định dạng file JAR của Java) và các đối tượng được khởi tạo chỉ nằm trong bộ nhớ (mặc dù có khả năng tồn tại trong các file riêng biệt). Trong những ngôn ngữ khác, như Smalltalk, các thư viện lớp chỉ là điểm khởi đầu cho một hình ảnh hệ thống bao gồm toàn bộ trạng thái của môi trường, các lớp và tất cả các đối tượng được khởi tạo.
Thư viện từ xa[sửa|sửa mã nguồn]
Một giải pháp khác cho yếu tố thư viện đến từ việc sử dụng những file thực thi trọn vẹn riêng không liên quan gì đến nhau ( thường ở dạng nhẹ ) và gọi chúng bằng cách sử dụng một lời gọi thủ tục từ xa ( RPC ) qua mạng đến một máy tính khác. Cách tiếp cận này tối đa hóa việc sử dụng lại hệ điều hành quản lý : mã thiết yếu để tương hỗ thư viện là cùng một mã được sử dụng để phân phối tương hỗ và bảo mật thông tin ứng dụng cho mọi chương trình khác. Ngoài ra, những mạng lưới hệ thống như vậy không nhu yếu thư viện sống sót trên cùng một máy, nhưng hoàn toàn có thể chuyển tiếp những nhu yếu qua mạng .Tuy nhiên, cách tiếp cận như vậy có nghĩa là mọi lời gọi thư viện yên cầu một lượng ngân sách đáng kể. Các lời gọi RPC đắt hơn nhiều so với việc gọi một thư viện san sẻ đã được tải trên cùng một máy. Cách tiếp cận này thường được sử dụng trong kiến trúc phân tán, sử dụng nhiều những cuộc gọi từ xa như vậy, đáng quan tâm là những mạng lưới hệ thống máy chủ-máy khách và sever ứng dụng như Enterprise JavaBeans .
Thư viện tạo mã[sửa|sửa mã nguồn]
Thư viện tạo mã là những API cấp cao hoàn toàn có thể tạo hoặc quy đổi mã byte cho Java. Chúng được sử dụng bởi lập trình hướng theo góc nhìn, một số ít khung truy vấn tài liệu và để thử nghiệm để tạo những đối tượng người dùng proxy động. Chúng cũng được sử dụng để chặn truy vấn trường. [ 12 ]
Đặt tên file[sửa|sửa mã nguồn]
Các kho hệ thống file libfoo.a
và libfoo.so
trong thư mục như /lib
, /usr/lib
hoặc /usr/local/lib
. Tên file luôn bắt đầu bằng lib
và kết thúc bằng hậu tố .a
(kho lưu trữ, thư viện tĩnh) hoặc .so
(đối tượng chia sẻ, thư viện được liên kết động). Một số hệ thống có thể có nhiều tên cho thư viện được liên kết động, với hầu hết các tên là tên cho các liên kết tượng trưng cho tên còn lại; những tên đó có thể bao gồm phiên bản chính của thư viện hoặc số phiên bản đầy đủ; ví dụ, trên một số hệ thống libfoo.so.2
sẽ là tên file cho lần sửa đổi giao diện chính thứ hai của thư viện libfoo
được liên kết động. Các file .la
đôi khi được tìm thấy trong các thư mục thư viện là kho lưu trữ libtool, không thể sử dụng được bởi hệ thống.
Hệ thống kế thừa các quy ước thư viện tĩnh từ BSD, với thư viện được lưu trữ trong file .a
và có thể sử dụng các thư viện được liên kết động theo kiểu .so
(với hậu tố .dylib
thay thế). Tuy nhiên, hầu hết các thư viện trong macOS đều bao gồm”khung”, được đặt trong các thư mục đặc biệt gọi là”bundles”bao bọc các file và siêu dữ liệu cần thiết của thư viện. Ví dụ: một khung có tên MyFramework
sẽ được triển khai trong một gói có tên MyFramework.framework
, với MyFramework.framework/MyFramework
là file thư viện được liên kết động hoặc là một liên kết tượng trưng đến file thư viện được liên kết động trong MyFramework.framework/Versions/Current/MyFramework
.
Các thư viện liên kết động thường có hậu tố *.
DLL
,[13] mặc dù các phần mở rộng tên file khác có thể xác định các thư viện được liên kết động theo mục đích cụ thể, ví dụ: *.
OCX
cho các thư viện OLE. Các bản sửa đổi giao diện được mã hóa trong tên file hoặc được trừu tượng hóa bằng giao diện đối tượng COM. Tùy thuộc vào cách chúng được biên dịch, file *.
LIB
file có thể là thư viện tĩnh hoặc biểu diễn của các thư viện có thể liên kết động chỉ cần trong quá trình biên dịch, được gọi là”thư viện nhập”. Không giống như trong thế giới UNIX, sử dụng các phần mở rộng file khác nhau, khi liên kết với file .
LIB
trong Windows phải biết đó là thư viện tĩnh thông thường hay thư viện nhập. Trong trường hợp sau, file .
LL
phải có mặt trong thời gian chạy.
- ^
It was possible earlier between, e.g., Ada subprograms.
- ^ Some older systems, e. g., Burroughs MCP Multics, also have only a single format for executable files, regardless of whether they are shared .
Liên kết ngoài[sửa|sửa mã nguồn]
Source: https://sangtaotrongtamtay.vn
Category: Công nghệ