2008-09-17 2 views
5

필자는 해당 구성 요소 중 하나를 플러그 할 수 있어야하는 J2SE 데스크탑 응용 프로그램을 작성 중입니다. 이미이 플러그인에 대한 Java 인터페이스를 정의했습니다. 사용자는 (GUI를 통해) 런타임시 (예 : 초기화 대화 상자에서) 사용할 인터페이스의 구현을 선택할 수 있어야합니다. 각 플러그인은 구현 클래스와 필요할 수있는 모든 도우미 클래스가 포함 된 JAR 파일로 패키징됩니다.J2SE 응용 프로그램에 플러그인 지원을 추가하기위한 최고의 기술?

데스크톱 Java 응용 프로그램에서 이러한 유형의 작업을 수행하는 데 가장 적합한 기술은 무엇입니까?

+0

JSPF가 어떻게 효과를 냈습니까? 내가 피드백을 위해 스레드를 만들었습니다 : http://stackoverflow.com/questions/1613935/ –

+0

아직 사용하지는 않았지만, 일단 여기로 다시 게시 할 것입니다. –

답변

5

플러그인 기반 Java 아키텍처에 대한 많은 시도 (정확하게 당신이 찾고있는 것) 이후에 나는 JSPF이 Java5 코드를위한 최상의 솔루션이라고 마침내 발견했습니다. 솔루션과 같은 OSGI의 엄청난 요구는 없지만 대신 사용하기 쉽습니다.

+0

프로젝트 사이트에 가서 데모 비디오를 보았습니다. JSPF는 사용하기가 매우 쉽고 원하는 것을 정확하게 보여줍니다! 정말 고마워. –

0

내가 생각하고있는 한 가지 접근법은 내 애플리케이션이 경량 OSGi 컨테이너를 시작하는 것입니다.이 컨테이너는 어떤 플러그인 JAR 파일이 지정된 폴더에 있는지 발견 할 수있게되어, 사용자가 선택할 수 있습니다. 이것이 가능한가?

는 또한 리처드 데드 맨으로 this article을 발견하지만,

0

당신이 플러그인으로은 OSGi를 사용하는 생각 했나 둘은 OSGi (적어도 이름)이나 java.util.jar 패키지를 약간 (2006?) 일자 보이고 언급 뼈대? OSGi를 사용하면 요구에 따라 모듈을 업데이트/교체,로드 또는 언로드 할 수 있습니다.

+0

하아! 잠깐 너를 두들겨 라! 그러나 진지하게; 자네가이 일을 너 자신 했니, 아니면 나 같은 건, 일해야한다고 생각하는거야? –

1

하나의 구성 요소를 플러그 할 수 있어야하는 경우 "메타 정보"를 기반으로 클래스를 인스턴스화하는 것만으로 충분합니다. 클래스 경로 또는 특정 플러그인 디렉토리에있는 다양한 jar의 클래스 로더 META-INF/정보를 통해 읽습니다.

OSGi는 전체 응용 프로그램을 구조화하는 수단을 제공합니다. 한 부분이 플러그 가능한 대형 데스크탑 응용 프로그램이 이미있는 경우, 이는 가파른 학습 곡선이됩니다. 바탕 화면 응용 프로그램으로 무엇을 비워두면 OSGi는 전체 응용 프로그램을 모듈화하는 방법을 제공합니다. 그것은 "구성 요소 격리"와 모듈의 독립성에 관한 것입니다.

Apache Felix는 OSGi 차선을 사용하려는 경우에 좋은 시작을 제공합니다. 복잡하고 중량이 많이 드는 것처럼 보일 수도 있지만 모듈 간의 격리 수준에 익숙하지 않은 경우에만 해당됩니다. 이전에는 공용 메서드를 호출하기가 너무 쉬웠습니다.

2

OSGI는 확실히 유효한 방법입니다. 그러나 플러그인을 다시로드하기 위해 언로드해야한다고 가정하면 너트를 깨기 위해 해머를 사용할 수 있습니다.

'java.util.jar'의 클래스를 사용하여 플러그인 폴더의 각 JAR 파일을 스캔 한 다음 'java.net.URLClassLoader'를 사용하여 올바른 파일을로드 할 수 있습니다.

+0

좋은데, 나도 그걸 시험해 보겠다. 건배. –

관련 문제