SlideShare a Scribd company logo
1 of 55
Download to read offline
Studenkie Koło Naukowe ISA2
Warsztaty programistyczne J2ME 25 listopada 2010
Wprowadzenie do J2ME
Marcin Stachniuk
mstachniuk@gmail.com
Politechnika Wrocławska
Wydział Elektroniki
Studenckie Koło Naukowe Informatyki Systemów Autonomicznych
i Adaptacyjnych ISA2
25 listopada 2010
Marcin Stachniuk Wprowadzenie do J2ME 1/52
Studenkie Koło Naukowe ISA2
Warsztaty programistyczne J2ME 25 listopada 2010
Plan prezentacji
1 Wprowadzenie
2 Pierwszy kod
3 Jakie środowisko?
NetBeans
Eclipse
4 Uruchomienie aplikacji
5 Podsumowanie
Marcin Stachniuk Wprowadzenie do J2ME 2/52
Studenkie Koło Naukowe ISA2
Warsztaty programistyczne J2ME 25 listopada 2010
Plan prezentacji
1 Wprowadzenie
2 Pierwszy kod
3 Jakie środowisko?
NetBeans
Eclipse
4 Uruchomienie aplikacji
5 Podsumowanie
Marcin Stachniuk Wprowadzenie do J2ME 3/52
Studenkie Koło Naukowe ISA2
Warsztaty programistyczne J2ME 25 listopada 2010
The Java Platform
http://java.sun.com/javame/technology/index.jsp
Marcin Stachniuk Wprowadzenie do J2ME 4/52
Studenkie Koło Naukowe ISA2
Warsztaty programistyczne J2ME 25 listopada 2010
The Connected Limited Device Configuration
http://java.sun.com/javame/technology/index.jsp
Marcin Stachniuk Wprowadzenie do J2ME 5/52
Studenkie Koło Naukowe ISA2
Warsztaty programistyczne J2ME 25 listopada 2010
CLDC 1.0 vs CLDC 1.1
CLDC 1.0
”odchudzona” java 1.3
pakiety: java.io, java.lang, java.util
brak obsługi liczb zmiennoprzecinkowych
CLDC 1.1 (JSR-139)
obsługa liczb zmiennoprzecinkowych
klasy Double i Float
rozszerzona klasa Thread
Marcin Stachniuk Wprowadzenie do J2ME 6/52
Studenkie Koło Naukowe ISA2
Warsztaty programistyczne J2ME 25 listopada 2010
CLDC 1.0 vs CLDC 1.1
CLDC 1.0
”odchudzona” java 1.3
pakiety: java.io, java.lang, java.util
brak obsługi liczb zmiennoprzecinkowych
CLDC 1.1 (JSR-139)
obsługa liczb zmiennoprzecinkowych
klasy Double i Float
rozszerzona klasa Thread
Marcin Stachniuk Wprowadzenie do J2ME 6/52
Studenkie Koło Naukowe ISA2
Warsztaty programistyczne J2ME 25 listopada 2010
Mobile Information Device Profile cz. 1
MIDP 1.0
http
GUI
RMS Record Management Store
MIDP 2.0
https
Mobile Media API (MMAPI)
The Game API (Sprite, TiledLayer)
Obrazy RGB
Full Screen Mode
Marcin Stachniuk Wprowadzenie do J2ME 7/52
Studenkie Koło Naukowe ISA2
Warsztaty programistyczne J2ME 25 listopada 2010
Mobile Information Device Profile cz. 1
MIDP 1.0
http
GUI
RMS Record Management Store
MIDP 2.0
https
Mobile Media API (MMAPI)
The Game API (Sprite, TiledLayer)
Obrazy RGB
Full Screen Mode
Marcin Stachniuk Wprowadzenie do J2ME 7/52
Studenkie Koło Naukowe ISA2
Warsztaty programistyczne J2ME 25 listopada 2010
Mobile Information Device Profile cz. 2
MIDP 2.1
poprawiona wersja 2.0
MIDP 3.0
LIBlety
uruchamianie wielu midletów
bezpieczeństwo
Marcin Stachniuk Wprowadzenie do J2ME 8/52
Studenkie Koło Naukowe ISA2
Warsztaty programistyczne J2ME 25 listopada 2010
Mobile Information Device Profile cz. 2
MIDP 2.1
poprawiona wersja 2.0
MIDP 3.0
LIBlety
uruchamianie wielu midletów
bezpieczeństwo
Marcin Stachniuk Wprowadzenie do J2ME 8/52
Studenkie Koło Naukowe ISA2
Warsztaty programistyczne J2ME 25 listopada 2010
Plan prezentacji
1 Wprowadzenie
2 Pierwszy kod
3 Jakie środowisko?
NetBeans
Eclipse
4 Uruchomienie aplikacji
5 Podsumowanie
Marcin Stachniuk Wprowadzenie do J2ME 9/52
Studenkie Koło Naukowe ISA2
Warsztaty programistyczne J2ME 25 listopada 2010
C++
Przykładowy program w C++:
1: #i n c l u d e <iostream >
2:
3: using namespace std ;
4:
5: i n t main ( i n t argc , char ∗∗ argv )
6: {
7: cout << ” H e l l o World” << endl ;
8: }
Marcin Stachniuk Wprowadzenie do J2ME 10/52
Studenkie Koło Naukowe ISA2
Warsztaty programistyczne J2ME 25 listopada 2010
Java SE
Przykładowy program w Javie SE:
1: p u b l i c c l a s s Main {
2: p u b l i c s t a t i c void main ( S t r i n g [ ] args ) {
3: System . out . p r i n t l n ( ” H e l l o World” ) ;
4: }
5: }
Marcin Stachniuk Wprowadzenie do J2ME 11/52
Studenkie Koło Naukowe ISA2
Warsztaty programistyczne J2ME 25 listopada 2010
Java ME
Przykładowy program w Javie ME:
1: // import p a k i e t u z a w i e r a j ą c e g o k l a s ę MIDlet
2: import ja v a x . m i c r o e d i t i o n . m i d l e t . ∗ ;
3:
4: // Klasa r o z s z e r z a j ą c a a b s t r a k c y j n ą k l a s ę MIDlet .
5: // Klasa która b ę d z i e jako p i e r w s za ” uruchamiana ”.
6: p u b l i c c l a s s MyMidlet extends MIDlet {
7: p u b l i c void startApp () {
8: }
9:
10: p u b l i c void pauseApp () {
11: }
12:
13: p u b l i c void destroyApp ( boolean u n c o n d i t i o n a l ) {
14: }
15: }
Marcin Stachniuk Wprowadzenie do J2ME 12/52
Studenkie Koło Naukowe ISA2
Warsztaty programistyczne J2ME 25 listopada 2010
Cykl życia aplikacji
http://developers.sun.com/mobility/midp/articles/fsm/
Marcin Stachniuk Wprowadzenie do J2ME 13/52
Studenkie Koło Naukowe ISA2
Warsztaty programistyczne J2ME 25 listopada 2010
Znaczenie nadpisanych metod
Klasa MIDlet:
konstruktor - wywoływany tylko raz podczas uruchamiania
aplikacji
startApp() - wywoływana przy uruchomieniu aplikacji
i podczas powrotu ze stanu Paused (np. po zakończeniu
rozmowy telefonicznej)
pauseApp() - wywoływana gdy telefon przechodzi w stan
Paused (np. podczas przyjścia sms’a)
destroyApp(bool unconditional) - wywoływana przed
zakończeniem aplikacji (np. podczas ”twardego”wyłączania
aplikacji czerwonym przyciskiem)
Metody destroyApp() i startApp() mogą rzucić wyjątek
MIDletStateChangeException, niezezwalając w ten
sposób na zmianę stanu.
Marcin Stachniuk Wprowadzenie do J2ME 14/52
Studenkie Koło Naukowe ISA2
Warsztaty programistyczne J2ME 25 listopada 2010
Pierwszy MIDlet
Listing 1: Pierwszty MIDlet
1: import ja v a x . m i c r o e d i t i o n . l c d u i . ∗ ;
2: import ja v a x . m i c r o e d i t i o n . m i d l e t . ∗ ;
3:
4: p u b l i c c l a s s Midlet extends MIDlet {
5: p u b l i c void startApp () {
6: // utworzenie TextBox ’ a
7: TextBox textBox = new TextBox (
8: ”Moj Pierwszy Midlet ” ,
9: ” H e l l o World ! ” , 20 , 0) ;
10:
11: // pobranie o b ie k tu w y ś w i e t l a c z a
12: D i s p l a y d i s p l a y = D i s p l a y . g e t D i s p l a y ( t h i s ) ;
13:
14: // u s t a w i e n i e w y ś w i e t l a n i a textBox ’ a na e k r a n i e
15: d i s p l a y . s e t C u r r e n t ( textBox ) ;
16: System . out . p r i n t l n ( ” H e l l o World ! ” ) ;
17: }
18:
Marcin Stachniuk Wprowadzenie do J2ME 15/52
Studenkie Koło Naukowe ISA2
Warsztaty programistyczne J2ME 25 listopada 2010
Pierwszy MIDlet
19: p u b l i c void pauseApp () {
20: }
21:
22: p u b l i c void destroyApp ( boolean u n c o n d i t i o n a l ) {
23: }
24: }
Marcin Stachniuk Wprowadzenie do J2ME 16/52
Studenkie Koło Naukowe ISA2
Warsztaty programistyczne J2ME 25 listopada 2010
Pierwszy MIDlet w działaniu
Marcin Stachniuk Wprowadzenie do J2ME 17/52
Studenkie Koło Naukowe ISA2
Warsztaty programistyczne J2ME 25 listopada 2010
Drugi MIDlet
Listing 2: Drugi MIDlet
1: import ja v a x . m i c r o e d i t i o n . l c d u i . ∗ ;
2: import ja v a x . m i c r o e d i t i o n . m i d l e t . ∗ ;
3:
4: // k l a s a dodatkowo implementuje CommandListener
5: p u b l i c c l a s s Midlet extends MIDlet implements ←
CommandListener {
6: p u b l i c void startApp () {
7: TextBox textBox = new TextBox (
8: ”Moj Pierwszy Midlet ” ,
9: ” H e l l o World ! ” , 20 , 0) ;
10:
11: // utworzenie komendy ” Koniec ”
12: Command exitCommand = new Command( ” Koniec ” , ←
Command . EXIT , 1) ;
13: // u s t a w i e n i e nasłuchiwacza komend
14: textBox . setCommandListener ( t h i s ) ;
15: // dodanie komendy do textBox ’ a
16: textBox . addCommand( exitCommand ) ;
Marcin Stachniuk Wprowadzenie do J2ME 18/52
Studenkie Koło Naukowe ISA2
Warsztaty programistyczne J2ME 25 listopada 2010
Drugi MIDlet
17: D i s p l a y d i s p l a y = D i s p l a y . g e t D i s p l a y ( t h i s ) ;
18: d i s p l a y . s e t C u r r e n t ( textBox ) ;
19: System . out . p r i n t l n ( ” H e l l o World ! ” ) ;
20: }
21:
22: p u b l i c void pauseApp () { }
23:
24: p u b l i c void destroyApp ( boolean u n c o n d i t i o n a l ) {
25: }
26:
27: // konieczna j e s t implementacja t e j metody gdy ←
implementujemy CommandListener
28: p u b l i c void commandAction (Command c , D i s p l a y a b l e d ) {
29: // sprawdzenie czy z d a r z e n i e pochodzi od komendy ←
typu Command . EXIT
30: i f ( c . getCommandType () == Command . EXIT) {
31: destroyApp ( f a l s e ) ;
32: n o t i f y D e s t r o y e d () ; // zakończenie a p l i k a c j i
33: }
34: }
35: }
Marcin Stachniuk Wprowadzenie do J2ME 19/52
Studenkie Koło Naukowe ISA2
Warsztaty programistyczne J2ME 25 listopada 2010
Drugi MIDlet w działaniu
Marcin Stachniuk Wprowadzenie do J2ME 20/52
Studenkie Koło Naukowe ISA2
Warsztaty programistyczne J2ME 25 listopada 2010
Plan prezentacji
1 Wprowadzenie
2 Pierwszy kod
3 Jakie środowisko?
NetBeans
Eclipse
4 Uruchomienie aplikacji
5 Podsumowanie
Marcin Stachniuk Wprowadzenie do J2ME 21/52
Studenkie Koło Naukowe ISA2
Warsztaty programistyczne J2ME 25 listopada 2010
Integrated Development Environment - IDE
Podstawowe środowisko:
Java Platform Micro Edition Software Development Kit 3.0
Najpopularniejsze środowiska:
NetBeans
Eclipse
IntelliJ IDEA
Vi / Vim ;)
Marcin Stachniuk Wprowadzenie do J2ME 22/52
Studenkie Koło Naukowe ISA2
Warsztaty programistyczne J2ME 25 listopada 2010
NetBeans obecnie 6.9.1
Marcin Stachniuk Wprowadzenie do J2ME 23/52
Studenkie Koło Naukowe ISA2
Warsztaty programistyczne J2ME 25 listopada 2010
NetBeans download
Marcin Stachniuk Wprowadzenie do J2ME 24/52
Studenkie Koło Naukowe ISA2
Warsztaty programistyczne J2ME 25 listopada 2010
NetBeans Nowy Projekt
Warto wybrać te zawierające już Java ME. Nie trzeba będzie
instalować SDK.
Marcin Stachniuk Wprowadzenie do J2ME 25/52
Studenkie Koło Naukowe ISA2
Warsztaty programistyczne J2ME 25 listopada 2010
NetBeans Nazwa Projektu
Marcin Stachniuk Wprowadzenie do J2ME 26/52
Studenkie Koło Naukowe ISA2
Warsztaty programistyczne J2ME 25 listopada 2010
NetBeans Wybranie Platformy
Marcin Stachniuk Wprowadzenie do J2ME 27/52
Studenkie Koło Naukowe ISA2
Warsztaty programistyczne J2ME 25 listopada 2010
NetBeans Finish
Marcin Stachniuk Wprowadzenie do J2ME 28/52
Studenkie Koło Naukowe ISA2
Warsztaty programistyczne J2ME 25 listopada 2010
NetBeans Utworzony Midlet
Marcin Stachniuk Wprowadzenie do J2ME 29/52
Studenkie Koło Naukowe ISA2
Warsztaty programistyczne J2ME 25 listopada 2010
NetBeans Uruchomienie MIDletu
Marcin Stachniuk Wprowadzenie do J2ME 30/52
Studenkie Koło Naukowe ISA2
Warsztaty programistyczne J2ME 25 listopada 2010
Eclipse
Marcin Stachniuk Wprowadzenie do J2ME 31/52
Studenkie Koło Naukowe ISA2
Warsztaty programistyczne J2ME 25 listopada 2010
Eclipse download
Marcin Stachniuk Wprowadzenie do J2ME 32/52
Studenkie Koło Naukowe ISA2
Warsztaty programistyczne J2ME 25 listopada 2010
Eclipse Nowy Projekt
Marcin Stachniuk Wprowadzenie do J2ME 33/52
Studenkie Koło Naukowe ISA2
Warsztaty programistyczne J2ME 25 listopada 2010
Eclipse Nazwa Projektu
Marcin Stachniuk Wprowadzenie do J2ME 34/52
Studenkie Koło Naukowe ISA2
Warsztaty programistyczne J2ME 25 listopada 2010
Eclipse Właściwości Projektu
Marcin Stachniuk Wprowadzenie do J2ME 35/52
Studenkie Koło Naukowe ISA2
Warsztaty programistyczne J2ME 25 listopada 2010
Eclipse Ustawienia Projektu
Marcin Stachniuk Wprowadzenie do J2ME 36/52
Studenkie Koło Naukowe ISA2
Warsztaty programistyczne J2ME 25 listopada 2010
Eclipse Dodanie Nowego Midletu
Marcin Stachniuk Wprowadzenie do J2ME 37/52
Studenkie Koło Naukowe ISA2
Warsztaty programistyczne J2ME 25 listopada 2010
Eclipse Nazwa Nowego Midletu
Marcin Stachniuk Wprowadzenie do J2ME 38/52
Studenkie Koło Naukowe ISA2
Warsztaty programistyczne J2ME 25 listopada 2010
Eclipse Tworzenie Midletu koniec
Marcin Stachniuk Wprowadzenie do J2ME 39/52
Studenkie Koło Naukowe ISA2
Warsztaty programistyczne J2ME 25 listopada 2010
Eclipse Utworzony Midlet
Marcin Stachniuk Wprowadzenie do J2ME 40/52
Studenkie Koło Naukowe ISA2
Warsztaty programistyczne J2ME 25 listopada 2010
Eclipse Uruchomienie Midletu
Marcin Stachniuk Wprowadzenie do J2ME 41/52
Studenkie Koło Naukowe ISA2
Warsztaty programistyczne J2ME 25 listopada 2010
Plan prezentacji
1 Wprowadzenie
2 Pierwszy kod
3 Jakie środowisko?
NetBeans
Eclipse
4 Uruchomienie aplikacji
5 Podsumowanie
Marcin Stachniuk Wprowadzenie do J2ME 42/52
Studenkie Koło Naukowe ISA2
Warsztaty programistyczne J2ME 25 listopada 2010
JAD i JAR
Marcin Stachniuk Wprowadzenie do J2ME 43/52
Studenkie Koło Naukowe ISA2
Warsztaty programistyczne J2ME 25 listopada 2010
Przykładowa Zawartość JAD
MIDlet-1: Midlet, , Midlet
MIDlet-Jar-Size: 1035
MIDlet-Jar-URL: MobileApplication1.jar
MIDlet-Name: MobileApplication1
MIDlet-Vendor: Vendor
MIDlet-Version: 1.0
MicroEdition-Configuration: CLDC-1.1
MicroEdition-Profile: MIDP-2.0
Marcin Stachniuk Wprowadzenie do J2ME 44/52
Studenkie Koło Naukowe ISA2
Warsztaty programistyczne J2ME 25 listopada 2010
Zawartość JAR
Marcin Stachniuk Wprowadzenie do J2ME 45/52
Studenkie Koło Naukowe ISA2
Warsztaty programistyczne J2ME 25 listopada 2010
Zawartość Manifestu (plik MANIFEST.MF) z pliku JAR
MIDlet-1: Midlet, , Midlet
MIDlet-Jar-URL: MobileApplication1.jar
MIDlet-Name: MobileApplication1
MIDlet-Vendor: Vendor
MIDlet-Version: 1.0
MicroEdition-Configuration: CLDC-1.1
MicroEdition-Profile: MIDP-2.0
Brak atrybutu MIDlet-Jar-Size!
Marcin Stachniuk Wprowadzenie do J2ME 46/52
Studenkie Koło Naukowe ISA2
Warsztaty programistyczne J2ME 25 listopada 2010
Instalacja Aplikacji
Instalacja Aplikacji j2me na telefonie z internetu:
Ściągnięcie pliku JAD
Sprawdzenie pliku JAD (wielkość MIDletu, wersje MIDP,
CLDC)
Ściągnięcie pliku JAR
Sprawdzenie rozmiaru JAR’a (czy zgodny z wpisem w pliku
JAD)
Porównanie wpisów w pliku JAD i MANIFEST.MF
Instalacja
Marcin Stachniuk Wprowadzenie do J2ME 47/52
Studenkie Koło Naukowe ISA2
Warsztaty programistyczne J2ME 25 listopada 2010
Zawartość JAD - zmodyfikowana
MIDlet-1: Midlet, , Midlet
MIDlet-Jar-Size: 1035
MIDlet-Jar-URL: http://myserwer.com/MobileApplication1.jar
MIDlet-Name: MobileApplication1
MIDlet-Vendor: Vendor
MIDlet-Version: 1.0
MicroEdition-Configuration: CLDC-1.1
MicroEdition-Profile: MIDP-2.0
Marcin Stachniuk Wprowadzenie do J2ME 48/52
Studenkie Koło Naukowe ISA2
Warsztaty programistyczne J2ME 25 listopada 2010
Plan prezentacji
1 Wprowadzenie
2 Pierwszy kod
3 Jakie środowisko?
NetBeans
Eclipse
4 Uruchomienie aplikacji
5 Podsumowanie
Marcin Stachniuk Wprowadzenie do J2ME 49/52
Studenkie Koło Naukowe ISA2
Warsztaty programistyczne J2ME 25 listopada 2010
Czego się dzisiaj nauczyliśmy?
Konfiguracje CLDC 1.0 i 1.1
Profile MIDP 1.0 2.0 2.1 3.0
Budowa programu, cykl życia aplikacji
Środowiska IDE
Uruchomienie Aplikacji
Marcin Stachniuk Wprowadzenie do J2ME 50/52
Studenkie Koło Naukowe ISA2
Warsztaty programistyczne J2ME 25 listopada 2010
Pytania
?
Marcin Stachniuk Wprowadzenie do J2ME 51/52
Studenkie Koło Naukowe ISA2
Warsztaty programistyczne J2ME 25 listopada 2010
Więcej informacji
Kontakt z autorem:
mstachniuk@gmail.com
Strona koła naukowego ISA2
http://autonom.ict.pwr.wroc.pl/
Nowa (2010) strona warsztatów:
http://autonom.iiar.pwr.wroc.pl/mobile/
Stara (2009) strona warsztatów:
http://autonom.ict.pwr.wroc.pl/∼mstachniuk
Adres tego dokumentu:
http://autonom.iiar.pwr.wroc.pl/mobile/2010/02/02-podstawy-2010.11.25.pdf
NetBeans
http://www.netbeans.org/
Eclipse
http://www.eclipse.org/
Java ME Platform Overview
http://java.sun.com/javame/technology/index.jsp
Managing the MIDlet Life-Cycle with a Finite State Machine
http://developers.sun.com/mobility/midp/articles/fsm/
Java Platform Micro Edition Software Development Kit 3.0
http://java.sun.com/javame/downloads/sdk30.jsp
Marcin Stachniuk Wprowadzenie do J2ME 52/52

