문제

현재 상황:

저는 Java 지원 휴대폰(Android가 아닌 MIDlet 기반 "멍청한 휴대폰")을 위한 작은 애플리케이션을 만들고 있습니다.애플리케이션은 다음과 같이 구성됩니다.

  1. 핵심 기능을 갖춘 "인프라"
  2. A 유형의 모듈(인터페이스를 구현하는 클래스 ModuleA)
  3. B 유형의 모듈(인터페이스를 구현하는 클래스 ModuleB)

유형 A와 B의 모듈은 기본적으로 사용자가 목록에서 선택한 항목을 기반으로 인프라에서 인스턴스화되고 고유한 방식으로 작업을 수행하는 클래스입니다."전략 패턴"을 생각해보세요.사용자가 애플리케이션을 사용할 때 인프라에서 제공하는 화면을 탐색한 다음 A 유형의 모듈 목록(제목 참조)이 표시됩니다.그런 다음 그녀는 인스턴스화되어 그녀를 위해 무언가를 수행하는 모듈 중 하나를 선택합니다.

내가 바라는 것

전체 인프라를 JAR 파일로 패키징하는 것이 가능한지(그리고 그렇다면 방법), A 유형의 모듈과 B 유형의 모듈을 다른 JAR 파일에 유지하여 나중에 장치에 설치할 수 있는지 궁금합니다( 인프라용 추가 기능과 같습니다).저는 다음과 같은 시나리오를 생각하고 있습니다.

  1. 사용자가 인프라를 설치합니다.
  2. 사용자는 인프라와 동시에 사용할 수 있는 "스타터" 추가 기능을 설치합니다.
  3. 몇 주 후 개발자는 사용자가 설치할 수 있는 "특별 크리스마스 모듈"과 같은 새로운 추가 기능을 생성하므로 인프라는 기기에 이미 설치되어 있음, 추가 기능의 모듈을 나열합니다.
  4. 1년 후, 다른 기능과 아이디어가 포함된 모듈을 포함하는 또 다른 추가 기능이 출시되었습니다.

첫째, 이러한 추가 기능을 모바일 장치에 설치할 수 있습니까?MIDlet 클래스를 포함해야 합니까(아무 작업도 하지 않거나 인프라에 알리지 않음)?인프라가 내 애플리케이션에 대한 추가 기능이 포함된 JAR을 감지할 수 있습니까?아니면 인프라가 다른 JAR에 포함된 클래스와 상호 작용할 수 있습니까?

메모:인프라 JAR에만 유용한 MIDlet 클래스가 포함됩니다.또한 추가 기능에는 A 유형 모듈과 B 유형 모듈의 조합이 포함됩니다.

가능한 해결책?(미완이지만)

추가 기능은 장치 자체에 대한 MIDlet 응용 프로그램처럼 보이고 작동하며 냄새를 맡을 수 있으므로 일반 MIDlet 응용 프로그램처럼 설치할 수 있습니다.추가 기능은 자신을 인프라와 동일한 제품군의 일부로 선언할 수 있으므로 레코드 저장소에 기록하여 인프라에 자신의 존재를 알릴 수 있습니다(MIDlet당 레코드 저장소가 있다는 것을 이해합니다). 모음곡).인프라는 새 레코드를 읽고 이제 추가 모듈이 있음을 알고 있습니다.추가 기능 MIDlet JAR에 번들로 포함된 클래스에 액세스하여 인스턴스화할 수 있습니까?

도움이 되었습니까?

해결책

달성하기 위해 설명하는 내용은 MIDP 사양에서 지원되지 않습니다.무엇보다도 동일한 MIDlet Suite에 여러 JAR이 포함될 수 없습니다.

일종의 모듈성을 달성하려면 다른 런타임을 사용해야 합니다.사용자가 직접 정의하고 하나의 MIDlet 내에서 구현할 수 있는 것입니다.

바이너리 파일이 사용 가능해지면 다운로드하는 MIDlet을 작성할 수 있습니다.동일한 MIDlet이 이러한 바이너리 파일을 해석할 수 있습니다.바이너리 파일에는 MIDlet의 동작을 변경하는 명령이 포함될 수 있습니다.MIDlet은 바이너리 파일이 수행하도록 요청하는 가능한 모든 작업을 지원해야 합니다(그러나 MIDlet은 업그레이드될 수 있습니다).

기본적으로 MIDlet 내에서 정의한 새로운 프로그래밍 언어에 대한 런타임 구현인 가상 머신을 코딩해야 합니다.

이것은 많은 작업이 될 것입니다.많은 휴대폰에 설치하기에는 너무 큰 MIDlet을 만들게 될 수도 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top