Programowanie w języku Java

Podobne dokumenty
Java Platform Micro Edition

Podstawy tworzenia aplikacji z wykorzystaniem języka Java ME ćwiczenia 3

Wprowadzenie do J2ME

M-biznes: Mobile Business. Realizacja aplikacji mobilnych w języku Java. Typy urządzeń przenośnych. Przykłady zastosowań

Programowanie w języku Java

Podstawy tworzenia aplikacji z wykorzystaniem języka Java ME ćwiczenia 1

Podstawy tworzenia aplikacji z wykorzystaniem języka Java ME ćwiczenia 2

Programowanie aplikacji na urządzenia mobilne

Programowanie obiektowe

Autor : Mateusz Kupczyk

STWORZENIE PRZYKŁADOWEJ

Wątki. Definiowanie wątków jako klas potomnych Thread. Nadpisanie metody run().

Agata Gałecka, Martyna Sikorska, Tomasz Cebula. 28 kwietnia 2009

Programowanie urządzeń mobilnych na platformie Java ME

Laboratorium z informatyki sem. III/ćw.11 Wydział Transportu PW 2017/18

Laboratorium z informatyki sem. III/ćw.12 Wydział Transportu PW 2018/19

ZAPOZNANIE SIĘ Z TWORZENIEM

Piotr Orzechowski. Technologie Biznesu Elektronicznego

Aplikacje RMI. Budowa aplikacji rozproszonych. Część 2.

Java programowanie telefonów komórkowych Na podstawie:

J2ME Część II. P.J.Podsiadły

Certyfikaty firmy Sun. Ścieżka certyfikacyjna dla Javy Egzamin SCJP

Aplikacja wielowątkowa prosty komunikator

Obiektowe programowanie rozproszone Java RMI. Krzysztof Banaś Systemy rozproszone 1

Podstawy otwartych języków programowania Język Java

Programowanie w języku Java

Tworzenie i wykorzystanie usług

1. Co można powiedzieć o poniższym kodzie (zakładając, że znajduje się on w jednym pliku A.java)?

public void startapp() { } public void pauseapp() { } public void destroyapp(boolean unconditional) { }

Podejście obiektowe do budowy systemów rozproszonych

Współbieżność i równoległość w środowiskach obiektowych. Krzysztof Banaś Obliczenia równoległe 1

Multimedia JAVA. Historia

Java w Urządzeniach Mobilnych

Aplikacja wielow tkowa prosty komunikator

Remote Method Invocation 17 listopada 2010

Aplikacje RMI Lab4

Podejście obiektowe do budowy systemów rozproszonych

Java RMI. Dariusz Wawrzyniak 1. Podejście obiektowe do budowy systemów rozproszonych. obiekt. interfejs. kliencka. sieć

Java. Programowanie Obiektowe Mateusz Cicheński

SWING c.d. przydatne narzędzia: JFileChooser, JOptionPane. drag'n drop, menu kontekstowe.

Kurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016

public - może być używana w kodzie poza klasą, jedna klasa ModyfikatorKlasy może być kombinacją wyrażeń:

Java. Wykład. Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ

WSPÓŁBIEŻNOŚĆ. MATERIAŁY:

Języki Programowania II Wykład 3. Java podstawy. Przypomnienie

Remote Method Invocation 17 listopada rozproszonych. Dariusz Wawrzyniak (IIPP) 1

Programowanie obiektowe

Remote Method Invocation 17 listopada Dariusz Wawrzyniak (IIPP) 1

Dokumentacja do API Javy.

Prerekwizyty. Aby pisać midlety należy zainstalować: JDK 1.2 lub nowszy, CLDC: cldc/download.

Programowanie współbieżne Laboratorium nr 11

1. Co można powiedzieć o poniższym kodzie?

Autor: dr inż. Zofia Kruczkiewicz, Programowanie aplikacji internetowych 1

Kurs programowania. Wykład 8. Wojciech Macyna. 10 maj 2017

Interaktywne aplety obsługa zdarzeń, uruchamianie apletu przez przeglądarkę lub maszynę wirtualną Javy. Tworzenie łącz w apletach

Programowanie obiektowe

Java: otwórz okienko. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak

