자바 플러그인 프레임 워크 선택
우리는 다른 유형의 계산기를 "플러그인"할 수 있도록 구현하는 서비스에 대한 간단한 플러그인 프레임 워크를 구현하는 방법을 결정하려고합니다.
Java 플러그인 프레임 워크에 대한 여러 게시물을 읽은 후 가장 일반적인 옵션은 다음과 같습니다.
- OSGI
- " 나만의 "플러그인 프레임 워크 롤링
- 자바 플러그인 프레임 워크 (JPF)
- 자바 간단한 플러그인 프레임 워크 (JSPF)
OSGI는 우리가 필요로하는 것 이상인 것 같습니다.
"Rolling your own"은 괜찮지 만 공용 라이브러리를 재사용하는 것이 좋습니다.
그래서 우리는 JPF와 JSPF로 내려갑니다. JPF는 더 이상 활발하게 개발되지 않는 것 같습니다.
JSPF는 매우 간단하고 실제로 필요한 모든 것입니다. 그러나 나는 그것에 대해 많이 듣지 못했습니다. StackOverflow에 대한 게시물 은 단 하나뿐입니다 . 다른 사람이 JSPF에 대한 경험이 있습니까? 아니면이 디자인 선택에 대한 다른 의견이 있습니까?
업데이트 : 이것에 대한 정답이 반드시 필요한 것은 아닙니다. 그러나 우리는 정말, 정말 간단한 해결책이 필요하기 때문에 Pavol의 아이디어를 따를 것입니다. 멋진 가이드에 감사드립니다.
잘 정의 된 SPI보다 복잡하지 않은 '확장 점'을 하나 (또는 몇 개만) 가질 계획이라면 구성의 일부로 충분할 수 있습니다. 플러그인 프레임 워크를 사용할 필요가 없습니다.
구성에 따라 플러그인을 찾는 메커니즘이 있습니다. 예를 들어 META-INF/services/
, 구성 파일에 플러그인을 나열하는 것과 같 거나 단순히 나열합니다.
자세한 내용 (요청시) :
SPI = 서비스 제공 업체 인터페이스 , "API의 구현 자 측에 해당". 자세히 알아 보려면 API와 SPI의 차이점을 검색해보세요. 그러나이 맥락에서 플러그인에 의해 구현되는 인터페이스에 대한 멋진 용어 일뿐입니다 (즉, 플러그인에 대한 계약을 정의 함).
Ethan Nicholas 의 멋진 짧은 기사 인 " Creating a Service Provider Interface "는 Java 플랫폼 자체의 여러 부분에서 수행되는 것과 유사한 방식으로 자체 SPI를 생성하는 방법을 설명합니다.
META-INF/services/
SPI 생성에 대한보다 일반적인 접근 방식으로 볼 수 있습니다. 자세한 내용은 JAR 파일 사양 의 각 섹션에서 찾을 수 있습니다 .
(면책 조항 : 나는 JSPF의 저자이므로 소금 한 알로 내 의견을 받아들이는 것이 좋습니다 .-)
제가 JSPF로 시작한 주된 이유는 지금 여러분과 같은 문제가 있었기 때문입니다. 저는 논문 프로젝트 1) 확장 가능하고 2) 다소 명확한 코드 구조를 제공하는 간단한 솔루션을 찾고있었습니다.
내가 기존 프레임 워크를 사용하기로 결정하지 않은 이유는 대부분의 프레임 워크가 처음에는 너무 무거워서 문서를 읽는 데 길을 잃고 원래 작업을 거의 잊고 있었기 때문입니다. 그래서 당신의 진술에 따르면
우리는 다른 유형의 계산기를 "플러그인"할 수 있도록 구현하는 서비스에 대한 간단한 플러그인 프레임 워크를 구현하는 방법을 결정하려고합니다.
나는 당신이 JSPF에게 기회를 줄 수 있고 당신이 한두 시간 안에 얼마나 멀리 오는지 볼 수 있다고 생각합니다.
그러나 최종 결정은 정확히 달성하려는 목표와 특정 상황에 따라 약간 다릅니다.
프로젝트를 구성하거나 프로젝트에 플러그인을로드하기 위해이를 사용하고있는 많은 개인으로부터 긍정적 인 결과를 들었습니다. 반면에 우리 부서의 한 사람은 그의 프로그래밍 스타일과 잘 섞이지 않는다고 느끼기 때문에 다시 폐기했습니다.
따라서 귀하의 질문에 간략하게 (그리고 편향된 방식으로) 대답하기 위해
프로젝트 및 팀을위한 OSGi
- 크고 많은 사람들이 작업하고 있습니다.
- 인프라 설정의 오버 헤드를 정당화하는
- 제공되는 특정 서비스가 필요한 경우
프로젝트 및 팀을위한 JPF
- 중간 규모 (?, 솔직히 그들이 목표로하는 프로젝트 / 팀 규모에 대해 잘 모르겠습니다)
- XML 구성, 상세한 플러그인 수명주기 관리, 확장 가능한 플러그인 등 코드를 구성하기 위해 더 구조화 된 기능이 필요합니다.
프로젝트 및 팀을위한 JSPF
- 애자일 패러다임을 따르는 작은 크기
- 구성이나 설정없이 바로 사용할 수있는 기능 만 필요합니다.
- 단순성을 위해 일부 기능을 기꺼이 희생
귀하의 시나리오에 가장 적합한 플러그인 프레임 워크를 찾으시기 바랍니다. 그리고 무엇을 시도하든 결과에 대해 듣고 기쁩니다.
정말 간단한 솔루션이 필요하다면 jin-plugin을 사용 해보세요 . Java 및 PHP를위한 최소한의 플러그인 프레임 워크입니다.
참고 URL : https://stackoverflow.com/questions/1613935/java-plugin-framework-choice
'IT박스' 카테고리의 다른 글
C #에서 임의의 10 진수 생성 (0) | 2020.12.09 |
---|---|
양식 인증 시간 초과와 세션 시간 초과 (0) | 2020.12.09 |
PDO에서 오류 메시지를 압축하는 방법은 무엇입니까? (0) | 2020.12.09 |
Android 라이브러리 프로젝트에서 애플리케이션의 컨텍스트를 가져올 수 있습니까? (0) | 2020.12.09 |
배치 파일 : 상대 경로가있는 디렉토리의 모든 파일 나열 (0) | 2020.12.09 |