2010-05-18 43 views
8

Có ai cho tôi biết sự khác biệt giữa thư viện và thư viện gốc về mặt java không? Tôi thấy từ "mẹ đẻ thư viện" trong dòng sau:Sự khác biệt giữa thư viện và thư viện gốc

Loại 1 - trình điều khiển mà thực hiện các API JDBC là một ánh xạ dữ liệu khác API truy cập, chẳng hạn như ODBC. Trình điều khiển của loại này thường phụ thuộc vào thư viện gốc , giới hạn khả năng di động của chúng. Trình điều khiển JDBC-ODBC cầu là một ví dụ về trình điều khiển loại 1 .

mà bạn có thể tìm thấy here

Trả lời

13

"Thư viện gốc" thường có nghĩa là thư viện không phải Java được hệ thống sử dụng (vì vậy C/C++, v.v.). Hãy suy nghĩ các tệp DLL hoặc lib thông thường.

Java có thể tải các thư viện gốc này thông qua JNI.

+0

+1 để tham chiếu đến JNI – tangens

+0

Có thể tải tệp .dll java qua JNI không? – aioobe

+0

Tuyệt đối. Tôi chỉ thực hiện nó với các DLL được thiết kế đặc biệt để làm việc với JNI, vì vậy tôi không chắc liệu bạn có thể nạp bất kỳ DLL nào hay không, nhưng thường không quá khó để tạo một trình bao bọc JNI cho một thư viện gốc bình thường (bận rộn bận rộn, nhưng không phải nói chung là khó). – Herms

1

Một thư viện có nguồn gốc là một thư viện có chứa "mẹ đẻ" mã. Đó là, mã đã được biên dịch cho một kiến ​​trúc phần cứng cụ thể hoặc hệ điều hành như x86 hoặc windows.

Bao gồm thư viện gốc như vậy trong dự án của bạn có thể phá vỡ nền tảng độc lập của ứng dụng của bạn.

0

Trong ngữ cảnh này, "thư viện" được giả định tham chiếu đến thư viện được viết bằng Java (và có thể được phân phối dưới dạng jar) trong khi "thư viện gốc" đề cập đến thư viện được viết bằng thứ gì đó như C hoặc OpenForth và được biên dịch xuống máy mã.

0

Trong ngữ cảnh của Java, một thư viện được viết bằng Java và có sẵn dưới dạng các tệp Java bytecode * .class, thường được nén vào một tệp nén JAR. Ngược lại, một thư viện gốc là một thư viện đã được biên dịch thành mã máy và thường được viết bằng C hoặc C++. Thư viện gốc là các tệp * .so, * .dylib, * .dll, * .a hoặc * .lib (tùy thuộc vào nền tảng của bạn) liên kết với thư viện Giao diện Native Java (JNI) và hiển thị chức năng từ C hoặc C++ tới Java thông qua cơ chế Java Native Interace.

Các vấn đề liên quan