350 likes | 563 Views
J2ME. Melih Sakarya Java Teknolojileri Derneği. JVM. JAVA Kullanılan yerler Windows-Linux-Unix-Solaris PDA lar Smart Cardlar Cep Telefonları Appletler Local Applicationlar LEGO Java Tv. KONFİGÜRASYON VE PROFİLLER. CLDC (Connected Limited Device Configuration)
E N D
J2ME Melih Sakarya Java Teknolojileri Derneği
JVM JAVA Kullanılan yerler • Windows-Linux-Unix-Solaris • PDA lar • Smart Cardlar • Cep Telefonları • Appletler • Local Applicationlar • LEGO • Java Tv
KONFİGÜRASYON VE PROFİLLER • CLDC (Connected Limited Device Configuration) • CDC (Connected Device Configuration)
CLCD Konfigirasyonu KVM 512 KB tan ufak hafızası ve sınırlı ağ bağlantısı olan cihazlar için tasarlanmıştır • java.io • java.lang • java.lang.ref • java.util • javax.microedition.io
CDC Konfigürasyonu CVM (Compact Virtual Machine) CLDC den daha fazla hafıza ve işlemci gücüne sahip cihazlarda kullanılır • java.io • java.lang • java.lang.ref • java.lang.reflect • java.math • java.net • java.security • java.security.cert • java.text • java.util • java.util.jar • java.util.zip • javax.microedition.io
(MIDP)Mobile Information Device Profile • MIDP 1.0 • MIDP 2.0
MIDP 1.0 • java.io • java.lang • java.util • javax.microedition.io • javax.microedition.lcdui • javax.microedition.midlet • javax.microedition.rms
MIDP 2.0 • java.io • java.lang • java.util • javax.microedition.io • javax.microedition.lcdui.game • javax.microedition.media • javax.microedition.media.control • javax.microedition.midlet • javax.microedition.pki • javax.microedition.rms
J2ME ve IDE ler http://java.sun.com/j2me/ http://www.netbeans.org http://wwws.sun.com/software/sundev/previous/studio4u1/buy/ http://www.eclipse.org/ http://eclipseme.sourceforge.net/
J2WTK Kurulumu http://java.sun.com/products/j2mewtoolkit/download-2_2.html
Midlet Yapısı public void startApp(){ } protected void pauseApp(){ } protected void destroyApp(boolean boolean0){ }
Örnek Midlet import javax.microedition.midlet.*; import javax.microedition.lcdui.*; public class OrnekMidlet extends MIDlet{ protected void startApp(){} protected void pauseApp(){} protected void destroyApp(boolean boolean0){} }
Örnek Midlet import javax.microedition.midlet.*; import javax.microedition.lcdui.*; public class MerhabaDunya extends MIDlet{ protected void startApp(){ TextBox box=new TextBox("Merhaba","MerhabaDünya",100,TextField.ANY); Display.getDisplay(this).setCurrent(box); } protected void pauseApp(){} protected void destroyApp(boolean boolean0){} }
LCDUILimited Connected User Interface Display.getDisplay(this)
LCDUILimited Connected User Interface Display.getDisplay(this).setCurrent(nesne)
LCDUILimited Connected User Interface TextBox box=new TextBox("hello","Hello MIDlet",100,TextField.ANY); Display.getDisplay(this).setCurrent(box);
Form Nesneleri Form form= new Form("Giris"); TextField user= new TextField("Username:","",20,TextField.ANY); TextField pass= new TextField("Password:","",20,TextField.PASSWORD); ChoiceGroup cinsiyet=new ChoiceGroup("Cinsiyet", ChoiceGroup.EXCLUSIVE); cinsiyet.append("Bay",null); cinsiyet.append("Bayan",null); DateField tarih=new DateField("Dogum Tarihi",DateField.DATE); form.append(tarih); form.append(cinsiyet); form.append(user); form.append(pass); display.setCurrent(form);
Command import javax.microedition.midlet.*; import javax.microedition.lcdui.*; public class formUygulamasi extends MIDlet implements CommandListener{ Form form; Command cikis; Command kaydet; public void startApp() { form= new Form("Kayit Formu"); TextField ad= new TextField("Adiniz:","",20,TextField.ANY); cikis= new Command ("Cikis",Command.EXIT,2); kaydet= new Command("Kaydet",Command.OK,1); form.addCommand(cikis); form.addCommand(kaydet); form.append(ad); Display.getDisplay(this).setCurrent(form); } public void pauseApp() { } public void destroyApp(boolean unconditional) { } public void commandAction(Command c, Displayable s) { if (c == kaydet) { //islemler } } }
Alert Alert uyari = new Alert("Uyari", "Bos Alan Birakmayiniz", null, null); uyari.setTimeout(Alert.FOREVER); Display.getDisplay(this).setCurrent(uyari);
RMS (Record Management System) //Yaziyoruz RecordStore rs=RecordStore.openRecordStore("telefon", true); String[] liste={"Melih","Altug","Murat","Burak","Ozan","Mustafa"}; byte[] record; for (int i=0;i<liste.length;i++){ record=liste[i].getBytes(); rs.addRecord(record,0, record.length); }
RMS (Record Management System) //okuyoruz byte[] recData= new byte[100]; int dataLen; for(int i=1;i<rs.getNumRecords();i++){ rs.getRecord(i,recData,0); dataLen = rs.getRecord(i,recData,0); String str=new String(recData,0,dataLen); try{ System.out.println("icerik "+i+":"+str); } catch(Exception e){ System.out.println(e.toString()); }
RMS (Record Management System) //kapatiyoruz rs.closeRecordStore();
RMS (Record Management System) try{ RecordStore.deleteRecordStore("telefon"); } catch(Exception e){ }
Sunucuya Baglanma • Socket Baglantısı • Http Baglantisi • InputConnection • OutputConnection • DatagramConnection • StreamConnection • HttpConnection
HttpConnection HttpConnection baglanti= (HttpConnection)Connector.open("http://localhost:8080/test/index.jsp"); InputStream is=baglanti.openInputStream(); int ch; StringBuffer haber= new StringBuffer(); while((ch=is.read())!=-1){ haber.append( (char)ch ); } is.close(); baglanti.close();
Canvas import javax.microedition.midlet.*; import javax.microedition.lcdui.*; public class CanvasTest extends MIDlet{ public void startApp(){ TestCanvas canvas=new TestCanvas(); Display.getDisplay(this).setCurrent(canvas); } public void pauseApp(){} public void destroyApp(boolean unconditional){} public class TestCanvas extends Canvas{ public void paint(Graphics g){ g.setColor(255,255,255); g.fillRect(0,0,getWidth(),getHeight()); g.setColor(0,0,0); g.drawRect(10,10,50,50); } } }
Media Api InputStream is =getClass().getResourceAsStram(“/audio.wav”); Player player= Manager.createPlayer(is, “audio/X-wav”); player.start();
Game Api javax.microedition.lcdui.game • GameCanvas : Canvas class'ından extend olan bir oyun canvası. • Layer: Bir orjini birde genişlik ve yüksekliği olan dikdörtgensel bir bölge tanımlamak için kullanılan bir class. • LayerManager: Birden fazla Layer nesnelerini yönetmek için kullanılan bir class • Sprite: Bir image'ı olan oyun nesneleri için kullanılan class. Animasyon, Döndürme gibi özellikleri bulunmakta . • TiledLayer: Birden fazla hücresi olan bir layer nesnesi. Bu hücrelere image koyulabiliyor. Bu şeklilde aynı image'lardan bir çok TiledLayer nesnesi yaratılabiliyor.
Game Api if((getKeyStates()&LEFT_PRESSED)!=0){ x--; } else if((getKeyStates()&RIGHT_PRESSED)!=0) { x++; }else if((getKeyStates()&UP_PRESSED)!=0){ y--; }else if((getKeyStates()&DOWN_PRESSED)!=0){ y++; } Graphics g=getGraphics(); clear(g); g.drawImage(image,x,y,Graphics.LEFT|Graphics.TOP); flushGraphics();
JAD Dosyası MIDlet-1: HelloMIDlet, , hello.HelloMIDlet MIDlet-2: Seminer, , hello.Seminer MIDlet-Jar-Size: 4484 MIDlet-Jar-URL: Melih.jar MIDlet-Name: Melih MIDlet-Vendor: Vendor MIDlet-Version: 1.0 MicroEdition-Configuration: CLDC-1.0 MicroEdition-Profile: MIDP-1.0
Örnek Wap Sayfası <?xml version="1.0" encoding="iso-8859-1"> <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.2//EN" "http://www.wapforum.org/DTD/wml12.dtd"> <wml> <card title="main"> <a href="Test.jad"> Midlet Download Et </a> </card> </wml>
Mimetype Tanımları .jar application/java-archive .jad text/vnd.sun.j2me.app-descriptor