More Related Content

Similar to Wprowadzenie do J2ME

Poznaj lepiej swoje srodowisko programistyczne i zwieksz swoja produktywnosc ...
Poznaj lepiej swoje srodowisko programistyczne i zwieksz swoja produktywnosc ...Poznaj lepiej swoje srodowisko programistyczne i zwieksz swoja produktywnosc ...
Poznaj lepiej swoje srodowisko programistyczne i zwieksz swoja produktywnosc ...MarcinStachniuk
 
Programowanie Komponentowe: #2 Metody opisu komponentów
Programowanie Komponentowe: #2 Metody opisu komponentówProgramowanie Komponentowe: #2 Metody opisu komponentów
Programowanie Komponentowe: #2 Metody opisu komponentówMikołaj Olszewski
 
Nowości w Javie 8 okiem programisty
Nowości w Javie 8 okiem programistyNowości w Javie 8 okiem programisty
Nowości w Javie 8 okiem programistyMarcinStachniuk
 
Programowanie Komponentowe: #C Wprowadzenie do OSGi
Programowanie Komponentowe: #C Wprowadzenie do OSGiProgramowanie Komponentowe: #C Wprowadzenie do OSGi
Programowanie Komponentowe: #C Wprowadzenie do OSGiMikołaj Olszewski
 

