Vì vậy, cho đến sáng hôm qua, tôi vẫn chưa biết OSGi là gì. OSGi chỉ là một số từ thông dụng mà tôi cứ thấy bị cắt xén nhiều lần, và vì vậy cuối cùng tôi đã dành ra một khoảng thời gian để nghiên cứu về nó.
Nó thực sự có vẻ như là một thứ khá thú vị, vì vậy tôi muốn bắt đầu bằng cách nói rõ (cho hồ sơ) rằng tôi không phản đối OSGi về bất kỳ khía cạnh nào, cũng không phải là một số câu hỏi "OSGi-bashing".
Vào cuối ngày, có vẻ như OSGi - về cơ bản - đã giải quyết JSR 277 trên Java Modularity, nhận ra rằng có những thiếu sót với JAR
đặc tả tệp có thể dẫn đến vấn đề phân giải vùng tên và tải lớp trong một số trường hợp góc nhất định. OSGi cũng làm rất nhiều thứ thực sự thú vị khác, nhưng từ những gì tôi có thể chắc chắn, đó là điểm thu hút lớn nhất của nó (hoặc một trong số chúng).
Đối với tôi - với tư cách là một nhà phát triển Java EE khá mới (một vài năm nay), thật đáng kinh ngạc khi chúng ta đang ở vào năm 2011 và hiện đang sống trong kỷ nguyên của Java 7, và những vấn đề về tải lớp này vẫn còn tồn tại; đặc biệt là trong môi trường doanh nghiệp, nơi một máy chủ ứng dụng có thể có hàng trăm JAR trên đó, với nhiều JAR trong số đó tùy thuộc vào các phiên bản khác nhau của nhau và tất cả đều chạy (nhiều hơn hoặc ít hơn) đồng thời.
Câu hỏi của tôi:
Tôi quan tâm đến OSGi và tôi muốn bắt đầu tìm hiểu về nó để xem nó có thể được sử dụng ở đâu / nếu nó có thể được sử dụng cho các dự án của tôi, tôi chỉ không có thời gian để ngồi xuống và tìm hiểu một số thứ lớn như vậy, ít nhất là bây giờ.
Vậy các nhà phát triển không sử dụng OSGi phải làm gì khi những vấn đề này phát sinh? Những giải pháp Java (Oracle / Sun / JCP) nào hiện đang tồn tại, nếu có? Tại sao Jigsaw bị cắt khỏi J7? Cộng đồng chắc chắn rằng Jigsaw sẽ được triển khai vào năm tới trong J8 như thế nào? Có thể tải Jigsaw cho dự án của bạn mặc dù nó chưa phải là một phần của nền tảng Java không?
Tôi đoán những gì tôi đang hỏi ở đây là sự kết hợp của sự hoảng loạn, âm mưu và một màn che mặt. Bây giờ tôi cuối cùng đã hiểu OSGi là gì, tôi chỉ không "hiểu" làm thế nào mà một thứ như Jigsaw đã mất hơn 20 năm để thành hiện thực, và sau đó làm thế nào mà có thể được đóng hộp từ một bản phát hành. Nó chỉ có vẻ cơ bản.
Và, là một nhà phát triển, tôi cũng tò mò không biết các giải pháp của tôi là gì, sans OSGi.
Ngoài ra, Lưu ý : Tôi biết đây không phải là một câu hỏi kiểu " lập trình thuần túy ", nhưng trước khi một số bạn bị cong mũi ra khỏi hình dạng, tôi muốn nói (một lần nữa, để lưu ý) rằng tôi đã cố tình đặt câu hỏi này VÌ THẾ. Đó là bởi vì tôi không có gì khác ngoài sự tôn trọng tối đa dành cho các SOer đồng nghiệp của mình và tôi đang tìm kiếm câu trả lời ở cấp độ kiến trúc từ một số "Vị thần CNTT" mà tôi thấy ẩn nấp quanh đây mỗi ngày.
Tuy nhiên, đối với những người bạn hoàn toàn khăng khăng rằng một câu hỏi SO được hỗ trợ bằng một số đoạn mã:
int x = 9;
(Cảm ơn bất kỳ ai có thể cân nhắc trên OSGi / Jigsaw / classloader / namespace / JAR hell này!)