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