Similar to Wprowadzenie do J2ME (7)

Poznaj lepiej swoje srodowisko programistyczne i zwieksz swoja produktywnosc ...
Poznaj lepiej swoje srodowisko programistyczne i zwieksz swoja produktywnosc ...Poznaj lepiej swoje srodowisko programistyczne i zwieksz swoja produktywnosc ...
Poznaj lepiej swoje srodowisko programistyczne i zwieksz swoja produktywnosc ...
 
Programowanie Komponentowe: #2 Metody opisu komponentów
Programowanie Komponentowe: #2 Metody opisu komponentówProgramowanie Komponentowe: #2 Metody opisu komponentów
Programowanie Komponentowe: #2 Metody opisu komponentów
 
Nowości w Javie 8 okiem programisty
Nowości w Javie 8 okiem programistyNowości w Javie 8 okiem programisty
Nowości w Javie 8 okiem programisty
 
Programowanie Komponentowe: #C Wprowadzenie do OSGi
Programowanie Komponentowe: #C Wprowadzenie do OSGiProgramowanie Komponentowe: #C Wprowadzenie do OSGi
Programowanie Komponentowe: #C Wprowadzenie do OSGi
 
DSL - DYI
DSL - DYIDSL - DYI
DSL - DYI
 
Jest Git!
Jest Git!Jest Git!
Jest Git!
 
