Bạn đã có phần mềm của mình, nhưng bạn vẫn cần một phương pháp hiệu quả hơn để cho phép người dùng kỹ thuật của bạn mở rộng nền tảng.
Mặc dù OSGi nổi tiếng với hầu hết các nhà phát triển Java, việc tích hợp nó vào sản phẩm của bạn có vẻ như là một nhiệm vụ khó khăn. Sự thiếu rõ ràng về các hoạt động chính xác của OSGi càng làm xáo trộn con đường phía trước.
Trái ngược với bất kỳ thứ gì họ muốn thử nghiệm, OSGi cảm thấy giống như đang cố gắng đi ra biển rộng đối với nhiều nhà phát triển Java.
Bài viết này sẽ giới thiệu cho bạn hướng dẫn mùa xuân OSGi Felix bằng cách sử dụng một chương trình đơn giản và trình bày chi tiết, ưu điểm của nó và các chi tiết quan trọng khác.
Vậy OSGi là gì?
Việc tạo và phân phối các mô-đun và thành phần có thể thực hiện được nhờ khung công tác Java được gọi là OSGi (Open Service Gateway Initiative).
Nó nhấn mạnh vào tính năng đóng gói chức năng và kết hợp lỏng lẻo, mang lại một số lợi thế cho các nhà phát triển, bao gồm chức năng mô-đun có thể chuyển giao dễ dàng giữa các mã nguồn và thử nghiệm mà không cần phụ thuộc bất tận.
OSGi hoạt động như thế nào?
Hệ thống thành phần động cho Java được xác định bởi một tập hợp các đặc tả được gọi là OSGi. Các thông số kỹ thuật này cho phép một cách tiếp cận phát triển trong đó một ứng dụng được xây dựng từ một số bộ phận và sau đó được đóng gói thành các gói.
Các dịch vụ cục bộ và dựa trên mạng được các thành phần này sử dụng để giao tiếp. Mục đích của việc làm cho mã lõi của chương trình càng nhỏ gọn càng khả thi. Có thể ghép nối cao giữa mã này và một số thành phần.
Các phần tử xây dựng có thể tái sử dụng của ứng dụng được gọi là các thành phần. Hãy nghĩ về các tính năng như giỏ hàng cho trang web thương mại điện tử của bạn hoặc ứng dụng tính lương cho hệ thống quản lý nhân viên của bạn.
Các thành phần có thể sử dụng OSGi để ẩn việc triển khai của chúng khỏi các thành phần khác và chỉ cung cấp dữ liệu cần thiết cho chúng thông qua các dịch vụ.
Điều này ngăn các thành phần vô tình thay đổi dữ liệu mà chúng không nên có quyền truy cập và quản lý các phần phụ thuộc.
Tất cả các kết nối giữa các thành phần trong một ứng dụng OSGi được thực hiện thông qua các dịch vụ trong một thế giới lý tưởng. Một gói Java chứa API được chỉ định cho các dịch vụ.
Sự hợp tác giữa nhà cung cấp dịch vụ và khách hàng yêu cầu sử dụng các lớp và / hoặc giao diện tạo nên API.
Tất cả các thành phần OSGi được đóng gói cùng nhau trong các gói, mỗi thành phần bao gồm các tài nguyên mà chúng yêu cầu để hoạt động. Các gói khá rõ ràng về những gì chúng cần từ môi trường và những gì chúng có khả năng.
Lợi ích
- Các ứng dụng OSGi có quyền truy cập vào kho lưu trữ gói bên ngoài.
- Khung cho phép thiết kế hướng dịch vụ ở cấp độ mô-đun.
- Nó giúp bạn có thể quản lý các phiên bản và phần phụ thuộc của các gói ứng dụng ngoài việc chuẩn hóa và giúp tích hợp các thư viện của bên thứ ba dễ dàng hơn.
- Các ứng dụng thích nghi hơn với các nhu cầu thay đổi, di động hơn và cấu trúc lại nhanh hơn.
- A ứng dụng web có thể được triển khai dưới dạng một nhóm các gói OSGi đã được phiên bản hóa với thời gian tồn tại động nhờ sự tích hợp của khung với mô hình lập trình Java EE.
- Thay vì được cài đặt dưới dạng thư viện của bên thứ ba như một phần của ứng dụng, khung cung cấp lắp ráp khai báo và kiểm tra đơn vị được sắp xếp hợp lý của Spring Framework ở dạng chuẩn hóa được cung cấp như một phần của thời gian chạy máy chủ ứng dụng.
- Đối với các ứng dụng công ty được tạo thành từ một số gói được tạo phiên bản với vòng đời động, khung công tác cung cấp sự cô lập.
- Nó chứa một kho lưu trữ gói tích hợp có thể lưu trữ các gói được chia sẻ chung và được tạo phiên bản được một số ứng dụng sử dụng, ngăn không cho mỗi ứng dụng triển khai một bản sao riêng biệt của từng thư viện được chia sẻ.
Bắt đầu với OSGi Felix mùa xuân
Nhận các tài nguyên
Bằng cách tải xuống phiên bản mới nhất của Apache Karaf từ trang web này, chúng ta có thể bắt đầu cuộc phiêu lưu OSGi của mình.
Dựa trên Apache Felix, việc triển khai Apache của đặc tả OSGi, Apache Karaf cung cấp nền tảng cho các ứng dụng dựa trên OSGi.
Karaf cung cấp nhiều tính năng hữu ích khác nhau trên Felix sẽ hỗ trợ chúng tôi làm quen với OSGi, chẳng hạn như giao diện dòng lệnh cho phép chúng tôi giao tiếp với nền tảng.
Điểm tham gia cho các gói
Ứng dụng phải được đóng gói dưới dạng gói OSGi trước khi có thể chạy trong môi trường OSGi. Ngoài ra, điểm nhập đơn phải được chỉ định; nó không phải là hàm tiêu chuẩn public static void main (String [] args).
Vì vậy, hãy bắt đầu bằng cách tạo một “Xin chào thế giới”Ứng dụng dựa trên OSGi.
Chúng tôi bắt đầu bằng cách thiết lập phụ thuộc API OSGi cơ bản:
Thời gian chạy OSGi sẽ có quyền truy cập vào phần phụ thuộc, do đó, gói không cần phải chứa nó. Do đó, nó được đánh dấu là đã cung cấp.
Bây giờ, hãy tạo lớp HelloWorld đơn giản:
Các lớp đóng vai trò là điểm vào cho các gói phải triển khai giao diện BundleActivator do OSGi cung cấp.
Khi gói chứa lớp này được khởi chạy, nền tảng OSGi gọi hàm start (). Mặt khác, ngay trước khi gói bị tạm dừng, hàm stop () được gọi.
Đừng quên rằng mỗi gói chỉ có thể có một BundleActivator. Cả hai cách đều có thể giao tiếp với thời gian chạy OSGi bằng cách sử dụng đối tượng BundleContext được đưa ra.
Tạo một gói
Biến pom.xml thành một gói OSGi thực sự bằng cách thực hiện các thay đổi cần thiết.
Trước tiên, chúng tôi phải thể hiện rõ ràng rằng mục tiêu của chúng tôi là tạo ra một gói.
Sau đó, chúng tôi sử dụng maven-pack-plugin để đóng gói lớp HelloWorld dưới dạng gói OSGi, nhờ sự hỗ trợ của cộng đồng Apache Felix:
Các giá trị của tiêu đề OSGi mà chúng tôi muốn đưa vào tệp MANIFEST của gói được chỉ định trong phần hướng dẫn.
Bundle-Activator thực sự là tên đủ điều kiện của giải pháp BundleActivator sẽ được sử dụng để bắt đầu và dừng gói. Nó tương thích với lớp vừa tạo.
Mặc dù nó không phải là tiêu đề OSGi, nhưng tiêu đề Private-Package hướng dẫn plugin thêm gói vào gói nhưng không làm cho nó có thể truy cập được đối với các plugin khác. Lệnh mvn install nên được sử dụng để tạo gói.
Cài đặt và chạy gói
Hãy bắt đầu Karaf bằng cách chạy lệnh này:
trong đó “KARAF HOME” đề cập đến thư mục nơi Karaf được thiết lập. Chúng tôi có thể sử dụng lệnh sau để cài đặt gói khi lời nhắc bảng điều khiển Karaf xuất hiện:
Sử dụng kho lưu trữ Maven cục bộ là cách Karaf được yêu cầu tải gói.
Trả lại ID số của gói, Karaf viết nó ra. ID này có thể khác nhau tùy thuộc vào số lượng gói đã được cài đặt trước đó. Gói hiện đã được cài đặt thành công và lệnh khởi chạy nó như sau:
Thời điểm bạn khởi chạy gói, "Hello World by Jay" sẽ hiển thị. Bây giờ chúng tôi có thể tạm dừng và xóa gói bằng cách sử dụng:
Bảng điều khiển hiển thị “Goodbye World của Jay”.
Kết luận
Các nhà phát triển có thể dễ dàng thêm chức năng mới vào ứng dụng web hiện có trong khi vẫn giữ an toàn và cách ly với các thành phần khác của chương trình chính bằng cách sử dụng OSGi.
Chúng ta đã tìm hiểu về OSGi trong bài đăng này, bao gồm cách nó hoạt động, lợi thế của nó và một chương trình đơn giản. Không khó để kết hợp OSGi vào ứng dụng của riêng bạn.
Chúc bạn viết mã vui vẻ!
Bình luận