답변:
먼저 모든 플러그인이 구현해야하는 인터페이스가 필요합니다. 예 :
public interface Plugin {
public void load(PluginConfiguration pluginConfiguration);
public void run();
public void unload();
public JComponent getConfigurationPage();
}
그런 다음 플러그인 작성자는 플러그인을 JAR 파일로 묶어야합니다. 애플리케이션이 JAR 파일을 연 다음 JAR 매니페스트의 속성 또는 JAR 파일의 모든 파일 목록을 사용하여 플러그인 인터페이스를 구현하는 클래스를 찾을 수 있습니다. 해당 클래스를 인스턴스화하면 플러그인을 사용할 수 있습니다.
물론 어떤 종류의 샌드 박스를 구현하여 플러그인이 할 수있는 것과 할 수없는 것으로 제한되도록 할 수도 있습니다. 나는 두 개의 플러그인으로 구성된 작은 테스트 응용 프로그램 을 작성 했으며 블로그 중 하나는 로컬 리소스에 대한 액세스가 거부되었습니다.
OSGi를 사용하십시오 .
Eclipse 플러그인 시스템의 기초입니다. Equinox 는 Eclipse의 구현 (라이센스가있는 EPL)이고 Felix 는 Apache 프로젝트의 구현 (라이센스가있는 Apache Public License)입니다.
Eclipse는 OSGi가 언급 한 사항을 포괄 할 수있는 구체적인 예를 제공합니다 (또는 전체 Eclipse / SWT / JFace 스택을 원하는 경우 Eclipse RCP 위에 애플리케이션을 빌드 할 수 있음 ).
1.6부터는 간단한 시스템을 코딩하려는 경우 사용할 수있는 java.util.ServiceLoader 가 있습니다.
그러나 기본 기능 이상의 것을 원한다면 기존 프레임 워크 중 하나를 사용하십시오.
도 있습니다 JPF (자바 플러그인 프레임 워크) .
PF4J를 사용하십시오 . Web, Spring 및 Wicket을 지원합니다. 사용하기 쉬운 어플리케이션
나는 OSGi에서 일주일 동안 일했습니다. 결국 그것은 나쁜 꿈과 같았지만 많은 것을 배웠습니다.
OSGi를 작동시킬 수있었습니다 (쉬운 것은 아니며 모든 예제가 오래되었습니다. 넷의 모든 것이 5 세가 아닌 경우 3 세 이상임). 그러나 문제로 인해 기존 프로젝트에 통합하는 데 심각한 문제가있었습니다. 항아리가 나타납니다.
간단히 말해서, 매니페스트를 작성하는 데 사용되는 모호한 도구는 거의 없으며 문서화가 잘되어 있지 않습니다 (BND 도구는 모호하지 않지만 Eclipse의 특정 프로세스를 위해 설계되었습니다). 또한 사용 가능한 대부분의 OSGi 정보는 기존 데스크톱 응용 프로그램이있는 응용 프로그램 개발자를 대상으로하지 않습니다.
이로 인해 정보에 대한 맥락이 흐리거나 부적절합니다. Neil Bartlett의 블로그 게시물이 가장 큰 도움이되었지만 작동 시스템을 얻지 못한 사람들도있었습니다 (필릭스 자습서에서 일부 코드를 가져 와서 내장 된 프레임 워크 롤링을 위해 함께 조각했습니다). 필자가 몇 년 전에 무료로 게시 한 책 초안을 찾았지만 Eclipse OSGi 지원 변경으로 인해 Eclipse의 예제가 작동하지 않습니다.
모든 단계는 큰 장애물입니다. 나중에 여기에 더 자세한 내용을 게시하려고합니다.
몇 년 전 저는 그런 프로젝트를 시작했고 곧 준비가 되길 바랍니다. NetBeans 및 Eclipse와 같은 프로젝트에서 영감을 얻었지만 조금 다른 것으로 변경되었습니다. OSGi는 현재 좋은 선택처럼 보이지만 내 프로젝트와 비교할 기회가 없었습니다. 위에서 언급 한 JPF와 비슷하지만 동시에 여러면에서 다릅니다.
저에게 동기를 부여한 기본 아이디어는 웹 응용 프로그램, 데스크탑 응용 프로그램 또는 애플릿 / JWS 응용 프로그램 (물론 UI는 아직 다루지 않음)을 핵심 기능으로 분리하지 않고도 Java 응용 프로그램을 최대한 쉽게 구축하는 것입니다.
나는 몇 가지 목표를 가지고 프로젝트를 만들었습니다.