Systemy Operacyjne - Wykład1
Systemy Operacyjne - Wykład1Systemy Operacyjne - Wykład1
Systemy Operacyjne - Wykład1
 

More from MarcinStachniuk

GraphQL - Piękne API w Twojej Aplikacji - KrakowGraphAcademy
GraphQL - Piękne API w Twojej Aplikacji - KrakowGraphAcademyGraphQL - Piękne API w Twojej Aplikacji - KrakowGraphAcademy
GraphQL - Piękne API w Twojej Aplikacji - KrakowGraphAcademyMarcinStachniuk
 
Wroclaw GraphQL - GraphQL in Java
Wroclaw GraphQL - GraphQL in JavaWroclaw GraphQL - GraphQL in Java
Wroclaw GraphQL - GraphQL in JavaMarcinStachniuk
 
[DevCrowd] GraphQL - gdy API RESTowe to za mało
[DevCrowd] GraphQL - gdy API RESTowe to za mało[DevCrowd] GraphQL - gdy API RESTowe to za mało
[DevCrowd] GraphQL - gdy API RESTowe to za małoMarcinStachniuk
 
GraphQL - gdy API RESTowe to za mało
GraphQL - gdy API RESTowe to za małoGraphQL - gdy API RESTowe to za mało
GraphQL - gdy API RESTowe to za małoMarcinStachniuk
 
BruJUG Brussels GraphQL when RESR API is to less - lessons learned
BruJUG Brussels GraphQL when RESR API is to less - lessons learnedBruJUG Brussels GraphQL when RESR API is to less - lessons learned
BruJUG Brussels GraphQL when RESR API is to less - lessons learnedMarcinStachniuk
 
[WroclawJUG] Continuous Delivery in OSS using Shipkit
[WroclawJUG] Continuous Delivery in OSS using Shipkit[WroclawJUG] Continuous Delivery in OSS using Shipkit
[WroclawJUG] Continuous Delivery in OSS using ShipkitMarcinStachniuk
 
Continuous Delivery in OSS using Shipkit.org
Continuous Delivery in OSS using Shipkit.orgContinuous Delivery in OSS using Shipkit.org
Continuous Delivery in OSS using Shipkit.orgMarcinStachniuk
 
GraphQL - when REST API is to less - lessons learned
GraphQL - when REST API is to less - lessons learnedGraphQL - when REST API is to less - lessons learned
GraphQL - when REST API is to less - lessons learnedMarcinStachniuk
 
GraphQL - when REST API is to less - lessons learned
GraphQL - when REST API is to less - lessons learnedGraphQL - when REST API is to less - lessons learned
GraphQL - when REST API is to less - lessons learnedMarcinStachniuk
 
GraphQL - when REST API is to less - lessons learned
GraphQL - when REST API is to less - lessons learnedGraphQL - when REST API is to less - lessons learned
GraphQL - when REST API is to less - lessons learnedMarcinStachniuk
 
GraphQL - when REST API is to less - lessons learned
GraphQL - when REST API is to less - lessons learnedGraphQL - when REST API is to less - lessons learned
GraphQL - when REST API is to less - lessons learnedMarcinStachniuk
 
GraphQL - when REST API is to less - lessons learned
GraphQL - when REST API is to less - lessons learnedGraphQL - when REST API is to less - lessons learned
GraphQL - when REST API is to less - lessons learnedMarcinStachniuk
 
GraphQL - when REST API is to less - lessons learned
GraphQL - when REST API is to less - lessons learnedGraphQL - when REST API is to less - lessons learned
GraphQL - when REST API is to less - lessons learnedMarcinStachniuk
 
GraphQL - when REST API is not enough - lessons learned
GraphQL - when REST API is not enough - lessons learnedGraphQL - when REST API is not enough - lessons learned
GraphQL - when REST API is not enough - lessons learnedMarcinStachniuk
 
Java Web Start – jak żyć z tą dziwną technologią
Java Web Start – jak żyć z tą dziwną technologiąJava Web Start – jak żyć z tą dziwną technologią
Java Web Start – jak żyć z tą dziwną technologiąMarcinStachniuk
 
