2009-10-23 2 views
57

우리는 다양한 유형의 계산기를 "플러그인"할 수있는 구현중인 서비스에 대한 간단한 플러그인 프레임 워크를 구현하는 방법을 결정하려고합니다.Java 플러그인 프레임 워크 선택

자바 플러그인 프레임 워크 약 게시물의 number을 읽는 것은, 그것은 가장 일반적인 옵션처럼 보인다 후에는 다음과 같습니다

OSGI는 우리가 필요로하는 것 이상인 것 같습니다.

"Rolling your own"은 괜찮지 만 공통 라이브러리를 재사용하는 것이 좋습니다.

그래서 우리는 JPF와 JSPF를 사용합니다. JPF는 더 이상 활발한 개발로 보이지 않습니다.

JSPF는 매우 간단하고 정말로 필요한 것 같습니다. 그러나 나는 그것에 대해 많이 듣지 않았다. 난 그것에 대해 StackOverflow에 post 하나만 봤어요. JSPF에 대한 경험이있는 사람이 있습니까? 또는이 디자인 선택에 대한 다른 의견이 있습니까?


업데이트 .. 그러나 우리는 우리가 정말, 정말 간단한 솔루션을 필요로하는 파볼의 아이디어와 함께 갈거야 이에 대한 정답은 필요 없습니다. 좋은 가이드를위한 감사합니다 EoH.

답변

29

잘 정의 된 SPI보다 구성 요소가 하나 이상 (또는 단지 몇 개)이 아닌 '확장 지점'이 아니라면 구성이 충분할 수 있습니다. 플러그인 프레임 워크를 사용할 필요가 없습니다.

구성의 일부로는 플러그인을 찾을 수있는 메커니즘을 의미합니다. 예를 들어 META-INF/services/과 같이 또는 구성 파일에 플러그인을 나열하는 것입니다. (요청)

더 상세 :

SPI = Service Provider Interface,의 "API의 구현 측 등가". 자세한 내용은 API와 SPI의 차이점을 검색해보십시오. 그러나이 문맥에서 이는 플러그인이 구현할 인터페이스 (즉, 플러그인 계약을 정의)를 나타내는 멋진 용어입니다.

Ethan Nicholas의 멋진 짧은 문서 "Creating a Service Provider Interface"은 Java Platform 자체의 여러 부분에서 수행되는 것과 비슷한 방법으로 고유 한 SPI를 만드는 방법을 설명합니다.

META-INF/services/은 SPI를 만드는보다 일반적인 접근 방법으로 볼 수 있습니다. 자세한 내용은 JAR File Specification의 해당 섹션에서 확인할 수 있습니다.

+0

API 또는 SPI? SPI는 무엇입니까? – Egwor

+0

우리는 단지 하나의 (또는 많아야 몇 가지) 직선 확장을 가지고 있습니다. 당신은 당신의 아이디어에 대해 자세히 설명 할 수 있습니까? –

+0

늦게 응답하여 죄송합니다. 나는 원래의 대답을 더 자세히 업데이트했다. –

43

(면책 조항 : 나는 그렇게 좋은 소금 ;-)의 곡물과 내 의견을, JSPF의 저자

당신이 지금 가지고있는 저도 같은 문제를했기 때문에 나는 JSPF 시작 주된 이유였다

: 나는 논문 작성을위한 간단한 해결책을 찾고 있었다. 1) 확장 성이 있고, 2) 더 명확한 코드 구조를 제공한다.

기존 프레임 워크를 사용하지 않기로 결정한 이유는 대부분이 너무 무거워서 설명서를 읽지 못하고 원래 작업을 거의 잊어 버렸기 때문입니다. 그래서, 당신의 문

에 따라 우리는 우리가 것을 구현하는 서비스에 대한 간단한 플러그인 프레임 워크 을 구현하는 방법을 결정하려는 것은 계산기 의 다른 유형은 "플러그 - 인"할 수 있습니다.

나는 JSPF를 발사하고 1-2 시간 내에 얼마나 멀리 왔는지 볼 수 있다고 생각한다.

그러나 최종 결정은 정확히 달성하려는 목표와 구체적인 상황에 따라 약간 다릅니다.

프로젝트를 구성하거나 프로젝트에서 플러그인을로드하는 데 개인적으로 긍정적 인 결과를 얻었습니다. 반면에 우리 부서에서는 프로그래밍 스타일과 잘 어울리지 않는다고 느껴서 다시 버린 한 사람에 대해서도 알고 있습니다.

그래서, 프로젝트와 크고 많은 사람들이 작업이 팀

  • 에 대한

    은 OSGi을 사용, (편중 된 방법으로 확실) 잠시 귀하의 질문에 대답하기 특정 서비스를 필요로하는 인프라

  • 을 설정하는 오버 헤드를 정당화
을 제공

중간 크기의 프로젝트 팀

  • 에 대한 JPF 조직에 더 많은 구조적인 시설을 필요로하고있는
  • (?, 솔직히 프로젝트/팀 크기가 목표로 확실하지 않다) XML 구성, 자세한 플러그인 수명주기 관리, 확장 가능한 플러그인 등과 같은 코드

프로젝트 팀

작은 크기의
  • 에 대한 JSPF, 민첩 패러다임 다음
  • 단지 구성 또는 설치의 필요없이, 상자 밖으로 작동하는 뭔가가 필요
  • 간결성을 위해 일부 기능을 희생하려는 경우

귀하의 시나리오에 가장 적합한 플러그인 프레임 워크를 찾으시기 바랍니다. 그리고 무엇을 시도하든 당신의 결과에 대해 듣게되어 기쁩니다.

+3

JSPF 생산 중에? –

+0

에는 JSPF로 간단한 예제가 있습니까? 옵션 기능에 대해 알고 싶습니다. – capovawi

+4

jspf가 지원 중단 되었습니까? – wener

2

정말 간단한 해결책이 필요한 경우 jin-plugin을 사용해보십시오. Java 및 PHP를위한 최소한의 플러그인 프레임 워크입니다.