wprowadzenie do j2me
TRANSCRIPT
Studenkie Koło Naukowe ISA2 Warsztaty programistyczne J2ME 25 listopada 2010
Wprowadzenie do J2ME
Marcin [email protected]
Politechnika WrocławskaWydział Elektroniki
Studenckie Koło Naukowe Informatyki Systemów Autonomicznychi 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?NetBeansEclipse
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?NetBeansEclipse
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.1poprawiona 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.1poprawiona 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?NetBeansEclipse
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 <i o s t r eam>2:3: u s i n g namespace s td ;4:5: i n t main ( i n t argc , cha r ∗∗ a rgv )6: {7: cout << ” He l l o World” << end l ;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 vo i d main ( S t r i n g [ ] a r g s ) {3: System . out . p r i n t l n ( ” He 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: // impor t p a k i e t u z aw i e r a j ą c e g o k l a s ę MIDlet2: impor t j a 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 k t ó r a b ęd z i e j ako p i e rw s z a ” uruchamiana ” .6: p u b l i c c l a s s MyMidlet e x t end s MIDlet {7: p u b l i c vo i d s t a r tApp ( ) {8: }9:10: p u b l i c vo i d pauseApp ( ) {11: }12:13: p u b l i c vo i d des t royApp ( boo l ean 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 uruchamianiaaplikacji
startApp() - wywoływana przy uruchomieniu aplikacjii podczas powrotu ze stanu Paused (np. po zakończeniurozmowy telefonicznej)
pauseApp() - wywoływana gdy telefon przechodzi w stanPaused (np. podczas przyjścia sms’a)
destroyApp(bool unconditional) - wywoływana przedzakończeniem aplikacji (np. podczas ”twardego”wyłączaniaaplikacji czerwonym przyciskiem)
Metody destroyApp() i startApp() mogą rzucić wyjątekMIDletStateChangeException, niezezwalając w tensposó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 MIDlet1: impor t j a v a x . m i c r o e d i t i o n . l c d u i . ∗ ;2: impor t j a 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 M id l e t e x t end s MIDlet {5: p u b l i c vo i d s t a r tApp ( ) {6: // u two r z en i e TextBox ’ a7: TextBox textBox = new TextBox (8: ”Moj P i e rwszy Mid l e t ” ,9: ” He l l o World ! ” , 20 , 0) ;10:11: // pob r an i e ob i e k t u wy św i e t l a c z a12: D i s p l a y d i s p l a y = D i s p l a y . g e tD i s p l a y ( t h i s ) ;13:14: // u s t aw 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 e15: d i s p l a y . s e tCu r r e n t ( textBox ) ;16: System . out . p r i n t l n ( ” He 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 vo i d pauseApp ( ) {20: }21:22: p u b l i c vo i d des t royApp ( boo l ean 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 MIDlet1: impor t j a v a x . m i c r o e d i t i o n . l c d u i . ∗ ;2: impor t j a 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 imp lementu j e CommandListener5: p u b l i c c l a s s M id l e t e x t end s MIDlet implements ←↩
CommandListener {6: p u b l i c vo i d s t a r tApp ( ) {7: TextBox textBox = new TextBox (8: ”Moj P i e rwszy Mid l e t ” ,9: ” He l l o World ! ” , 20 , 0) ;10:11: // u two r z en i e komendy ”Koniec ”12: Command exitCommand = new Command( ”Koniec ” , ←↩
Command . EXIT , 1) ;13: // u s t aw i e n i e na s łuch iwacza komend14: textBox . setCommandListener ( t h i s ) ;15: // dodan i e komendy do textBox ’ a16: 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 tD i s p l a y ( t h i s ) ;18: d i s p l a y . s e tCu r r e n t ( textBox ) ;19: System . out . p r i n t l n ( ” He l l o World ! ” ) ;20: }21:22: p u b l i c vo i d pauseApp ( ) { }23:24: p u b l i c vo i d des t royApp ( boo l ean u n c o n d i t i o n a l ) {25: }26:27: // kon i e c zna j e s t imp l ementac j a t e j metody gdy ←↩
implementujemy CommandListener28: p u b l i c vo i d commandAction (Command c , D i s p l a y a b l e d ) {29: // sp r awdzen i e czy z d a r z e n i e pochodz i od komendy ←↩
typu Command . EXIT30: i f ( c . getCommandType ( ) == Command . EXIT) {31: des t royApp ( f a l s e ) ;32: n o t i f yD e s t r o y e d ( ) ; // zakońc z en i e a p l i k a c j i33: }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?NetBeansEclipse
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ędzieinstalować 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?NetBeansEclipse
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, , MidletMIDlet-Jar-Size: 1035MIDlet-Jar-URL: MobileApplication1.jarMIDlet-Name: MobileApplication1MIDlet-Vendor: VendorMIDlet-Version: 1.0MicroEdition-Configuration: CLDC-1.1MicroEdition-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, , MidletMIDlet-Jar-URL: MobileApplication1.jarMIDlet-Name: MobileApplication1MIDlet-Vendor: VendorMIDlet-Version: 1.0MicroEdition-Configuration: CLDC-1.1MicroEdition-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 plikuJAD)
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, , MidletMIDlet-Jar-Size: 1035MIDlet-Jar-URL: http://myserwer.com/MobileApplication1.jarMIDlet-Name: MobileApplication1MIDlet-Vendor: VendorMIDlet-Version: 1.0MicroEdition-Configuration: CLDC-1.1MicroEdition-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?NetBeansEclipse
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:[email protected]
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/∼mstachniukAdres tego dokumentu:http://autonom.iiar.pwr.wroc.pl/mobile/2010/02/02-podstawy-2010.11.25.pdf
NetBeanshttp://www.netbeans.org/
Eclipsehttp://www.eclipse.org/
Java ME Platform Overviewhttp://java.sun.com/javame/technology/index.jsp
Managing the MIDlet Life-Cycle with a Finite State Machinehttp://developers.sun.com/mobility/midp/articles/fsm/
Java Platform Micro Edition Software Development Kit 3.0http://java.sun.com/javame/downloads/sdk30.jsp
Marcin Stachniuk Wprowadzenie do J2ME 52/52