55
Studenkie Kolo Naukowe ISA 2 Warsztaty programistyczne J2ME 25 listopada 2010 Wprowadzenie do J2ME Marcin Stachniuk [email protected] Politechnika Wroclawska Wydzial Elektroniki Studenckie Kolo Naukowe Informatyki Systemów Autonomicznych i Adaptacyjnych ISA 2 25 listopada 2010 Marcin Stachniuk Wprowadzenie do J2ME 1/52

Wprowadzenie do J2ME

Embed Size (px)

Citation preview

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