package pakieta; import pakietb.b; package pakietb; public class B { B(){} public class A { private B b; A(B b) { this.b = b; } }

Wywoływanie metod zdalnych

SOAP. Autor: Piotr Sobczak

Aplikacje RMI

Wykład 2 Wybrane konstrukcje obiektowych języków programowania (1)

Krótka Historia. Co to jest NetBeans? Historia. NetBeans Platform NetBeans IDE NetBeans Mobility Pack Zintegrowane moduły. Paczki do NetBeans.

Operatory. Składnia. Typy proste. Znaki specjalne

Współbieżność w środowisku Java

Programowanie na komórki

Java RMI. Dariusz Wawrzyniak 1. Podejście obiektowe do budowy systemów rozproszonych. obiekt. interfejs. kliencka. sieć

Systemy Rozproszone - Ćwiczenie 6

6.1 Pojęcie wątku programu 6.2 Klasy Timer, TimerTask 6.3 Klasa Thread 6.4 Synchronizacja pracy wątków 6.5 Grupowanie wątków

Programowanie urządzeń mobilnych

Programowanie w języku Java - Wyjątki, obsługa wyjątków, generowanie wyjątków

Wielowątkowość. Programowanie w środowisku rozproszonym. Wykład 1.

1. Co można powiedzieć o poniższym kodzie? public interface I { void m1() {}; static public void m2() {}; void abstract m3();

JAVA. Strumienie wejścia i wyjścia. Pliki - zapis i odczyt

RESTful Android. Na co zwrócić uwagę przy tworzeniu aplikacji klienckich REST na Androidzie

Język JAVA podstawy. Wykład 6, część 2. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Sposoby tworzenia projektu zawierającego aplet w środowisku NetBeans. Metody zabezpieczenia komputera użytkownika przed działaniem apletu.

Przetwarzanie równoległe i współbieżne

Programowanie obiektowe

Języki i Techniki Programowania II. Wykład 7. Współbieżność 1

Programowanie rozproszone w języku Java

Zaawansowane aplikacje WWW - laboratorium

Kontenery i komponenty graficzne

Bezpieczne uruchamianie apletów wg

Tworzenie i obsługa graficznego interfejsu uŝytkownika

Zdalne wywołanie metod - koncepcja. Oprogramowanie systemów równoległych i rozproszonych Wykład 7. Rodzaje obiektów. Odniesienie do obiektu

Oprogramowanie systemów równoległych i rozproszonych Wykład 7

Programowanie i projektowanie obiektowe

Wątki (Threads) Potrzeby. Przetwarzanie równoległe i współbieŝne. Cechy programowania wątkowego. Concurrent programming is like

1. Co można powiedzieć o poniższym kodzie? public class A { void m(int a) { } int m(string s) { return Integer.parseInt(s); }

Język Java wątki (streszczenie)

Obliczenia równoległe i rozproszone w JAVIE. Michał Kozłowski 30 listopada 2003

Remote Method Invocation

Wywoływanie metod zdalnych

JAVA I SIECI. MATERIAŁY:

Wykład 7: Pakiety i Interfejsy

Kurs programowania. Wykład 9. Wojciech Macyna. 28 kwiecień 2016

Programowanie w środowiskach graficznych. Wykład 2.

Programowane refleksyjne i serializacja

Współbieżność i równoległość w środowiskach obiektowych. Krzysztof Banaś Obliczenia równoległe 1

Transkrypt:

Programowanie w języku Java Wykład 12: Java Platform, Micro Edition (Java ME) Konfiguracje Standard dla pewnych grup urządzeń Connected Limited Devices Configuration (CLDC) procesor 16-bitowy, 192kB RAM telefony komórkowe, notesy elektroniczne, itp. Connected Device Configuration (CDC) procesor 32-bitowy, 2MB RAM palmtopy, smartfony Programowanie w języku Java 2 1

Profile Standard API dla pewnej grupy urządzeń w ramach danej konfiguracji: MIDP (Mobile Information Device Profile) CLDC uproszczone GUI (dla LCD), midlety Foundation Profile CDC bez GUI, standardowe klasy Javy Personal Basis Profile CDC xlet Personal Profile CDC aplety i AWT Programowanie w języku Java 3 Struktura J2ME Programowanie w języku Java 4 2

Tworzenie aplikacji w CLDC Programowanie w języku Java 5 Biblioteki CLDC java.lang, java.lang.ref typy, stringi, math, wątki, system java.io podstawowe strumienie (brak ObjectStream, Gzip, ZIP) java.util calendar, date, proste kontenery javax.microedition.io connector Programowanie w języku Java 6 3

Profil MIDP CDLC + GUI Dodatkowe biblioteki: javax.microedition.lcdui, javax.microedition.lcdui.game GUI javax.microedition.media, javax.microedition.media.control media player javax.microedition.midlet środowisko aplikacji Programowanie w języku Java 7 Profil MIDP midlety rozszerzają klasę MIDlet. Stany midletu: paused: stan początkowy, po wywołaniu stopapp() active: po wywołaniu startapp() destroyed: po wywołaniu destroyapp() Programowanie w języku Java 8 4

Przykład 1 import javax.microedition.midlet.*; import javax.microedition.lcdui.*; public class FirstMIDlet extends MIDlet implements CommandListener { private Command exitcommand; private Command infocommand; private Command buycommand; private Display display; public FirstMIDlet() { display = Display.getDisplay(this); exitcommand = new Command("Exit", Command.SCREEN, 1); infocommand = new Command("Info",Command.SCREEN, 2); buycommand = new Command("Buy", Command.SCREEN, 2); public void startapp() { TextBox t = new TextBox ("FirstMIDlet", "Welcome to MIDP Programming", 256, 0); t.addcommand(exitcommand); t.addcommand(infocommand); t.addcommand(buycommand); t.setcommandlistener(this); display.setcurrent(t); public void pauseapp() { public void destroyapp(boolean unconditional) { public void commandaction(command c, Displayable s) { if (c == exitcommand) { destroyapp(false); notifydestroyed(); Programowanie w języku Java 9 Przykład 2 import java.io.*; import javax.microedition.io.*; import javax.microedition.lcdui.*; import javax.microedition.midlet.*; public class FirstExample extends MIDlet { private Display display; String url = "http://www.javacourses.com/hello.txt"; public FirstExample() { display = Display.getDisplay(this); public void startapp() { getviastreamconnection(url); catch (IOException e) { System.out.println("IOException " + e); e.printstacktrace(); public void pauseapp() { public void destroyapp(boolean unconditional) { void getviastreamconnection(string url) throws IOException { StreamConnection c = null; InputStream s = null; StringBuffer b = new StringBuffer(); TextBox t = null; c = (StreamConnection)Connector.open(url); s = c.openinputstream(); int ch; while((ch = s.read())!= -1) { b.append((char) ch); System.out.println(b.toString()); t=new TextBox("hello...", b.tostring(),1024,0); finally { if(s!= null) { s.close(); if(c!= null) { c.close(); display.setcurrent(t); Programowanie w języku Java 10 5

Pakiet opcjonalny WMA... import javax.microedition.io.*; import javax.wireless.messaging.*;... MessageConnection conn = null; String url = "sms://+417034967891"; conn = (MessageConnection) Connector.open( url ); TextMessage msg = conn.newmessage( conn.text_message ); msg.setpayloadtext( "Please call me!" ); conn.send( msg ); catch( Exception e ){ // obsługa błędów finally { if( conn!= null ){ conn.close(); catch( Exception e ){... Programowanie w języku Java 11 Pakiet MMAPI... import java.io.*; import javax.microedition.media.*;... Player p = Manager.createPlayer( "http://somesite.com/music.mp3" ); p.start(); catch( IOException ioe ){ catch( MediaException me ){... Programowanie w języku Java 12 6

Konfiguracja CDC pełna implementacja Javy i JVM pełna zgodność z CLDC pakiety opcjonalne: RMI JDBC Web Services AGUI (zaawansowana grafika) Security Programowanie w języku Java 13 Foundation Profile dla urządzeń o ograniczonych zasobach, np. drukarki sieciowe, routery, bez grafiki, GUI wszystkie pakiety Javy (bez AWT) + CDLC Programowanie w języku Java 14 7

Personal Basis Profile Foundation Profile + ograniczone GUI (AWT bez Button, Panel itp.), JavaBeans, RMI xlety: java.microedition.xlet, java.microedition.xlet.ixc, przykładowe zastosowania: interaktywna TV, kamery itp. Programowanie w języku Java 15 Personal Profile pełne GUI (AWT) aplety zastosowania: zaawansowane PDA, wbudowane przegladarki internetowe Programowanie w języku Java 16 8

Xlety import javax.microedition.xlet.*; public class BasicXlet implements Xlet { private XletContext context; public BasicXlet() { public void initxlet( XletContext context ) throws XletStateChangeException { this.context = context; public void destroyxlet( boolean unconditional ) throws XletStateChangeException { public void pausexlet(){ public void startxlet() throws XletStateChangeException { Programowanie w języku Java 17 Stany xletu loaded: xlet jest załadowany i konstruktor jest wykonany paused: xlet zainicjowany (metoda initxlet() jest wykonana) i zatrzymany (metoda pausexlet()), active: xlet działa (aktywowany metodą startxlet()) destroyed: xlet jest zniszczony (metoda destroyxlet()) Programowanie w języku Java 18 9

Przykład xletu (zegar) Programowanie w języku Java 19 Przykład xletu (zegar), cd. import javax.microedition.xlet.*; import java.util.*; import java.awt.*; import java.awt.event.*; public class ClockXlet implements Xlet, ActionListener { TextField display; MyClock clock; Button pausebutton = new Button("Pause"); Button stopbutton = new Button("Stop"); Button resumebutton = new Button("Resume"); XletContext context; public void initxlet(xletcontext ctx) throws XletStateChangeException { Container c; context = ctx; c = ctx.getcontainer(); catch (UnavailableContainerException e) { throw new XletStateChangeException( e.getmessage()); display = new TextField(30); clock = new MyClock(display); pausebutton.addactionlistener(this); resumebutton.addactionlistener(this); resumebutton.setenabled(false); stopbutton.addactionlistener(this); c.setsize(200, 200); c.setvisible(true); c.add(display); c.add(pausebutton); c.add(resumebutton); c.add(stopbutton); clock.start(); public void startxlet() { clock.setpaused(false); resumebutton.setenabled(false); pausebutton.setenabled(true); Programowanie w języku Java 20 10

Przykład xletu (zegar), cd. public void pausexlet() { clock.setpaused(true); resumebutton.setenabled(true); pausebutton.setenabled(false); public void destroyxlet(boolean unconditional) { clock.setstopped(true); public void actionperformed(actionevent e) { if (e.getsource() == stopbutton) { clock.setstopped(true); context.notifydestroyed(); else if (e.getsource() == pausebutton) { clock.setpaused(true); resumebutton.setenabled(true); pausebutton.setenabled(false); context.notifypaused(); else if (e.getsource() == resumebutton) { context.resumerequest(); class MyClock extends Thread { boolean paused, stopped; TextField display; public MyClock(TextField t) { display = t; String gettime() { Calendar rightnow = Calendar.getInstance(); String hour = String.valueOf(rightNow.get( Calendar.HOUR_OF_DAY)); String min = String.valueOf(rightNow.get( Calendar.MINUTE)); if (min.length() == 1) { min = "0" + min; String sec = String.valueOf(rightNow.get( Calendar.SECOND)); if (sec.length() == 1) { sec = "0" + sec; return hour + ":" + min + ":" + sec; Programowanie w języku Java 21 Przykład xletu (zegar), cd. public synchronized boolean isstopped() { return stopped; public synchronized void setstopped(boolean value) { stopped = value; notifyall(); public synchronized boolean ispaused() { return paused; public synchronized void setpaused(boolean value) { paused = value; notifyall(); public void run() { while (!isstopped()) { if (!ispaused()) { Thread.sleep(1); display.settext(gettime()); else { synchronized (this) { wait(); catch (InterruptedException e) { Programowanie w języku Java 22 11

Przykład xletu (komunikacja) import java.rmi.*; import javax.microedition.xlet.*; import javax.microedition.xlet.ixc.*; public class RunOnceXlet extends BasicXlet { private static final String NAME = "RunOnceXlet.activator"; private boolean removebinding = false; public RunOnceXlet(){ public void initxlet( XletContext context ) throws XletStateChangeException { IxcRegistry registry = IxcRegistry.getRegistry( context ); RemoteInterface remote = new RemoteInterfaceImpl(); while( true ){ registry.bind( NAME, remote ); removebinding = true; break; catch( AlreadyBoundException abe ){ remote =(RemoteInterface) registry.lookup( NAME ); String[] args = (String[]) context.getxletproperty( XletContext.ARGS ); remote.activateagain( args ); throw new XletStateChangeException( "Already running" ); catch( NotBoundException nbe ){ catch( RemoteException e ){ System.out.println( "Registry error:" ); e.printstacktrace(); super.initxlet( context ); Programowanie w języku Java 23 Przykład xletu, cd. public void exit(){ if( removebinding ){ IxcRegistry registry = IxcRegistry.getRegistry( getcontext() ); registry.unbind( NAME ); catch( NotBoundException e ){ catch( RemoteException e ){ super.exit(); public interface RemoteInterface extends Remote { void activateagain( String[] args ) throws RemoteException; private class RemoteInterfaceImpl implements RemoteInterface { public RemoteInterfaceImpl() throws RemoteException { public void activateagain( String[] args ) throws RemoteException { System.out.println( "[RemoteInterfaceImpl] Activation request" ); Programowanie w języku Java 24 12

Narzędzia Sun Java Wireless Toolkit, NetBeans Mobility Pack Nokia Developer's Suite for J2ME, Siemens Wireless Java SDK, Sony Ericsson SDK for the Java(TM) ME Platform J2ME Polish Programowanie w języku Java 25 Koniec Programowanie w języku Java 26 13