English  Español  Português  Français  Italiano  Deutsch  Nederlands  Svenska  Dansk  Suomi  Norsk  Русский  Polski  Română  Български  Hrvatski  Česky  中国  中國  日本語  한국어  Ελληνική  हिन्दी  العربية 
휴대 전화를위한 소프트웨어 개발 J2ME
(2002)
Colin Fahey
moto_t720_open_lightanddark02.jpg
Motorola T720 휴대 전화, 열 표시

1. 경고

이 문서는 무용지물이다!  이 문서에 포함된 정보가 유효한 것과 올해 2002에 유용하지만, 여러 가지 후속 년 간 어떤 변화가!  이 문서는 당장 올해에만 2002의 흥미로운 역사적 기록으로 간주되어야합니다.  이 문서에있는 모든 정보 또는 조언에 의존하지 마십시오.  이 문서에있는 모든 기술 정보를 매우 무용지물이다. 

자기 다운로드 - 소프트웨어, 스스로 만든 - 만든 이미지 및 자기 - 전화 경보 멜로디 (즉, 벨소리 "생성)," 상대적으로 드문 일이 었는데 어려운 올해 2002.  슬프게도, 6 년 후, 일부 휴대 전화 서비스 제공 업체 (Apple, 이는 포털 iPhone에 대한 독점 소프트웨어 및 "벨소리" 제공) 아직도 소프트웨어, 이미지 다운로드에 제한을 부과하고 음악, 휴대 전화 서비스를 제공하기 때문에 매우 큰 금융 이익을 즐길 등 이러한 유형의 조종에 의해 다운로드합니다. 

다행히도, 그 Android 소프트웨어 플랫폼 기능 "등 휴대 전화," 영원히 기업의 능력을 생성하고 악용하는 등 휴대 전화를 사용하는 시장에 대한 폐쇄 종료됩니다.  소비자들이 기꺼이 비록 소프트웨어, 이미지 다운로드를위한 매우 높은 비용, 그리고 음악을 포함 휴대 전화 서비스 계획을 구입,이 휴대 전화 서비스 옵션의 제한된 숫자로 인해 사용할 수있습니다. 

그 시장을 지배할 성장에 의해 묵시 소비자 강한 승인으로 해석해서는 안됩니다 특정 기업의 경제적 역학 관계가 활성화되어있다.  기업 지배하고, 다음을 시작하기 어렵거나 불가능에 대한 경쟁자들이 시장에 진입하게, 지배 기업이 제품은 높은 가치를 지닌 부정적 (예를 들어, 의사 소통 능력은 어디에서) 높은 긍정적인 가치를 결합하여 제공할 수있습니다 (예 : 가격이 높은 바람직한 소프트웨어, 이미지, 음악, 모두가 자유롭게 사용할 수 달리 될 수 없으며 따라서, 서비스) 마이너스 값을 추가합니다.  소비자는 휴대 전화를 구입하는 아니지만, 강제로 의심의 여지가 없다 지배적인 휴대 전화 서비스 제공 업체들이 점차적으로 그 자유 시장으로 간주되지 않을 수있는 조건을 "만든 것입니다."  따라서 휴대 전화 서비스 시장되었습니다과 "비효율이" 소비자에 대한 과도한 경제적 부담이되고있다. 

바라건대, 요구 사항 휴대 전화 서비스를 무선 주파수 경쟁 서비스 등 휴대 전화 서비스 제공 업체의 데이터에 불과 다시 사업자 (즉, 전용)이나 엔터테인먼트 정보 제공 업체보다는 감소하는 데이터 전송 대역폭을 제공하고, 정상적인 시장 가치를 복원을 제공할 예정이다 ! 

데이터 이송의 비즈니스 데이터 판매 사업에서, 그렇지 않으면 데이터가 동일한 데이터 채널을 통해 운송 업체의 판매를 막기 위해 데이터를 운송 사업에 대한 인센티브가 될 것이다 구분해야합니다. 

비디오 게임 콘솔 시장에서 동일한 문제를 겪고있다.  비디오 게임의 비디오 게임 콘솔 하드웨어 제조 업체의 비즈니스에 표시할 수있는 장치를 만들지만, 그 같은 업체들도 비디오 게임 소프트웨어의 전송 제어 콘솔의 독점.  따라서 비디오 게임에 대한 제조 업체의 비디오 게임 소프트웨어 판매에서 경쟁 업체에 대한 인센티브가 콘솔 게임기를 차단했다.  비디오 게임의 경우 그 이익을 (대신 판매에서 큰 손실이 될 수있는 제조업의 하드웨어 설계에 초점을 맞춘, X-Box과 PlayStation 및 Nintendo 비디오 게임 콘솔), 그리고 비디오 게임 시장으로 번성할 것이라고, 그리고 콘솔 하드웨어 제조 업체 최고의 비디오 게임의 품질을 획기적으로, 비디오 게임의 비용이 붕괴 것이 개선 것이다. 

2. 주제 색인

(1)
J2ME 개발 도구
(2)
간단한 프로그램 J2ME
(3)
복잡한 프로그램 J2ME
(4)
Sun "무선 툴킷"
(5)
인터넷 사이트에 소프트웨어를 제공하는
(6)
인터넷 사이트에서 소프트웨어를 다운로드
(7)
오류 메시지 다운로드와 설치 오류 메시지
(8)
생성, 제공, "벨소리" 다운로드
(9)
생성, 제공, 이미지 다운로드
(10)
구성 설정을 AT&T 휴대 전화 네트워크 ()
(11)
링크를 다른 휴대 전화 자원
(12)
J2ME 대 BREW

3. J2ME 개발 도구

이 섹션에서는 그 방법에 대해 설명에 클래스 파일을 모바일 기기에 적합하도록 J2ME 소스 코드를 컴파일하는 데 사용할 수있는 개발 도구를 다운로드합니다.  그 Sun J2ME "Wireless Toolkit,이 문서의" 나중 섹션에서 논의,이 섹션에 설명된 Java SDK 다운로드가 필요합니다. 

3.1 JDK 1.4 (또는 저장)

이 Sun에서 재래식 Java 2 SDK 필요가있다는 뜻.  나는 다음의 링크를 통해 다운로드 버전을 사용 1.4 :
http://java.sun.com/j2se/1.4/download.html
여기 다운로드 페이지의 모습입니다 :
java2sdk_download_page.jpg
설치 프로그램을 시작합니다.  발생할 수있는 경로가 아니라면 그 문제를 해결할 수있는 기본 위치 ( c:\j2sdk1.4.0_03 )를 설치합니다. 

3.2 Connected Limited Device Configuration (CLDC)

난이게 뭔지 알아 척하지 않겠지만 난 그저 Sun 웹 사이트에서 다운로드.
http://wwws.sun.com/software/communitysource/j2me/cldc/download.html
여기에 메인 CLDC 다운로드 웹 페이지의 모습입니다 :
cldc_download_page.jpg
유일한 1.0.3 내가 방문한 시간에 사용할 수있었습니다.
주문 있음, 나는 웹 사이트에 등록하는 데 필요한 Sun이 다운로드합니다.  그 다음 프로필을 작성 :
Username:        anon***anon
Password:        nospamplease
Favorite color:  blue
Full name:       Prof. Anon Nospamplease
나는 다음 파일을 다운로드 :
j2me_cldc-1_0_3-fcs-src-b17-winunix-14_sep_2001.zip
저는 다음 디렉토리에 unzipped :
C:\j2me
난 단지로 이름을 바꾼 디렉터리 "cldc-1_0_3-fcs" :
cldc (즉, 전체 경로 c:\j2me\cldc)

3.3 Mobile Information Device Profile (MIDP)

이 중 무엇인지 아는 척하지 않겠지만 난 그저 Sun 웹 사이트에서 다운로드.
http://java.sun.com/products/midp/
여기에 웹 페이지가 어떻게 생겼는지 MIDP 주요 다운로드 :
midp_download_page.jpg
나는 다음 파일을 다운로드 :
j2me_midp-1_0_3-fcs-src-b26-win-19_sep_2001.zip
저는 다음 디렉토리에 unzipped :
C:\j2me
난 단지로 이름을 바꾼 디렉터리 "midp-1_0_3-fcs" :
midp (즉, 전체 경로 c:\j2me\midp)

3.4 도구 구성

3.4.1 경로를 수립

귀하의 AUTOEXEC.BAT 파일에 다음 줄을 추가합니다 :
REM ---- Java Support ----
SET MIDP_HOME=C:\j2me\midp
SET PATH=%PATH%;c:\j2sdk1.4.0_03\BIN;
PATH=C:\WINDOWS;C:\WINDOWS\COMMAND;C:\j2sdk1.4.0_03\BIN;C:\j2me\midp\bin;%PATH%
다음에서 이러한 변수를 배치 파일을 실행하여 강제로 로딩할 수 :
cmd_prompt_autoexec_bat.jpg
c:\>  autoexec.bat
또한 이러한 동일한 변수 변수 컨트롤 패널을 사용하여 Windows 환경을 설정할 수있습니다.

공지 사항 난 내 Java 2 SDK의 현재 버전을 명시 디렉토리 경로를 지정하려면 선택했다.  따라서, 만약 내가 업그레 이드, 그때 나는 새로운 디렉토리를 지정하는 AUTOEXEC.BAT 파일을 수정해야합니다. 

3.4.2 바이너리를 체크 the Jave 2 SDK

일단 위의 설정을 적용하면 명령에서 Java 도구 프로그램을 실행 도구 프로그램에 대한 완전한 경로를 지정하지 않고 프롬프트를 수 있어야한다. 

다음 명령은 휴대 전화 장치 에뮬레이터가 시작됩니다 : 
cmd_prompt_midp.jpg
c:\>  midp
아래의 이미지를 휴대 전화 장치 에뮬레이터를 보여줍니다 : 
java_midp_launch.jpg

4. 간단한 프로그램 J2ME

4.1 쓰기 Java 코드

파일이 HelloMIDlet.java 소스 코드와 같은 코드에서 어떤 텍스트 편집기, 사람 수있는 유형, 사용 :
file_image_hellomidlet_java.jpg
여기에 일반 텍스트 형식의 코드입니다 :
// File: HelloMIDlet.java
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;

public class  HelloMIDlet
extends       MIDlet
implements    CommandListener
{
    private Command exitCommand;
    private Display display;
    private TextBox t = null;

    public HelloMIDlet()
    {
        display = Display.getDisplay( this );
        exitCommand = new Command( "Exit", Command.EXIT, 2 );
        t = new TextBox
        (
            "Hello MIDlet",
            "Test string",
            256, 0
        );
        t.addCommand( exitCommand );
        t.setCommandListener( this );
    }

    public void startApp()
    {
        display.setCurrent( t );
    }

    public void pauseApp()
    {
    }

    public void destroyApp( boolean unconditional )
    {
    }

    public void commandAction( Command c, Displayable s )
    {
        if (c == exitCommand)
        {
            destroyApp( false );
            notifyDestroyed();
        }
    }
}

4.2 *.class를 컴파일 *.java 코드

cd  c:\HelloMIDlet
주의 : 다음 명령은 단일 행에지만되어야 텍스트의 여러 라인의 지혜로움에 대해서만 확대됐다.
(현재 디렉토리 : C:\HelloMIDlet)
javac
    -target 1.1
    -d .\
    -bootclasspath c:\j2me\midp\classes
    HelloMIDlet.java
cmd_prompt_javac.jpg
참고 : "-target 1.1" 무대 미래에 오류가 preverify을 피하기 위해 "필수적이다."  틀림없이이 문제를 JDK 1.4에 MIDP 1.0.3 지원과 함께 할 수있는 뭔가가있다. 

4.3 Preverify 새 *.class 파일을 생성

cmd_prompt_preverify.jpg
(현재 디렉토리 : C:\HelloMIDlet)
preverify  -classpath  c:\j2me\midp\classes;.  HelloMIDlet
이 새로운 하위 디렉토리 "output" 기본 ()에 의해 호출에 새로운 *.class 파일을 생성합니다.

4.4 새 *.class 파일 테스트

cmd_prompt_midp_midlet.jpg
(현재 디렉토리 : C:\HelloMIDlet)
midp  -classpath  c:\j2me\midp\classes;.\output  HelloMIDlet
이것은, 새로운 "output" 디렉토리에 포함된 파일 중 일부를 나타내는 데 필요한 *.class 전화 에뮬레이터가 시작됩니다.
예상 결과는 다음과 같은 이미지를 보여줍니다.
java_midp_hellomidlet.jpg

4.5 , 새로운 텍스트 파일을 만들고 파일을 편집 "manifest.mf"

한 "manifest.mf" 파일 *.jar 파일의 내용을 해석하는 실제 휴대 전화를 얻는 데 필수적이다.  만약 적절한 "manifest.mf" 파일 *.jar 파일, 파일을 다운로드 후 휴대 전화를 성공적으로 *.jar 수도 내에 포함되어 있지 않습니다하지만, 다운로드한 파일을 해석 가능성 "Unsupported Content Type" 같은 오류보고에 실패할 수있습니다. 
아래의 간단한 "manifest.mf" 파일의 예입니다.
file_image_manifest_mf.jpg
여기에 일반 텍스트로 "manifest.mf" 파일입니다 : 
MIDlet-1: My_Description,, HelloMIDlet
MIDlet-Name: My_Midlet_Suite
MIDlet-Vendor: Colin Fahey, Inc.
MIDlet-Version: 1.0
MicroEdition-Configuration: CLDC-1.0
MicroEdition-Profile: MIDP-1.0
주목할 점은 CLDC과 MIDP 버전이 파일에 명시되어있습니다.  보수를 할 때 매우 신중하게 편집이 파일에서 다양한 분야.  만약 당신이 다음이 예제에서 모든 필드를 제거하려고 "File Corrupt" 오류가 표시되지 않습니다.  또한, 즉 그들이 예제에 나타난 순서대로 필드.  당신만큼 많이, 그리고 문자를 간단하게 문자, 숫자, 마침표로 제한 유지할 수있습니다 또한, 각 필드에 값을 단축 및 대시.  일부 휴대 전화 서비스, 휴대 전화, 필드와 필드의 내용 유사 명령을 더 참을 수있습니다. 
주의 : 

"jar" 때 프로그램, 그리고 *.jar 파일을 만들기 위해 "manifest.mf" 파일 참고 문서 파일로 지정되어 사용되고, 프로그램과 매니 페스트 파일을 읽습 "jar"으로 출력 파일 *.jar 이내 "MANIFEST.MF"라는 파일이 만들어집니다 더 많은 필드를 추가할 수도있습니다.  따라서 "MANIFEST.MF" 파일 *.jar 파일에서, 그리고 압축을 푼 다음 *.jar 원래 "manifest.mf" the "MANIFEST.MF" 함께, 두 개의 파일이 다를 수도의 원래 "manifest.mf" 파일을 만드는 동안 여러 가지가 포함된 파일을 지정된 파일보다 더 많은 필드와 비교된다 . 

a *.jar 파일과 새로운 시도가 매니 페스트 파일을 사용하여 파일 형태로 *.jar에서 "MANIFEST.MF" 파일을 추출하지 마십시오.  만약 당신이 다음 예에서 볼 수 있듯이 이들을 제외한 모든 필드를 제거하려면 반드시 *.jar 파일에서 파일의 압축을 풉니다 "MANIFEST.MF" 위에 표시된 파일 "manifest.mf". 
참고 사항 :

분명히 Motorola T720 전화에 표시되지 않는 프로그램에 대한 아이콘.  이래서는 아이콘으로 내 midlet 설명하지 않았다.  그러나, 다음의 방법을 프로그램에 대한 매니 페스트 파일 내에있는 아이콘을 설정하는 방법을 보여줍니다 : 

MIDlet-1: My_Description, /icon.png, HelloMIDlet 

그 애플 리케이션을위한 디스플레이 아이콘을 할 때 휴대 전화의 아이콘 파일 이름을 지정, 개발 및 파일의 파일 이름 중에서 파일 이름을 지정하여 *.jar 파일 아이콘 이미지 파일 자체에 추가 *.jar 파일에 추가됩니다. 

4.6 the "manifest.mf" 파일과 파일에 파일을 넣어 *.class에 *.jar

다음 명령을 *.jar 파일을 만듭니다.  이 *.jar 파일 및 지정된 manifest.mf 파일을 포함시킬 *.class 지정된 디렉토리에서 찾은 파일이 포함됩니다.
cmd_prompt_jar.jpg
현재 디렉토리 : C:\HelloMIDlet
jar  cfm  hi.jar  manifest.mf  -C .\output  HelloMIDlet.class
a *.jar 파일을 만드는 복잡한 가상의 예를
아이콘 이미지 파일 (예, "icon.png") 가정해보 "/icon.png"로 *.jar 파일에 표시하는 것입니다.  (참고 : 프로그램 아이콘 Motorola T720 휴대 전화에 나타나지 않도록 할 수 있지만 다른 휴대 전화 종류에 나타나지 않습니다, 그리고 MIDP 에뮬레이터에 나타나지 않습니다.) 

거기 가정해 디렉토리 "images" 이미지 파일 (*.png 형식)와 이름이있다.  이 디렉토리를 가정해보 및 디렉토리에 포함된 모든 이미지, Java 프로그램에 상대적인 디렉토리 /images로 액세스할 수 있어야합니다 (그 이미지를 "a.png" 경로를 사용하여 액세스할 수있는 것이 "/images/a.png") 등. 

가정해보 the preverify 모든 *.class의 명령에 의해 "verified"라는 디렉토리에 들어있는 파일을 제작했다.  예를 들어, 메인 클래스의 검증 버전 "MyApp.class", "verified" 폴더에있을 것이라고, 함께이 프로그램의 다른 클래스와 함께.  이러한 모든 수업하는 *.jar 파일의 루트 디렉토리에 접근할 수있습니다. 

다음 명령은 다양한 목표를 달성 *.jar은 이전 단락에서 지정한 파일이 만들어집니다.  주의 : 명령의 지혜로움에 대해서만 텍스트의 여러 라인을 여기까지 확대됐다.  명령 프롬프트에서 명령을 입력했을 때, 명령 줄바꿈이 포함되지해야하며 그렇지 않으면 명령 인터프리터 여러 개의 독립적인 명령어로 입력된 텍스트를 해석하는 것이다. 

jar
    cfmv             [Create JAR, Specify JAR Name, Add manifest.mf, Verbose]
    MyApp.jar        [Name of output JAR file]
    manifest.mf      [The manifest.mf file]
    icon.png         [Optional icon, specified by JAD as "/icon.png"]
    images           [Directory to add to JAR as "/images"]
    -C .\verified .
명령의 마지막 부분은 이해하기 어렵다.  그것은 다음과 의미가있다 :  ".\verified, 그리고 모든 *.class 집어넣은 현재 작업 디렉토리를 변경 '.' 상대 디렉터리에서 현재 작업 디렉토리 (즉 모든 *.class 파일) 파일을 찾은 파일 *.jar."  때문에 디렉토리 *.jar 파일에 삽입하도록 클래스의 경로를 지정하기 전에 변경된 있었다 로컬 경로는 상대 경로에서 파일을 때 파일에 배치됩니다 *.jar 나타나지 않습니다. 

예를 들어, 수업을 가정해 확인한 다음 디렉토리에 위치 : 

C:\MyApp\verified 

클래스 파일에는 다음과 같은 것 같은데 : 

C:\MyApp\verified\w.class 

다음 명령에서 파일을 만들 *.jar, "C:\MyApp"의 현재 디렉토리에서 시작, "w.class" the *.jar 파일의 루트 디렉토리에 끼이고 지정 "-C .\verified ."  높아집니다.  </ 전자>

"-C" 옵션을 지정하면됩니다 경고 : 그것은 jar 명령을 명령 매개 변수의 전체 수열 처리의 시점에서 현재 작업 디렉토리를 변경합니다.  따라서, jar 명령은 그 명령은 매개 변수에있는 다른 파일을 찾을 수없습니다 "-C" 언급한 옵션을 넘어 불평 할 수도있습니다.  이러한 문제가 발생할 경우, 단순히 전체 명령의 마지막 매개 변수가되기 위해서는 "-C .\verified ."  이동합니다. 

다음 jar 명령의 자세한 정보 출력을 보여줍니다. 
added manifest
adding: icon.png(in = 449) (out= 454)(deflated -1%)
adding: images/(in = 0) (out= 0)(stored 0%)
adding: images/a.png(in = 2463) (out= 2223)(deflated 9%)
adding: images/b.png(in = 1322) (out= 579)(deflated 56%)
adding: images/c.png(in = 3433) (out= 2874)(deflated 16%)
adding: images/d.png(in = 1524) (out= 801)(deflated 47%)
adding: w.class(in = 2570) (out= 1356)(deflated 47%)
adding: MyApplication.class(in = 4714) (out= 2169)(deflated 53%)
adding: x.class(in = 3239) (out= 1429)(deflated 55%)
adding: y.class(in = 14205) (out= 6481)(deflated 54%)
adding: z.class(in = 9448) (out= 5135)(deflated 45%)

4.7 새 *.jad 파일을 만들고 편집

한 *.jad 파일은 휴대 전화를 한 사람에게 설명할 수있는 사람은 컴퓨터 프로그램에 필요한 프로그램을 다운로드를 결정합니다.  이 *.jad 파일 또한 일부 우회 *.jar 자체에서 제공합니다. 
file_image_hi_jad.jpg
예를 *.jad 파일, 파일 설명 *.jar
여기에 일반 텍스트 형식 hi.jad 예제 파일입니다 :
MIDlet-1: My_Description,, HelloMIDlet
MIDlet-Jar-Size: 1283
MIDlet-Jar-URL: http://www.colinfahey.com/hi.jar
MIDlet-Name: My_Midlet_Suite
MIDlet-Vendor: Colin Fahey, Inc.
MIDlet-Version: 1.0
(크기 변경) 변경은 거기에있는 파일을 생성할 수있는 *.jad 쉽게 필드 "MIDlet-Jar-Size:" 때마다 *.jar 파일 업데이 트를 만드는 프로그램입니다.  만약 당신이 유용한 인터넷 검색 J2ME 프로그램을 찾을 수있을 것이다. 

만약 크기가 필드에 다음 오류는 휴대 전화를 성공적으로 다운로드 후 나타날 수 : "Download Failed" (다운로드 실패) *.jar 파일의 정확한 전체 바이트를 지정하지 않습니다. 

the Motorola T720 휴대 전화를 들어, 다음과 같은 오류 메시지가 생성된 *.jar 파일 내의 파일 MANIFEST.MF : "Failed: File Corrupt"에서 *.jad 파일, 또는 가능성이 잘못된 필드에 잘못된 필드 inidcate (실패 : 사용할 수있는 손상된) 파일입니다. 
참고 : 파일 *.jar 경우 인터넷 웹 서버에 해당 *.jad 파일과 같은 디렉토리에 다음 파일을 *.jad 단순히 전체 URL를 지정하지 않고, 다음 예제로에서 *.jar 파일의 파일 이름을 나타낼 수있습니다 : 

MIDlet-Jar-URL: hi.jar 

Apache 때 인터넷의 웹 서버에서 이러한 파일을 다운로드 Motorola T720 휴대 전화, 이것은 전체 URL 포함되지 하셔도됩니다.  *.jar하지 않는 파일에 대한 전체 URL 경로 *.jad 파일 내에 지정되어 그러나 Yahoo!  때 인터넷의 웹 서버에서 Motorola T720 휴대 전화에 실패할 것이다, 다음 예제와 마찬가지로,이 파일을 다운로드하는 다운로드를 시도합니다 : 

MIDlet-Jar-URL: http://www.colinfahey.com/hi.jar 

저는이 문제에 대한 이유를 알지 못하지만, 나는이 문제를 다른 휴대 전화 (또는 휴대 전화 서비스 제공 업체)에 영향을 미치지 않습니다.  다른 위치에 있기 때문에 서버에있는 모든 파일의 정보를 변경해야 *.jad 파일을 이동 *.jad 파일 내에 *.jar 파일에 대한 전체 URL 지정하는 데 분명, 불편이다.  그러나 전체 URL 지정 *.jad 더 많은 특정 휴대 전화 및 특정 휴대 전화 서비스 제공 업체에 대한 신뢰도를 떨어뜨릴 수도있습니다. 

4.8 테스트 프로그램을 실행하여 *.jar 파일과 파일 *.jad

다음은 클래스를 실행 파일에 *.jar, *.jad 파일에 의해 설명되어있다. 
cmd_prompt_midp_jar_jad.jpg
(현재 디렉토리 : C:\HelloMIDlet)
midp  -classpath c:\j2me\midp\classes;.\hi.jar  -descriptor hi.jad

4.9 참고 문헌 J2ME, MIDP, CLDC 개발을위한

많은 내가 여기서 무엇을 선보였다의 많은 다른 인터넷 사이트에서 찾을 수있습니다.  그러나, 일부 다른 인터넷 사이트에서 발견된 오류를 수정하고 누락된 내용을 추가, 그리고 누군가가이 물건을 해보려고의 완전한 경험을 선보였다.  여기있는 나를 도왔 시작은 매우 유익한 링크 : 
http://wireless.java.sun.com/midp/articles/getstart
http://wireless.java.sun.com/midp/articles/setup

5. 복잡한 프로그램 J2ME

5.1 소개

간단한 프로그램이이 문서의 이전 섹션에 제시 유일한, 그리고 단일 소스 코드 파일이 프로그램을 거의 아무것도 따라서 않는 휴대 전화를 프로그래밍의 좋은 본보기가되지 않습니다. 

내 친구 Sam Robertson ("21")라고 불리는 그 사람을 가르친다 "Blackjack" 카드 게임을하고 흥미로운 J2ME 프로그램을 썼습니다.  한 선수 딜러 "카드와 카드의" 선수 쌍, 그리고 어떻게해야할지 결정해야합니다 수여 플레이어 : 체재, "2 루타" - "아래로, 또는" 분할. 

이 프로그램의 소스 코드 파일 6.  이 프로그램은 사용자 입력에 응답 단순한 그림과 텍스트를 업데이 트 않습니다. 
sbj_screen_on_phone.jpg

5.2 소스 코드

다음 링크를 클릭하고 *.jad 파일 "manifest.mf" 파일 및 배치 파일을 하나의 편리한 ZIP 모든 파일에 소스 코드를 얻을수있다.
sbj.zip
소스 코드 파일에 포함된 ZIP
6090 바이트
MD5: bf3922035b7a4eef24e107d03b7524c9
임의의 디렉토리로,하지만 아래의 Windows 엑기스를 "c:\" 경우, 다음 예제와 토론이 될 가능성도 가까이하여 실제 상황에 압축을 풉니다.
sbj_directory_files.jpg
"c:\"에 sbj.zip 추출 "c:\sbj" 디렉토리 생성

5.3 매니 페스트 파일

파일 : "manifest.mf" :
MIDlet-1: My_Description,, SBJ_MidletT
MIDlet-Name: SBJ_MidletT
MIDlet-Vendor: Sam Robertson
MIDlet-Version: 1.0
MicroEdition-Configuration: CLDC-1.0
MicroEdition-Profile: MIDP-1.0

5.4 프로그램을 빌드 배치 파일을

다음 배치 파일을 거친이지만, 일러스트 레이션의 역할을 어떻게하면 J2ME 프로그램을 구축하여 자신의 배치 파일 작성을 시작 할 수도있습니다.  이 예제 배치 파일 않습니다 다음 :
옛날 *.class 파일이 들어있는 디렉토리를 삭제 (1); 
(2) 옛 확인 *.class 파일이 들어있는 디렉토리를 삭제; 
(3) a "수업을 출력 디렉터리를" 확인합니다; 
*.class 파일을 컴파일 (4) 모든 *.java 소스, 출력 "디렉터리로가는" 수업이다. 
(5) "확인된 출력 디렉터리를" 확인합니다; 
(6) Preverify 모든 클래스 "수업" 번호부에 올려 확인된 클래스는 "확인" 디렉토리에 들어있습니다. 
(7), *.jar 파일 만들기 및 mainfest 파일을 추가, 모든 클래스는 "확인" 디렉토리에; 
*(8) 테스트 preverified 수업을 통해 프로그램을 직접; 
*(9) 테스트 *.jar과 *.jad를 통해 프로그램 파일; 

(*...  이러한 단계 (코멘트) 내 배치 파일에서 사용할 수없습니다.) 
sbj_build_sbj_bat_file.jpg
프로그램을 구축하기위한 배치 파일 "build_sbj.bat"
여기에 일반 텍스트 형식 ("build_sbj.bat") 같은 파일이다 :
rmdir /S /Q classes
rmdir /S /Q verified
del /F /Q  *.jar

mkdir classes

javac  -g:none  -target 1.1  -d .\classes  -bootclasspath c:\j2me\midp\classes  *.java

mkdir verified

preverify  -classpath c:\j2me\midp\classes;.\classes  -d .\verified  .\classes

jar  cvfm sbj. jar manifest.mf  -C  .\verified  .

REM  midp  -classpath c:\j2me\midp\classes;.\verified  SBJ_MidletT
REM  midp  -classpath c:\j2me\midp\classes;.\sbj.jar  -descriptor sbj.jad
REM  Finished

5.5 건물은 명령 프롬프트에서

여기서 명령줄에서 "build_sbj.bat" 배치 파일을 실행의 결과입니다 :
sbj_build_command_prompt.jpg
배치 파일을 실행 the "build_sbj.bat"
그 "rmdir"과 "del" 작업에 대한 경고 메시지를 단순히 거기에 아무것도 표시를 제거합니다. 

당신과 그 결과로 새로운 *.jar 배치 파일을 실행 파일 (즉, "classes"과 "verified") 새로운 디렉토리를 볼 수있습니다 :
sbj_new_files_after_build.jpg
소스 코드 파일과 새 파일이 생성

5.6 *.jad 파일

the sbj.jar 파일을 배포하려면, 우리가 작성하고 해당 필드에 올바른 *.jar 크기로 sbj.jad 파일을 편집해야합니다 :
파일 : sbj.jad
MIDlet-1: SBJ_MidletT, , SBJ_MidletT
MIDlet-Jar-Size: 7257
MIDlet-Jar-URL: sbj.jar
MIDlet-Name: Sam Blackjack Trainer
MIDlet-Vendor: Sam Robertson
MIDlet-Version: 1.0
MicroEdition-Configuration: CLDC-1.0
MicroEdition-Profile: MIDP-1.0
한 사람 *.jar 때 *.jad 파일을 인터넷 사이트에 집어 파일 작성 URL을 추가해야 할 수도있습니다 -하지만 난 실험 () 전 (즉, 난 겨우 지정된 전체 URL 언급을 피할 수 있었다에 의해 발견 *.jar 자체로) 파일 이름입니다.  그러나, 완전한 URL에서 퍼팅,하지만 나는 당신이 무엇을 관찰 걸 알리고 싶었어요.

5.7 요약

귀하의 프로젝트에 여러 소스 파일을 한다는게, 일반적이며이 섹션에서 우리는 여러 클래스, 포장 및 실행 순으로 건물의 원유 예시했다. 

제발 다음 섹션 Sun Wireless Toolkit, 어떤 애플 리케이션을 사용하여 건물에 대해 훨씬 쉽게 볼 수있다. 

6. Sun "Wireless Toolkit (version 1.0.4_01)"

6.1 소개

Sun 건물과 포장을위한 프로그램 J2ME 편리한 개발 환경을 제공 : "Java 2 Platform Micro Edition (J2ME) Wireless Toolkit (version 1.0.4_01)". 

(주의 : 당신은 이전 섹션에서이 툴킷을 사용합니다.  마십시오이 지금이 버전의 경우 이미 Java 2 SDK 설명하지 않아도 Java 2 SDK 1.4을 다운로드해야합니다.) 

다음 인터넷 사이트에 툴킷을 다운로드로 이동합니다 : 

http://java.sun.com/products/j2mewtoolkit/ 
주의!
 

링크 "2.0 Beta 1 English" (현재 가기 다운로드 옵션을 클릭하지 마십시오) Motorola T720 개발하는 경우 -이 버전은 몇 가지 물건을 MIDP-2.0있다, 그리고 이것은 두통이있을 수있습니다 주위를 받고있다. 
j2me_wireless_toolkit_2_0_download_page.jpg
버전을 다운로드하지 마십시오!  ("2.0 Beta 1 English")
이 버전의 노력, 그리고 궁극적으로 깔끔하게 마무리 설정을 변경하는 코드로 컴파일을 많이 잡았지만 실행하려고했을 때 보안 예외가있어 모든 노력했다.  쓸데없는 짓하지 마! 
"1.0.4_01 English" 버전을 다운로드합니다.  여기 다운로드 페이지의 모습입니다 : 
j2me_wireless_toolkit_1_0_4_01_download_page.jpg
이 Sun J2ME Wireless Toolkit (version 1.0.4_01) 다운로드 페이지
j2me_wireless_toolkit_1_0_4_01_download_page2.jpg
사이트 목록은 Sun J2ME Wireless Toolkit (version 1.0.4_01) FTP
이것은 다음의 파일을 다운로드한다 : "j2me_wireless_toolkit-1_0_4_01-bin-win.exe" 
여러분의 시스템에 설치하려면이 프로그램을 실행합니다.

6.2 J2ME Wireless Toolkit : 툴바 출시

툴킷 후에는 "Start" (시작) 메뉴에서 시스템을 시작할 수있습니다 : 설치됩니다
j2me_wireless_toolkit_1_0_4_ktoolbar.jpg
도구 모음 프로그램 시작
당신도이 Start (시작) 메뉴에서 항목을 "Documentation" 통해 MIDP-1.0 설명서에 액세스할 수있습니다.
j2me_wireless_toolkit_2_0_wtk20_docs_api_index_html.jpg
J2ME Wireless Toolkit (version 1.0.4_01) 설명서

6.3 J2ME Wireless Toolkit : 프로젝트를 생성하고 빌드

j2me_wireless_toolkit_1_4_ktoolbar_window.jpg
도구 모음의 준비가되어있습니다.  "New Project..."를 클릭하여 새 프로젝트를 만듭니다.
j2me_wireless_toolkit_1_4_ktoolbar_new_project.jpg
New Project : 프로젝트 이름을 입력 (JAR 이름과 새 프로젝트 디렉토리의 이름), 클래스 이름을 입력되고 MIDlet (클래스 MIDlet에서 파생된, 귀하의 신청은 기본적으로 기본 클래스). 
j2me_wireless_toolkit_1_4_ktoolbar_project_created.jpg
도구 모음 : 만든 프로젝트입니다.  주목할 점은 콘솔 등 어디 네 소스 파일 *.java 놓는 법을 알려줍니다  (예, "c:\WTK104\apps\sbj\src" 등) 
j2me_wireless_toolkit_1_4_ktoolbar_project_settings.jpg
도구 모음에서 "Settings..."이 프로젝트를 설정 메뉴를 클릭하십시오. 
값은 100 바이트 () 지금과 "MIDlet-Jar-Size" "필드" 신경쓰지 말고.  결국 우리가 얻을 수있는 올바른 값을 설정하게됩니다. 
j2me_wireless_toolkit_1_4_ktoolbar_project_midlet_settings.jpg
프로젝트 설정 대화 상자의 MIDlets 탭을 클릭합니다.
테이블 ("MIDlet-1")에서 유일하게 연속 하이라이트를 클릭하고 선택합니다.  "Edit" 버튼을 누릅니다. 
j2me_wireless_toolkit_1_4_ktoolbar_project_no_icon.jpg
만약 당신이 *.jar 파일에 넣어 준다고 *.png 파일가없는 필드 "Icon" 클리어. 
마 다음 : 

(1) Project --> Clean : 모든 *.class 파일을 제거;
(2) Build : 모든 *.class 파일 및 preverifies 구축;
(3) Project --> Package --> Create Package : *.jar 및 생산 *.jad
j2me_wireless_toolkit_1_4_ktoolbar_clean_build_create_package.jpg
the *.jar 및 *.jad 건물의 결과
이 세 단계를 할 때, *.jar 결과와 *.jad 즉시 지방 에뮬레이터, 또는 다른 사람이 다운로드에 대한 귀하의 인터넷 사이트에 즉각적인 배포에 대한 항공 (OTA) 이상에서 "실행을" 위해 "준비하고있다."  the *.jad 파일의 크기가 필드 *.jar 올바른 것입니다.  당신은 매번 (3) 단계를 다시 할 것을 잊지 마십시오! 

이제 당신은 "Run" (실행) 버튼을 눌렀을 때 테스트할 수있습니다. 
j2me_wireless_toolkit_1_4_ktoolbar_project_launch.jpg
j2me_wireless_toolkit_1_4_ktoolbar_project_running.jpg
이 프로젝트에 대한 "Run" 눌러도에서 에뮬레이터로 *.jad을 읽습니다.  (일반적으로 단 한)를 발사하는 특정 MIDlet 선택할 수있습니다. 
그냥 지정된 위치에서 파일을 복사 *.jar과 *.jad (도구 모음은이 프로젝트의 구축 기간을 콘솔 창에 의해) 등의 보도했다 :
(콘솔 창에 보낸 사람 :)
Wrote c:\WTK104\apps\sbj\bin\sbj.jar
Wrote c:\WTK104\apps\sbj\bin\sbj.jad
수정하지 않고 직접 인터넷 사이트에이 파일을 올려, 그리고 그것을 작동해야합니다.  저는 여기에 제 휴대 전화에 공기 (OTA)이 컴파일된 "응용" 프로그램을 다운로드 "후" 본 것은
sbj_screen_on_phone.jpg
Sam Robertson's Blackjack Trainer 내 휴대 전화에서 실행 (sbj.jar)

7. 인터넷 사이트에 소프트웨어를 제공하는

7.1 수 있도록 웹 서버는 인터넷 *.jar 파일과 *.jad 파일에 대한 형식을 지정 MIME

인터넷 Apache하면 웹 서버가 있으면 파일을 루트 디렉토리 내에 이름 ".htaccess" 귀하의 웹 사이트를 만들어야합니다.  이 MIME 추가하거나 파일 형식 ".htaccess" 파일 등 우선으로 Apache 구성을 무시할 수있습니다.  당신은 MIME 유형 *.jar 파일과 *.jad 파일, 텍스트 파일에 표시된대로 다음에 해당하는 지정할 추가해야합니다 : 
htaccess_image.jpg
the Apache 인터넷 웹 서버에 대한 내 정의 ".htaccess" 파일입니다.  참고 :이 파일 ".htaccess.txt" 단지 Windows 때 운영 체제를 사용하여 파일을 편집하기 쉽게 이름을.  파일 이름을 ".htaccess" 파일 Apache 인터넷 웹 서버와 함께 사용할 수있습니다 전에 변경해야합니다. 
여기에 일반 텍스트 형식 .htaccess 내 단순한 파일입니다 :
AddType text/vnd.sun.j2me.app-descriptor jad
AddType application/java-archive jar
AddType text/vnd.wap.wml wml
분명히, Apache 서버를 만들거나 행동의 변화에 즉각적인 결과가이 파일을 수정합니다.  내가 Apache 서버 점검 ".htaccess" 파일의 수정 날짜와 시간에 따라 각각의 새 들어오는 트랜잭션, 서버로드 파일을 수정하는 경우에는 날짜와 시간을 변경했다 같아요. 

인터넷 웹 서버의 경우 다른 종류가 있으면 MIME 유형을 지정하는 방법을 결정합니다, 당신은 그 *.jar 파일과 *.jad 파일 형식을 지정하는 적절한 MIME 있는지 확인해야합니다. 

만약있다면 MIME 유형을 설정하지 않은 휴대 전화하여 *.jad 파일을 다운로드를 거부하고 다음 오류를보고 당신은 알게 될 겁니다 : 

"406: Not Acceptable" 

7.2 선택 문서 HTML 또는 WML 이내 *.jad 파일에 대한 링크를 제공합니다

AT&T 서비스와 휴대 전화 *.jad 직접 Motorola T720 J2ME에서 휴대 전화로 파일을 *.jad의 URL 입력하여 파일을 다운로드 할 수있다.  이것은 다른 휴대 전화 서비스 제공 업체들과 다른 J2ME 휴대 전화를 위해 일할 가능성이 높다. 

그러나, 그것을 더 많은 사람을위한 HTML 문서 내에서 링크를 선택하거나 파일을 다운로드 WML 문서 내에서 의해 *.jad 편리하게 될 수도있습니다.  (참고 : WML 지금은 무용지물이다.  지금 HTML 해석할 수있는 대부분의 휴대 전화.) 
file_image_hi_html.jpg
a *.jad 파일에 대한 링크와 함께 간단한 문서 HTML
file_image_hi_wml.jpg
a *.jad 파일에 대한 링크와 함께 간단한 WML (WAP) 페이지  (참고 : WML 지금은 무용지물이다.  지금 HTML 해석할 수있는 대부분의 휴대 전화.) 

8. 인터넷 사이트에서 소프트웨어를 다운로드

아래의 이미지를 개발하고 위의 이전 섹션에서 설명한대로 배치를 다운로드하고 실행 않았다 MIDlet 행동의 정확한 순서를 표시합니다.  이러한 이미지를 내 휴대 전화의 화면의 사진입니다. 
t720_screens_download_program.jpg
(1) 메인 화면 : 언제 전화를 열고, 당신은 메인 화면을 볼 수있다.  가운데 버튼을 누르면 메인 메뉴로 이동합니다. 
(2) Main Menu : "WebAccess" 항목으로 이동합니다. 
(3) WebAccess : "Go To URL" 항목으로 이동합니다. 
(4) Enter URL : URL에 *.jad 파일의 유형 (또는 HTML 문서, 또는 문서의 WML). 
(5) Details;이 정보는 *.jad 파일에서 구문 분석했다.  언론 DOWNLD the *.jar 파일을 다운로드합니다. 
(6) Download Complete;이 메시지에 대한 사라질 잠깐; 
(7) Installing;이 메시지에 대한 사라질 잠깐; 
(8) xxxx bytes transferred;이 메시지에 대한 사라질 잠깐; 
(9) Installed;이 메시지에 대한 사라질 잠깐; 


프로그램을 설치한 후되었습니다 WebAccess 메뉴가 다시되면, 단순히 각 메뉴의 메인 화면으로 돌아가려면 출구가 나타납니다. 
t720_screens_start_program.jpg
(1) 메인 화면 : 언제 전화를 열고, 당신은 메인 화면을 볼 수있다.  메인 메뉴를 선택하거나, 메인 화면에서 커서가 언론을 통해 하향 "Games & Apps" 옵션을 선택합니다. 
(2) Java Powered :이 화면에서 사라 만요. 
(3) Games & Apps : 항목을 선택하여 프로그램의 이름과 함께! 
(4) 야호!  프로그램의 성공적인 실행! 
휴대 전화에이 프로그램은 외모 에뮬레이터 내에서 외관은 매우 유사합니다.

9. 오류 메시지 다운로드와 설치 오류 메시지

9.1 Motorola T720 (J2ME) 오류 메시지

다음과 같은 오류 메시지가 휴대 전화로 Motorola T720 (GSM/J2ME)에만 적합하다. 

9.1.1 "Download Failed"

원인 # 1
1644 바이트 이상의 파일 (HTML, JAD, JAR, MID, GIF) 특정 인터넷 웹 호스팅 및 서버에 대해이 오류가 발생할 것입니다.  여기 호스트 및 서버의 간단한 목록입니다 : 
Host / Server                                               Error
===================================================    =================
Apache                                                       No
Microsoft Personal Web Server (direct from your PC)          No
Earthlink (Apache)                                           No
Yahoo! (custom server)                                       Yes
문제는 Motorola T720 GSM/J2ME 펌웨어에있는 조각에 실패하고 파일 다운로드를 일으키는 결함 예정이다.
명백한 해결책만이 인터넷 웹 호스트 또는 서버 유형을 전환하는 것입니다.  다른 휴대 전화 유형이 문제가되지 않습니다. 
원인 # 2
a *.jad 파일의 해당하는 "MIDlet-Jar-Size:" 필드 *.jar 파일의 정확한 바이트 전체를 나타내지 않습니다.

9.1.2 "Failed: File Corrupt"

원인 # 1
이 *.jar 파일은 특정 휴대 전화를 사용할 수없습니다 API 기능을 사용합니다. 

예를 들어, MIDP 2.0 기능을 휴대 전화에 Motorola T720 GSM/J2ME (전용)가 사용할 수없는 기능이 MIDP 1.0있다.  한 프로그램이 에뮬레이터 내에서 실행할 수도 있지만 휴대 전화에서 실행되지 않을 수있습니다. 

이 솔루션은 소스 코드에 MIDP 2.0 기능에 대해 검색하고 MIDP 1.0 함수, 또는 제거하는 기능이 필요 MIDP 2.0 기능으로 대체됩니다. 
원인 # 2
이 "manifest.mf" the "jar" 유틸리티 ()를 통해 *.jar 파일을 만드는 데 사용된 파일에 오류가 포함되어있습니다. 

있는지 확인 "manifest.mf" 파일 CLDC과 MIDP의 다음 버전이있다 : 
MicroEdition-Configuration: CLDC-1.0
MicroEdition-Profile: MIDP-1.0
전체 "manifest.mf" 파일을 거의 정확하게 다음과 같은 모양입니다 : 
MIDlet-1: My_Description,, HelloMIDlet
MIDlet-Name: My_Midlet_Suite
MIDlet-Vendor: Colin Fahey, Inc.
MIDlet-Version: 1.0
MicroEdition-Configuration: CLDC-1.0
MicroEdition-Profile: MIDP-1.0
파일의 마지막 라인을 포함한 "manifest.mf" 파일에 텍스트의 각 라인, carraige 반환 (CR; 13; 0x0d) 개행 "문자로 끝나야" 문자 순으로 (LF; 10; 0x0a). 

그 예를 여기에 나와있는 파일의 버전에서 자신의 "manifest.mf" 파일의 차이가해야하는 첫 번째 필드 유일하게 3 개의 필드 예제에 나와있습니다.  최종 3 개의 필드를 예로 최종 필드 후 캐리지 리턴과 줄 바꿈해야 정확하게 "일치하는," 그리고 "파일의 마지막 두 개의" 문자가 있어야합니다. 

여기 "manifest.mf" 가능한 파일의 버전에 문제가있다 : 
"manifest.mf" 파일 (1) 네 ASCII 않은 문자가 포함된 문자; ASCII 문자의 차트에서 (이봐; 0 127 범위 밖에서 어떤 캐릭터를 통해 무효입니다); 
(2) 귀하의 파일을 각 "라인의" 끝에 "manifest.mf" "각" 캐리지 리턴 "문자" (CR) "후" (LF) 개행 "문자가없는" 경우; 
(3) 귀하의 파일을 각 라인의 끝에 "manifest.mf" 라인을 종료하기 전에 (CR)(LF) 보이지 않는 공백이나 탭있다; 
(4) 네 "manifest.mf" 파일 "Manifest-Version:" 라인이 포함되어있습니다; 
귀하의 "manifest.mf" 파일의 마지막 라인 (CR)(LF) 라인 (5) 끝나지 않습니다 터미네이션 대신 단순히 파일의 끝에 도달; 
"manifest.mf" 파일은 정확한 (6) 귀하의 정확한 필드와 같은 필드의 순서가없는 위의 예에서 볼 수 있듯이; 
(7) 네 CLDC 버전을 정확하게, 또는 1.0없습니