Elektroda.pl
Elektroda.pl
X
Arrow Multisolution Day
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Java - Midlet - jak zacząć (absolutnie początkujący)?

mirekk36 18 Sty 2008 16:49 19397 9
  • #1 18 Sty 2008 16:49
    mirekk36
    Poziom 42  

    Witam.
    Na początku zaznaczę, że całkowicie od samego początku bez żadnego doświadczenia z programowaniem w Java.

    Dowiedziałem się już żeby zainstalować sobie kompilator Java Sun zdaje się i jakoś mi się to udało (tak mi się wydaje)... tylko w ogóle nie wiem jak i co dalej żeby napisać nawet jakiś najprostszy Midlet na telefon komórkowy.

    Wiem, już że na telefon, który mam Nokia N95 na pewno można coś takiego napisać.
    Czy mógłbym poprosić o jakieś sugestie, podpowiedzi jak się poruszać w tym środowisku, jak zacząć aby zrobić typowy przykładowy programik (Midlet) typu "Hello world". Tak aby wgrać go na telefon i tam odpalić czy jak?

    Gdyby mnie ktoś zielony zapytał np jak zacząć w Delphi to napisałbym aby kliknął Menu plik, potem Nowy - utworzył formę, zapisał ją na dysku, położył kontrolki typu Label itp, wypełnił tekstem itp, skompilował a następnie uruchomił plik exe

    Tu z Javą na pewno będzie troszkę inaczej.
    Zdaję sobie z tego sprawę ale najgorzej jest jak się nic nie wie i ciężko zdobyć jakieś podstawowe informacje.
    A mam przecież zdefiniowany taki jasny i konkretny cel.
    Oczywiście później będę już może wiedział jak szukać funkcji w Javie czy klas jak się w tym poruszać i będę mógł pisać coraz bardziej zaawansowane rzeczy - a chodzi mi o możliwość odczytu i zapisu plików w telefonie oraz przesyłania ich przez Bluetooth lub przez RS232 do PCta i z powrotem.

    Pozdrawiam. Z góry dziękuję za jakieś życzliwe podejście i wskazówki.

    0 9
  • Arrow Multisolution Day
  • Pomocny post
    #2 20 Sty 2008 01:51
    pallid
    Poziom 20  

    Witam,
    Tak od samego poczatku to troche duzo bedzie, wiec sprobuje tylko wprowadzic w temat, a reszte bedziesz musial rozpracowac samemu. Mysle, ze najlepszym wyjsciem bedzie zdobycie jakiejs ksiazki (niestety polski rynek jest ubogi w pozycje dot. J2ME) oraz zapoznanie sie z tutorialami dostepnymi w sieci, a ponizszy opis potraktowac jako zarys problemu.

    Teoria:
    Specyfikacja J2ME opiera sie na pewnych zalozeniach, ktore dziela urzadzenia mobilne na dwa podstawowe profile:
    - CDC - Connected Device Configuration - obejmuje grupe urzadzen o wiekszych mozliwosciach funkcjonalnych (np. PDA, tunery TV), na ktorych zaimplementowana jest wirtualna maszyna Java (Java Virtual Machine) oparta na ograniczonej funkcjonalnosci J2SE (Java Second, Standard Edition) dostepnej dla standardowych komputerow. Funkcjonalnosc Java dostepna dla CDC rozszerzona moze byc o JavaTV, Xlety, grafike 2D.
    - CLDC - Connected Limited Device Configuration - przeznaczone dla typowych urzadzen mobilnych o, jak nazwa wskazuje, "ograniczonych zdolnosciach obliczeniowych". Wlasnie ta konfiguracja dotyczy glownie telefonow komorkowych, ktore implementuja tzw. KVM (Kilobyte Virtual Machine).

    O ile CDC/CLDC dotyczy konfiguracji urzadzen, ich funkcjonalnosc opisuja tzw. profile. CLDC (ktora w tym watku najbardziej nas interesuje) posiada nastepujace profile:
    MIDP 1.0 (JSR 37) - profil implementowany w pierwszych mobilnych urzadzeniach z obsluga Java. Specyfikacja MIDP 1.0 precyzuje wymagania co do obslugi wyswietlacza, klawiatury, tzw. RecordStore (przechowywania danych apletu w pamieci urzadzenia), dostepu do sieci czy bezpieczenstwa. Profil jest bardzo ograniczony, podobnie jak ograniczone byly urzadzenia w czasach, kiedy powstal.
    MIDP 2.0 (JSR 118) - nowy profil (i coraz bardziej popularny), rozszerzajacy funkcjonalnosc poprzedniego. Skupiono sie tutaj na wsparciu dla gier (m.in. 3D Gaming API, wsparcie obliczen zmiennopozycyjnych), obsludze multimediow oraz rozszerzono mozliwosci polaczen z siecia zewnetrzna (wprowadzono low-level networking). Sprecyzowano tez mechanizmy bezpieczenstwa.
    MIDP 2.1 - najnowszy profil, ktory precyzuje wymagania stawiane w poprzednim profilu, dodatkowo zmieniajac status niektorych pakietow z "opcjonalne" na "wymagane". Obecnie obsluge tego profilu mozna znalezc w telefonach Nokia z serii S40.

    Istotna rzecza jesli chodzi o MIDlety (aplikacje Java na urzadzenia mobilne) jest ich autentykacja. W zaleznosci od tego, czy aplikacja jest podpisana (trusted) przez dostawce, czy nie (untrusted) moze miec ograniczony dostep do zasobow telefonu (m.in. dostep do sieci zewnetrznej, PushRegistry, dostep do systemu plikow telefonu, itd.). Profil MIDP 2.0 definiuje jedynie sposob podpisywania i weryfikacji MIDletow oraz zaleznosci miedzy podpisanym/niepodpisanym archiwum. Nie precyzuje jednak, do jakich czesci API restrykcje maja byc stosowane oraz na jakim poziomie (allowed - zezwolone, user - jawne potwierdzenie przez uzytkownika), pozostawiajac to w gestii dostawcy urzadzenia). Powiedziane jest jedynie, jakie pakiety musza byc dostepne dla obu, podpisanych i niepodpisanych, MIDletow.




    Weryfikacja, czy MIDlet jest podpisany, odbywa sie poprzez sprawdzenie poprawnosci pliku deskryptora oraz zweryfikowaniu samego podpisu (klucz dostawcy jest aktualny oraz podpisany przez organizacje certyfikujaca, ktorej autentycznosc mozna potwierdzic - na podstawie tzw. "root certificate" zawartych w urzadzeniu.

    Aplikacja J2ME sklada sie zwykle z dwoch plikow:
    *.jar - Java ARchive - archiwum z wlasciwa aplikacja (tzw. MIDlet suite)
    *.jad. - Java Application Descriptor - zawiera opis aplikacji, w ktorym znajduje sie m.in. nazwa MIDletu (klasy glownej aplikacji), rozmiar, dostawca, wersja konfiguracji i profilu (tutaj nalezy wspomniec, ze MIDlet skompilowany dla nowszego profilu/konfiguracji nie zainstaluje sie na urzadzeniach nie wspierajacych tego profilu/konfiguracji, ale zgodnosc wstecz jest zachowana). W pliku deskryptora zapisane sa tez informacje potrzebne do weryfikacji MIDletu, jesli aplikacja jest podpisana (signed) przez dostawce.
    Aby uruchomic MIDlet zwykle wystarczy przerzucic go do pamieci telefonu i ew. zainstalowac. Ale to zalezy od producenta urzadzenia.

    [powyzej opisane jest niezbedne minimum. Po szczegoly odsylam do literatury]

    Narzedzia:
    IMO, w chwili obecnej, najlepszym srodowiskiem bedzie NetBeans 6.0 z wbudowanym MobilityPack (oczywiscie z wczesniej zainstalowanym JDK 6.0. MobilityPack opiera sie na Wireless ToolKit 2.5.0 (WTK 2.5.0), ktory jest bardzo dobrym zestawem narzedzi do projektowania aplikacji J2ME.

    Mozna rowniez zainteresowac sie SDK producenta (Nokia, Sony Ericsson...), ktore zwykle mozna latwo zintegrowac z IDE (NetBeans, Eclipse).

    Tak wiec do pracy potrzebne bedzie:
    - zainstalowane JDK 6.0
    - zainstalowane NetBeans 6.0 + MobilityPack (zintegrowany w pelnej wersji instalatora NetBeans)
    - telefon (opcjonalnie - WTK z MobilityPack dostarcza kilka emulatorow)

    Przy tworzeniu aplikacji w jezyku Java, przydatna jest dokumentacja API (Application Programming Interface), z ktorego mamy zamiar korzystac. W tym przypadku:
    http://java.sun.com/javame/reference/apis/jsr118/


    Praktyka:
    1. Po uruchomieniu NetBeans, dajemy "File->New Project..." lub (Ctrl+Shift+N).
    2. W kreatorze, wybieramy w "Categories:" - "Mobility", w "Projects" - "MIDP Application"
    3. W nastepnym oknie podajemy nazwe MIDletu oraz odznaczamy "Create Hello MIDlet"
    4. Nastepnie jako "Emulator platform:" dostepny bedzie "Wireless Toolkit 2.5.0 for CLDC", chyba, ze doinstalowane byly srodowiska innych dystrybutorow. Z listy "Device:" wybieramy dowolny emulator urzadzenia, "Device Configuration:" to CLDC-1.0, a "Device Profile:" to MIDP-2.0
    5. Klikamy "Finish"
    6. Na liscie projektow rozwijamy drzewo z naszym projektem i klikamy prawym przyciskiem myszy "Source Packages->New...->Midlet"
    7. W oknie, ktory sie otworzy dajemy nazwe MIDletu i ew. nazwe pakietu (Package).
    8. Klikamy "Finish" i mozemy zaczac pisac.

    O samym pisaniu MIDlet'ow na poczatek sprobuj tutaj:
    http://www.midlety.net/site/index.html

    2
  • Arrow Multisolution Day
  • #3 20 Sty 2008 12:28
    mirekk36
    Poziom 42  

    wielkie WOW ! :idea: - pallid jestem pod mega ogromnym wrażeniem czytając twój opis, tym bardziej, że już myślałem, iż pozostanie na zawsze z ilością odpowiedzi na poziomie ZERO

    .... to jest naprawdę takie fajne kompendium jak zacząć i to jeszcze żeby rozumieć co się po kolei robi - WIELKIE DZIĘKI - jeśli sprawi ci to przyjemność to przekazuję tobie 100punktów od siebie za to wszystko, tak się tylko zastanawiam czy nie będzie to problem jeśli jeszcze raz albo dwa gdy napotkam jakieś dalsze problemy - to będę mógł zawrócić ci głowę - może na priv?

    tak czy inaczej naprawdę mam nadzieję, że pozwoli mi to jakoś wystartować i dam tu o tym znać

    serdecznie pozdrawiam i po raz któryś już tam bardzo dziękuję

    0
  • #4 13 Gru 2008 21:52
    jabu74 - ekspert
    Poziom 19  

    Cześć

    Nie wiem jak zainstalować te platformy (dołączony obrazek).
    Mam cały czas ten błąd. Możecie coś poradzić ?
    Kiedyś już raz to zainstalowałem, ale do końca nie pamiętam jak mi się to udało. Ponadto wtedy miałem starsze wersje i to co pamiętam nie było jakiś problemów. Robiłem reinstalacje systemu. Nie wiem to jest chore.

    Pozdrawiam

    Proszę stosować się do: Instrukacja wstawiania obrazków. [adamas_nt]

    0
  • #5 14 Gru 2008 18:34
    pallid
    Poziom 20  

    Witam,
    jakie wersje NetBeans, JDK, SE SDK? Probowales przeinstalowac SDK? Mozesz tez sprawdzic, co siedzi w logu NB (C:\Documents and Settings\%USERNAME%\.netbeans\[version]\var\log\messages.log)

    PS. Jezeli korzystasz z NetBeans, nie ma potrzeby wrzucac drugi raz WTK z SDK.

    0
  • #6 14 Gru 2008 22:59
    jabu74 - ekspert
    Poziom 19  

    Cześć

    Dziękuję za zainteresowanie tematem.

    Zakapowałem o co chodzi. Otóż nie może być spacji w ścieżce docelowej. Dość długo nad tym myślałem i zorientowałem się po długich bojach i próbach gdzie jest błąd. chacha.

    Ale to to jeszcze nic ! Masakrą było nawiązanie połączenia z telefonem - męczyłem się dwa dni. Coś tam było Internecie na ten temat, ale tak naprawdę to zero konkretów. Wyrzucało mi jakiś błąd związany z proxy. Do tej pory nie wiem gdzie była przyczyna ale najprawdopodobniej zapora windows + program antywirusowy blokowały jakieś porty komunikacyjne przekierowujące do COMa. Nie pomagało wyłączenie programu antywirusowego (avast!) oraz wyłączenie zapory. Kombinowałem na wszystkie możliwe sposoby.

    W końcu dostałem jakiegoś olśnienia i przed instalacją NetBeans oraz SDK Sony Ericsson odinstalowałem program antywirusowy być może to pomogło, ale nie wiem do końca. Jeszcze odłączyłem kabel z neta tak żeby nie było żadnego aktywnego połączenia.

    Java JDK oraz JRE są najnowsze tzn. 1.6u11, NetBeans 6.5 (wersja z ME), SDK S-E 2.5.0.3.

    Normalnie mam dość tego komputera i jestem psychicznie strasznie wymęczony.

    Miesiąc temu jak instalowałem to poszło od strzała, ale miałem inne starsze wersje NetBeans, SDK Sony Ericsson, inny program antywirusowy oraz Vista 32 była bez SP1. Ale teraz przy tej powtórnej instalacji byłem niemile zaskoczony.

    To tyle tytułem wstepu. :]

    Jeżeli chodzi o te WTK2 to są tu emulatory konkretnych modeli telefonów S-E.

    Siedzisz w temacie programowania Midletów w tym środowsku ?

    Potrzebna mi pomoc w napisaniu prostej aplikacji na telefon komórkowy wysyłającej ciąg znaków ASCII pod wybrany adres internetowy.

    Pozdrawiam

    0
  • #7 26 Lis 2012 11:39
    piwuch
    Poziom 9  

    Witam. Nie chcę zakładać nowego tematu o tej samej nazwie więc odkopuje ten. J2ME to już troche antyk ale chciałbym się pobawić moim telefonem SE w610 i napisać sobie pare prostych apek jak np. kostka do gry.
    Niestety nie potrafię skonfigurować środowiska. Używam eclipse juno(nie za nowe?) Niby zainstalowałem J2ME SDK ze strony oracle, eclipseME. Gdy klikam new mogę wybrać zakładkę J2ME>J2ME Midlet, co skutkuje dodaniem klasy w projekcie, który mam otwarty.
    Ponadto nie mogę nigdzie znaleźć SE WTK, wszędzie ten sam link prowadzący do nieistniejącej już strony sony. Proszę o pomoc.

    0
  • #9 27 Lis 2012 19:29
    piwuch
    Poziom 9  

    Ruszyłem troszkę do przodu. Środowisko skonfigurowałem według tego. Skopiowałem tę przykładową apkę zmieniając tylko pakiet na swoją nazwę.
    Eclipse ma na wykonanie 15 sekund(tak było w poradniku, jak się zorientuję co i jak to może zmniejsze bo czasy już nie te i sprzęt szybszy). Po tym czasie dostaję komunikat:
    Proxy could not open new connection to handset.
    Could not connect to the device.
    Czy zapomniałem o czymś jeszcze?

    @edit: po spakowaniu wedlug instrukcji z linka i wysłaniu na telefon wszystko działa, więc problem leży gdzieś w emulatorze

    @edit: to ma prawdopodobnie jakiś związek z 64 bitowym systemem

    0
  • #10 30 Lis 2012 17:28
    piwuch
    Poziom 9  

    Poradziłem sobie. Należało zainstalować JDK na 32 bity obok wcześniejszego x64 i przeinstalować SE SDK podając mu 32 bitowe JDK.
    Ponadto w eclipse należało wybrać model z dopiskiem 'emu'.

    Czy ktoś się spotkał z trybem developerskim na starszych soniakach typu k550?

    0