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