Zarządzanie zmianami w schemacie relacyjnych baz danych
Zarządzanie zmianami w schemacie relacyjnych baz danychZarządzanie zmianami w schemacie relacyjnych baz danych
Zarządzanie zmianami w schemacie relacyjnych baz danychMarcinStachniuk
 
Inicjatywa NoSQL na przykładzie db4o
Inicjatywa NoSQL na przykładzie db4oInicjatywa NoSQL na przykładzie db4o
Inicjatywa NoSQL na przykładzie db4oMarcinStachniuk
 
Automatic mechanism data migration between relational and object database
Automatic mechanism data migration between relational and object databaseAutomatic mechanism data migration between relational and object database
Automatic mechanism data migration between relational and object databaseMarcinStachniuk
 
Zastosowanie obiektowych baz danych na przykładzie db4o
Zastosowanie obiektowych baz danych na przykładzie db4oZastosowanie obiektowych baz danych na przykładzie db4o
Zastosowanie obiektowych baz danych na przykładzie db4oMarcinStachniuk
 
Continuous Delivery w projekcie Open Source - Marcin Stachniuk - DevCrowd 2017
Continuous Delivery w projekcie Open Source - Marcin Stachniuk - DevCrowd 2017Continuous Delivery w projekcie Open Source - Marcin Stachniuk - DevCrowd 2017
Continuous Delivery w projekcie Open Source - Marcin Stachniuk - DevCrowd 2017MarcinStachniuk
 

More from MarcinStachniuk (20)

GraphQL - Piękne API w Twojej Aplikacji - KrakowGraphAcademy
GraphQL - Piękne API w Twojej Aplikacji - KrakowGraphAcademyGraphQL - Piękne API w Twojej Aplikacji - KrakowGraphAcademy
GraphQL - Piękne API w Twojej Aplikacji - KrakowGraphAcademy
 
Wroclaw GraphQL - GraphQL in Java
Wroclaw GraphQL - GraphQL in JavaWroclaw GraphQL - GraphQL in Java
Wroclaw GraphQL - GraphQL in Java
 
[DevCrowd] GraphQL - gdy API RESTowe to za mało
[DevCrowd] GraphQL - gdy API RESTowe to za mało[DevCrowd] GraphQL - gdy API RESTowe to za mało
[DevCrowd] GraphQL - gdy API RESTowe to za mało
 
GraphQL - gdy API RESTowe to za mało
GraphQL - gdy API RESTowe to za małoGraphQL - gdy API RESTowe to za mało
GraphQL - gdy API RESTowe to za mało
 
BruJUG Brussels GraphQL when RESR API is to less - lessons learned
BruJUG Brussels GraphQL when RESR API is to less - lessons learnedBruJUG Brussels GraphQL when RESR API is to less - lessons learned
BruJUG Brussels GraphQL when RESR API is to less - lessons learned
 
[WroclawJUG] Continuous Delivery in OSS using Shipkit
[WroclawJUG] Continuous Delivery in OSS using Shipkit[WroclawJUG] Continuous Delivery in OSS using Shipkit
[WroclawJUG] Continuous Delivery in OSS using Shipkit
 
Continuous Delivery in OSS using Shipkit.org
Continuous Delivery in OSS using Shipkit.orgContinuous Delivery in OSS using Shipkit.org
Continuous Delivery in OSS using Shipkit.org
 
GraphQL - when REST API is to less - lessons learned
GraphQL - when REST API is to less - lessons learnedGraphQL - when REST API is to less - lessons learned
GraphQL - when REST API is to less - lessons learned
 
GraphQL - when REST API is to less - lessons learned
GraphQL - when REST API is to less - lessons learnedGraphQL - when REST API is to less - lessons learned
GraphQL - when REST API is to less - lessons learned
 
GraphQL - when REST API is to less - lessons learned
GraphQL - when REST API is to less - lessons learnedGraphQL - when REST API is to less - lessons learned
GraphQL - when REST API is to less - lessons learned
 
GraphQL - when REST API is to less - lessons learned
GraphQL - when REST API is to less - lessons learnedGraphQL - when REST API is to less - lessons learned
GraphQL - when REST API is to less - lessons learned
 
GraphQL - when REST API is to less - lessons learned
GraphQL - when REST API is to less - lessons learnedGraphQL - when REST API is to less - lessons learned
GraphQL - when REST API is to less - lessons learned
 
GraphQL - when REST API is to less - lessons learned
GraphQL - when REST API is to less - lessons learnedGraphQL - when REST API is to less - lessons learned
GraphQL - when REST API is to less - lessons learned
 
GraphQL - when REST API is not enough - lessons learned
GraphQL - when REST API is not enough - lessons learnedGraphQL - when REST API is not enough - lessons learned
GraphQL - when REST API is not enough - lessons learned
 
Java Web Start – jak żyć z tą dziwną technologią
Java Web Start – jak żyć z tą dziwną technologiąJava Web Start – jak żyć z tą dziwną technologią
Java Web Start – jak żyć z tą dziwną technologią
 
Zarządzanie zmianami w schemacie relacyjnych baz danych
Zarządzanie zmianami w schemacie relacyjnych baz danychZarządzanie zmianami w schemacie relacyjnych baz danych
Zarządzanie zmianami w schemacie relacyjnych baz danych
 
Inicjatywa NoSQL na przykładzie db4o
Inicjatywa NoSQL na przykładzie db4oInicjatywa NoSQL na przykładzie db4o
Inicjatywa NoSQL na przykładzie db4o
 
Automatic mechanism data migration between relational and object database
Automatic mechanism data migration between relational and object databaseAutomatic mechanism data migration between relational and object database
Automatic mechanism data migration between relational and object database
 
Zastosowanie obiektowych baz danych na przykładzie db4o
Zastosowanie obiektowych baz danych na przykładzie db4oZastosowanie obiektowych baz danych na przykładzie db4o
Zastosowanie obiektowych baz danych na przykładzie db4o
 
Continuous Delivery w projekcie Open Source - Marcin Stachniuk - DevCrowd 2017
Continuous Delivery w projekcie Open Source - Marcin Stachniuk - DevCrowd 2017Continuous Delivery w projekcie Open Source - Marcin Stachniuk - DevCrowd 2017
Continuous Delivery w projekcie Open Source - Marcin Stachniuk - DevCrowd 2017
 

Wprowadzenie do J2ME

  • 1. Studenkie Koło Naukowe ISA2 Warsztaty programistyczne J2ME 25 listopada 2010 Wprowadzenie do J2ME Marcin Stachniuk mstachniuk@gmail.com Politechnika Wrocławska Wydział Elektroniki Studenckie Koło Naukowe Informatyki Systemów Autonomicznych i Adaptacyjnych ISA2 25 listopada 2010 Marcin Stachniuk Wprowadzenie do J2ME 1/52
  • 2. Studenkie Koło Naukowe ISA2 Warsztaty programistyczne J2ME 25 listopada 2010 Plan prezentacji 1 Wprowadzenie 2 Pierwszy kod 3 Jakie środowisko? NetBeans Eclipse 4 Uruchomienie aplikacji 5 Podsumowanie Marcin Stachniuk Wprowadzenie do J2ME 2/52
  • 3. Studenkie Koło Naukowe ISA2 Warsztaty programistyczne J2ME 25 listopada 2010 Plan prezentacji 1 Wprowadzenie 2 Pierwszy kod 3 Jakie środowisko? NetBeans Eclipse 4 Uruchomienie aplikacji 5 Podsumowanie Marcin Stachniuk Wprowadzenie do J2ME 3/52
  • 4. Studenkie Koło Naukowe ISA2 Warsztaty programistyczne J2ME 25 listopada 2010 The Java Platform http://java.sun.com/javame/technology/index.jsp Marcin Stachniuk Wprowadzenie do J2ME 4/52
  • 5. Studenkie Koło Naukowe ISA2 Warsztaty programistyczne J2ME 25 listopada 2010 The Connected Limited Device Configuration http://java.sun.com/javame/technology/index.jsp Marcin Stachniuk Wprowadzenie do J2ME 5/52
  • 6. Studenkie Koło Naukowe ISA2 Warsztaty programistyczne J2ME 25 listopada 2010 CLDC 1.0 vs CLDC 1.1 CLDC 1.0 ”odchudzona” java 1.3 pakiety: java.io, java.lang, java.util brak obsługi liczb zmiennoprzecinkowych CLDC 1.1 (JSR-139) obsługa liczb zmiennoprzecinkowych klasy Double i Float rozszerzona klasa Thread Marcin Stachniuk Wprowadzenie do J2ME 6/52
  • 7. Studenkie Koło Naukowe ISA2 Warsztaty programistyczne J2ME 25 listopada 2010 CLDC 1.0 vs CLDC 1.1 CLDC 1.0 ”odchudzona” java 1.3 pakiety: java.io, java.lang, java.util brak obsługi liczb zmiennoprzecinkowych CLDC 1.1 (JSR-139) obsługa liczb zmiennoprzecinkowych klasy Double i Float rozszerzona klasa Thread Marcin Stachniuk Wprowadzenie do J2ME 6/52
  • 8. Studenkie Koło Naukowe ISA2 Warsztaty programistyczne J2ME 25 listopada 2010 Mobile Information Device Profile cz. 1 MIDP 1.0 http GUI RMS Record Management Store MIDP 2.0 https Mobile Media API (MMAPI) The Game API (Sprite, TiledLayer) Obrazy RGB Full Screen Mode Marcin Stachniuk Wprowadzenie do J2ME 7/52
  • 9. Studenkie Koło Naukowe ISA2 Warsztaty programistyczne J2ME 25 listopada 2010 Mobile Information Device Profile cz. 1 MIDP 1.0 http GUI RMS Record Management Store MIDP 2.0 https Mobile Media API (MMAPI) The Game API (Sprite, TiledLayer) Obrazy RGB Full Screen Mode Marcin Stachniuk Wprowadzenie do J2ME 7/52
  • 10. Studenkie Koło Naukowe ISA2 Warsztaty programistyczne J2ME 25 listopada 2010 Mobile Information Device Profile cz. 2 MIDP 2.1 poprawiona wersja 2.0 MIDP 3.0 LIBlety uruchamianie wielu midletów bezpieczeństwo Marcin Stachniuk Wprowadzenie do J2ME 8/52
  • 11. Studenkie Koło Naukowe ISA2 Warsztaty programistyczne J2ME 25 listopada 2010 Mobile Information Device Profile cz. 2 MIDP 2.1 poprawiona wersja 2.0 MIDP 3.0 LIBlety uruchamianie wielu midletów bezpieczeństwo Marcin Stachniuk Wprowadzenie do J2ME 8/52
  • 12. Studenkie Koło Naukowe ISA2 Warsztaty programistyczne J2ME 25 listopada 2010 Plan prezentacji 1 Wprowadzenie 2 Pierwszy kod 3 Jakie środowisko? NetBeans Eclipse 4 Uruchomienie aplikacji 5 Podsumowanie Marcin Stachniuk Wprowadzenie do J2ME 9/52
  • 13. Studenkie Koło Naukowe ISA2 Warsztaty programistyczne J2ME 25 listopada 2010 C++ Przykładowy program w C++: 1: #i n c l u d e <iostream > 2: 3: using namespace std ; 4: 5: i n t main ( i n t argc , char ∗∗ argv ) 6: { 7: cout << ” H e l l o World” << endl ; 8: } Marcin Stachniuk Wprowadzenie do J2ME 10/52
  • 14. Studenkie Koło Naukowe ISA2 Warsztaty programistyczne J2ME 25 listopada 2010 Java SE Przykładowy program w Javie SE: 1: p u b l i c c l a s s Main { 2: p u b l i c s t a t i c void main ( S t r i n g [ ] args ) { 3: System . out . p r i n t l n ( ” H e l l o World” ) ; 4: } 5: } Marcin Stachniuk Wprowadzenie do J2ME 11/52
  • 15. Studenkie Koło Naukowe ISA2 Warsztaty programistyczne J2ME 25 listopada 2010 Java ME Przykładowy program w Javie ME: 1: // import p a k i e t u z a w i e r a j ą c e g o k l a s ę MIDlet 2: import ja v a x . m i c r o e d i t i o n . m i d l e t . ∗ ; 3: 4: // Klasa r o z s z e r z a j ą c a a b s t r a k c y j n ą k l a s ę MIDlet . 5: // Klasa która b ę d z i e jako p i e r w s za ” uruchamiana ”. 6: p u b l i c c l a s s MyMidlet extends MIDlet { 7: p u b l i c void startApp () { 8: } 9: 10: p u b l i c void pauseApp () { 11: } 12: 13: p u b l i c void destroyApp ( boolean u n c o n d i t i o n a l ) { 14: } 15: } Marcin Stachniuk Wprowadzenie do J2ME 12/52
  • 16. Studenkie Koło Naukowe ISA2 Warsztaty programistyczne J2ME 25 listopada 2010 Cykl życia aplikacji http://developers.sun.com/mobility/midp/articles/fsm/ Marcin Stachniuk Wprowadzenie do J2ME 13/52
  • 17. Studenkie Koło Naukowe ISA2 Warsztaty programistyczne J2ME 25 listopada 2010 Znaczenie nadpisanych metod Klasa MIDlet: konstruktor - wywoływany tylko raz podczas uruchamiania aplikacji startApp() - wywoływana przy uruchomieniu aplikacji i podczas powrotu ze stanu Paused (np. po zakończeniu rozmowy telefonicznej) pauseApp() - wywoływana gdy telefon przechodzi w stan Paused (np. podczas przyjścia sms’a) destroyApp(bool unconditional) - wywoływana przed zakończeniem aplikacji (np. podczas ”twardego”wyłączania aplikacji czerwonym przyciskiem) Metody destroyApp() i startApp() mogą rzucić wyjątek MIDletStateChangeException, niezezwalając w ten sposób na zmianę stanu. Marcin Stachniuk Wprowadzenie do J2ME 14/52
  • 18. Studenkie Koło Naukowe ISA2 Warsztaty programistyczne J2ME 25 listopada 2010 Pierwszy MIDlet Listing 1: Pierwszty MIDlet 1: import ja v a x . m i c r o e d i t i o n . l c d u i . ∗ ; 2: import ja v a x . m i c r o e d i t i o n . m i d l e t . ∗ ; 3: 4: p u b l i c c l a s s Midlet extends MIDlet { 5: p u b l i c void startApp () { 6: // utworzenie TextBox ’ a 7: TextBox textBox = new TextBox ( 8: ”Moj Pierwszy Midlet ” , 9: ” H e l l o World ! ” , 20 , 0) ; 10: 11: // pobranie o b ie k tu w y ś w i e t l a c z a 12: D i s p l a y d i s p l a y = D i s p l a y . g e t D i s p l a y ( t h i s ) ; 13: 14: // u s t a w i e n i e w y ś w i e t l a n i a textBox ’ a na e k r a n i e 15: d i s p l a y . s e t C u r r e n t ( textBox ) ; 16: System . out . p r i n t l n ( ” H e l l o World ! ” ) ; 17: } 18: Marcin Stachniuk Wprowadzenie do J2ME 15/52
  • 19. Studenkie Koło Naukowe ISA2 Warsztaty programistyczne J2ME 25 listopada 2010 Pierwszy MIDlet 19: p u b l i c void pauseApp () { 20: } 21: 22: p u b l i c void destroyApp ( boolean u n c o n d i t i o n a l ) { 23: } 24: } Marcin Stachniuk Wprowadzenie do J2ME 16/52
  • 20. Studenkie Koło Naukowe ISA2 Warsztaty programistyczne J2ME 25 listopada 2010 Pierwszy MIDlet w działaniu Marcin Stachniuk Wprowadzenie do J2ME 17/52
  • 21. Studenkie Koło Naukowe ISA2 Warsztaty programistyczne J2ME 25 listopada 2010 Drugi MIDlet Listing 2: Drugi MIDlet 1: import ja v a x . m i c r o e d i t i o n . l c d u i . ∗ ; 2: import ja v a x . m i c r o e d i t i o n . m i d l e t . ∗ ; 3: 4: // k l a s a dodatkowo implementuje CommandListener 5: p u b l i c c l a s s Midlet extends MIDlet implements ← CommandListener { 6: p u b l i c void startApp () { 7: TextBox textBox = new TextBox ( 8: ”Moj Pierwszy Midlet ” , 9: ” H e l l o World ! ” , 20 , 0) ; 10: 11: // utworzenie komendy ” Koniec ” 12: Command exitCommand = new Command( ” Koniec ” , ← Command . EXIT , 1) ; 13: // u s t a w i e n i e nasłuchiwacza komend 14: textBox . setCommandListener ( t h i s ) ; 15: // dodanie komendy do textBox ’ a 16: textBox . addCommand( exitCommand ) ; Marcin Stachniuk Wprowadzenie do J2ME 18/52
  • 22. Studenkie Koło Naukowe ISA2 Warsztaty programistyczne J2ME 25 listopada 2010 Drugi MIDlet 17: D i s p l a y d i s p l a y = D i s p l a y . g e t D i s p l a y ( t h i s ) ; 18: d i s p l a y . s e t C u r r e n t ( textBox ) ; 19: System . out . p r i n t l n ( ” H e l l o World ! ” ) ; 20: } 21: 22: p u b l i c void pauseApp () { } 23: 24: p u b l i c void destroyApp ( boolean u n c o n d i t i o n a l ) { 25: } 26: 27: // konieczna j e s t implementacja t e j metody gdy ← implementujemy CommandListener 28: p u b l i c void commandAction (Command c , D i s p l a y a b l e d ) { 29: // sprawdzenie czy z d a r z e n i e pochodzi od komendy ← typu Command . EXIT 30: i f ( c . getCommandType () == Command . EXIT) { 31: destroyApp ( f a l s e ) ; 32: n o t i f y D e s t r o y e d () ; // zakończenie a p l i k a c j i 33: } 34: } 35: } Marcin Stachniuk Wprowadzenie do J2ME 19/52
  • 23. Studenkie Koło Naukowe ISA2 Warsztaty programistyczne J2ME 25 listopada 2010 Drugi MIDlet w działaniu Marcin Stachniuk Wprowadzenie do J2ME 20/52
  • 24. Studenkie Koło Naukowe ISA2 Warsztaty programistyczne J2ME 25 listopada 2010 Plan prezentacji 1 Wprowadzenie 2 Pierwszy kod 3 Jakie środowisko? NetBeans Eclipse 4 Uruchomienie aplikacji 5 Podsumowanie Marcin Stachniuk Wprowadzenie do J2ME 21/52
  • 25. Studenkie Koło Naukowe ISA2 Warsztaty programistyczne J2ME 25 listopada 2010 Integrated Development Environment - IDE Podstawowe środowisko: Java Platform Micro Edition Software Development Kit 3.0 Najpopularniejsze środowiska: NetBeans Eclipse IntelliJ IDEA Vi / Vim ;) Marcin Stachniuk Wprowadzenie do J2ME 22/52
  • 26. Studenkie Koło Naukowe ISA2 Warsztaty programistyczne J2ME 25 listopada 2010 NetBeans obecnie 6.9.1 Marcin Stachniuk Wprowadzenie do J2ME 23/52
  • 27. Studenkie Koło Naukowe ISA2 Warsztaty programistyczne J2ME 25 listopada 2010 NetBeans download Marcin Stachniuk Wprowadzenie do J2ME 24/52
  • 28. Studenkie Koło Naukowe ISA2 Warsztaty programistyczne J2ME 25 listopada 2010 NetBeans Nowy Projekt Warto wybrać te zawierające już Java ME. Nie trzeba będzie instalować SDK. Marcin Stachniuk Wprowadzenie do J2ME 25/52
  • 29. Studenkie Koło Naukowe ISA2 Warsztaty programistyczne J2ME 25 listopada 2010 NetBeans Nazwa Projektu Marcin Stachniuk Wprowadzenie do J2ME 26/52
  • 30. Studenkie Koło Naukowe ISA2 Warsztaty programistyczne J2ME 25 listopada 2010 NetBeans Wybranie Platformy Marcin Stachniuk Wprowadzenie do J2ME 27/52
  • 31. Studenkie Koło Naukowe ISA2 Warsztaty programistyczne J2ME 25 listopada 2010 NetBeans Finish Marcin Stachniuk Wprowadzenie do J2ME 28/52
  • 32. Studenkie Koło Naukowe ISA2 Warsztaty programistyczne J2ME 25 listopada 2010 NetBeans Utworzony Midlet Marcin Stachniuk Wprowadzenie do J2ME 29/52
  • 33. Studenkie Koło Naukowe ISA2 Warsztaty programistyczne J2ME 25 listopada 2010 NetBeans Uruchomienie MIDletu Marcin Stachniuk Wprowadzenie do J2ME 30/52
  • 34. Studenkie Koło Naukowe ISA2 Warsztaty programistyczne J2ME 25 listopada 2010 Eclipse Marcin Stachniuk Wprowadzenie do J2ME 31/52
  • 35. Studenkie Koło Naukowe ISA2 Warsztaty programistyczne J2ME 25 listopada 2010 Eclipse download Marcin Stachniuk Wprowadzenie do J2ME 32/52
  • 36. Studenkie Koło Naukowe ISA2 Warsztaty programistyczne J2ME 25 listopada 2010 Eclipse Nowy Projekt Marcin Stachniuk Wprowadzenie do J2ME 33/52
  • 37. Studenkie Koło Naukowe ISA2 Warsztaty programistyczne J2ME 25 listopada 2010 Eclipse Nazwa Projektu Marcin Stachniuk Wprowadzenie do J2ME 34/52
  • 38. Studenkie Koło Naukowe ISA2 Warsztaty programistyczne J2ME 25 listopada 2010 Eclipse Właściwości Projektu Marcin Stachniuk Wprowadzenie do J2ME 35/52
  • 39. Studenkie Koło Naukowe ISA2 Warsztaty programistyczne J2ME 25 listopada 2010 Eclipse Ustawienia Projektu Marcin Stachniuk Wprowadzenie do J2ME 36/52
  • 40. Studenkie Koło Naukowe ISA2 Warsztaty programistyczne J2ME 25 listopada 2010 Eclipse Dodanie Nowego Midletu Marcin Stachniuk Wprowadzenie do J2ME 37/52
  • 41. Studenkie Koło Naukowe ISA2 Warsztaty programistyczne J2ME 25 listopada 2010 Eclipse Nazwa Nowego Midletu Marcin Stachniuk Wprowadzenie do J2ME 38/52
  • 42. Studenkie Koło Naukowe ISA2 Warsztaty programistyczne J2ME 25 listopada 2010 Eclipse Tworzenie Midletu koniec Marcin Stachniuk Wprowadzenie do J2ME 39/52
  • 43. Studenkie Koło Naukowe ISA2 Warsztaty programistyczne J2ME 25 listopada 2010 Eclipse Utworzony Midlet Marcin Stachniuk Wprowadzenie do J2ME 40/52
  • 44. Studenkie Koło Naukowe ISA2 Warsztaty programistyczne J2ME 25 listopada 2010 Eclipse Uruchomienie Midletu Marcin Stachniuk Wprowadzenie do J2ME 41/52
  • 45. Studenkie Koło Naukowe ISA2 Warsztaty programistyczne J2ME 25 listopada 2010 Plan prezentacji 1 Wprowadzenie 2 Pierwszy kod 3 Jakie środowisko? NetBeans Eclipse 4 Uruchomienie aplikacji 5 Podsumowanie Marcin Stachniuk Wprowadzenie do J2ME 42/52
  • 46. Studenkie Koło Naukowe ISA2 Warsztaty programistyczne J2ME 25 listopada 2010 JAD i JAR Marcin Stachniuk Wprowadzenie do J2ME 43/52
  • 47. Studenkie Koło Naukowe ISA2 Warsztaty programistyczne J2ME 25 listopada 2010 Przykładowa Zawartość JAD MIDlet-1: Midlet, , Midlet MIDlet-Jar-Size: 1035 MIDlet-Jar-URL: MobileApplication1.jar MIDlet-Name: MobileApplication1 MIDlet-Vendor: Vendor MIDlet-Version: 1.0 MicroEdition-Configuration: CLDC-1.1 MicroEdition-Profile: MIDP-2.0 Marcin Stachniuk Wprowadzenie do J2ME 44/52
  • 48. Studenkie Koło Naukowe ISA2 Warsztaty programistyczne J2ME 25 listopada 2010 Zawartość JAR Marcin Stachniuk Wprowadzenie do J2ME 45/52
  • 49. Studenkie Koło Naukowe ISA2 Warsztaty programistyczne J2ME 25 listopada 2010 Zawartość Manifestu (plik MANIFEST.MF) z pliku JAR MIDlet-1: Midlet, , Midlet MIDlet-Jar-URL: MobileApplication1.jar MIDlet-Name: MobileApplication1 MIDlet-Vendor: Vendor MIDlet-Version: 1.0 MicroEdition-Configuration: CLDC-1.1 MicroEdition-Profile: MIDP-2.0 Brak atrybutu MIDlet-Jar-Size! Marcin Stachniuk Wprowadzenie do J2ME 46/52
  • 50. Studenkie Koło Naukowe ISA2 Warsztaty programistyczne J2ME 25 listopada 2010 Instalacja Aplikacji Instalacja Aplikacji j2me na telefonie z internetu: Ściągnięcie pliku JAD Sprawdzenie pliku JAD (wielkość MIDletu, wersje MIDP, CLDC) Ściągnięcie pliku JAR Sprawdzenie rozmiaru JAR’a (czy zgodny z wpisem w pliku JAD) Porównanie wpisów w pliku JAD i MANIFEST.MF Instalacja Marcin Stachniuk Wprowadzenie do J2ME 47/52
  • 51. Studenkie Koło Naukowe ISA2 Warsztaty programistyczne J2ME 25 listopada 2010 Zawartość JAD - zmodyfikowana MIDlet-1: Midlet, , Midlet MIDlet-Jar-Size: 1035 MIDlet-Jar-URL: http://myserwer.com/MobileApplication1.jar MIDlet-Name: MobileApplication1 MIDlet-Vendor: Vendor MIDlet-Version: 1.0 MicroEdition-Configuration: CLDC-1.1 MicroEdition-Profile: MIDP-2.0 Marcin Stachniuk Wprowadzenie do J2ME 48/52
  • 52. Studenkie Koło Naukowe ISA2 Warsztaty programistyczne J2ME 25 listopada 2010 Plan prezentacji 1 Wprowadzenie 2 Pierwszy kod 3 Jakie środowisko? NetBeans Eclipse 4 Uruchomienie aplikacji 5 Podsumowanie Marcin Stachniuk Wprowadzenie do J2ME 49/52
  • 53. Studenkie Koło Naukowe ISA2 Warsztaty programistyczne J2ME 25 listopada 2010 Czego się dzisiaj nauczyliśmy? Konfiguracje CLDC 1.0 i 1.1 Profile MIDP 1.0 2.0 2.1 3.0 Budowa programu, cykl życia aplikacji Środowiska IDE Uruchomienie Aplikacji Marcin Stachniuk Wprowadzenie do J2ME 50/52
  • 54. Studenkie Koło Naukowe ISA2 Warsztaty programistyczne J2ME 25 listopada 2010 Pytania ? Marcin Stachniuk Wprowadzenie do J2ME 51/52
  • 55. Studenkie Koło Naukowe ISA2 Warsztaty programistyczne J2ME 25 listopada 2010 Więcej informacji Kontakt z autorem: mstachniuk@gmail.com Strona koła naukowego ISA2 http://autonom.ict.pwr.wroc.pl/ Nowa (2010) strona warsztatów: http://autonom.iiar.pwr.wroc.pl/mobile/ Stara (2009) strona warsztatów: http://autonom.ict.pwr.wroc.pl/∼mstachniuk Adres tego dokumentu: http://autonom.iiar.pwr.wroc.pl/mobile/2010/02/02-podstawy-2010.11.25.pdf NetBeans http://www.netbeans.org/ Eclipse http://www.eclipse.org/ Java ME Platform Overview http://java.sun.com/javame/technology/index.jsp Managing the MIDlet Life-Cycle with a Finite State Machine http://developers.sun.com/mobility/midp/articles/fsm/ Java Platform Micro Edition Software Development Kit 3.0 http://java.sun.com/javame/downloads/sdk30.jsp Marcin Stachniuk Wprowadzenie do J2ME 52/52