Tim Penyusun:
Dean Multipah -1142129-(deanmultipah90@gmail.com)
Fresa dwi JS -1242133-(fresa.dwi.juniar@gmail.com)
Hafi Hariyadhi - 1042001-(hafid.hariyadhi@gmail.com)
Tina Ardiani -1142232-(thin.ardh@gmail.com)
Fresa dwi JS -1242133-(fresa.dwi.juniar@gmail.com)
Hafi Hariyadhi - 1042001-(hafid.hariyadhi@gmail.com)
Tina Ardiani -1142232-(thin.ardh@gmail.com)
What is Java?
Teknologi Java merupakan sebuah teknologi yang berkembang sangat pesat akhir-akhir ini. Bahkan belakangan ini dikabarkan berusaha mengalahkan Microsoft yang terkenal sebagai kampiun dari produsen operating system dimuka bumi ini. Teknologi Java yang pada awalnya dikenal untuk aplikasi pada desktop (J2SE) ataupun pada application server (J2EE), kini hadir dengan teknologi terbarunya, J2ME™ Platform, untuk pembangunan aplikasi pada mobile device seperti mobile phone dan PDA. Selain J2ME™ Platform yang termasuk baru, terdapat pula satu buah platform teknologi Java yang termasuk baru pula yaitu Java Card. Java Card merupakan seperangkat kakas untuk membangun aplikasi pada sebuah card electronic seperti SIM Card pada ponsel kita. SIM Card yang dipergunakan oleh Mobile Banking BCA (layanan operator selular Excelcomindo) menjadi salah satu contoh dari teknologi Java Card. Tulisan ini ditujukan untuk memberikan overview tentang J2ME™ Platform, dan diskursus J2ME Configurations & Profiles yang digunakan untuk membangun aplikasi Java untuk mobile phones, PDA, dan two-way pagers.
The Network is the Computer
Computing atau komputasi ada dimana-mana! Kita masih dapat menemukan one-computer-to-many-people (mainframes) dan one-person-to-one-computer (PCs) di berbagai institusi atau organisasi diberbagai belahan dunia. Belakangan terdapat aplikasi yang sangat menarik yaitu mobile application yang dapat hadir dimanapun kita berada, ketika belanja, ketika menyetir sekalipun, bahkan ketika duduk disudut dapur anda, aplikasi ini dapat hadir dan siap membantu anda seolah dunia telah berada dalam genggaman tangan anda.
Apakah devices yang menarik bagi para programmers dan engineers saat ini? Banyak orang berkata bahwa devices yang paling diminati adalah perpaduan antara computing + networking. Sebuah mobile phone’s memiliki kapabilitas wireless networking sekaligus kapabilitas computing (walau masih terbatas). Bila anda selama ini hanya dapat browsing dihadapan PC desktop yang bersifat wireline, maka saat ini melalui mobile devices anda dapat melakukan browsing dengan kemampuan yang tidak mengecewakan dibandingkan PC desktop, anywhere!
The Network is the Computer
Computing atau komputasi ada dimana-mana! Kita masih dapat menemukan one-computer-to-many-people (mainframes) dan one-person-to-one-computer (PCs) di berbagai institusi atau organisasi diberbagai belahan dunia. Belakangan terdapat aplikasi yang sangat menarik yaitu mobile application yang dapat hadir dimanapun kita berada, ketika belanja, ketika menyetir sekalipun, bahkan ketika duduk disudut dapur anda, aplikasi ini dapat hadir dan siap membantu anda seolah dunia telah berada dalam genggaman tangan anda.
Apakah devices yang menarik bagi para programmers dan engineers saat ini? Banyak orang berkata bahwa devices yang paling diminati adalah perpaduan antara computing + networking. Sebuah mobile phone’s memiliki kapabilitas wireless networking sekaligus kapabilitas computing (walau masih terbatas). Bila anda selama ini hanya dapat browsing dihadapan PC desktop yang bersifat wireline, maka saat ini melalui mobile devices anda dapat melakukan browsing dengan kemampuan yang tidak mengecewakan dibandingkan PC desktop, anywhere!
About Java
Penjelasan tentang mengenai 2 Java 2 Platform, Micro Edition (J2ME)
Java 2 Platform, Micro Edition (J2ME) adalah salah satu dari produk Sun Microsystems. Java 2 Platform, Micro Edition (J2ME) merupakan bagian dari platform Java 2. Platform Java 2 sendiri terdiri dari tiga elemen, yaitu:
• Java programming language.
Bahasa pemrograman yang digunakan mirip dengan bahasa pemrograman C++ tetapi secara fundamental berbeda. C++ menggunakan pointer-pointer yang kurang aman dan mengharuskan programmer untuk mengalokasikan dan mengosongkan memori. Sedangkan Java menggunakan typesafe object references dan setiap memori yang tidak digunakan akan dikosongkan secara otomatis. Java juga mendukung multiple inheritance dengan konstruksi yang lebih baik, yaitu Interface.
• Java Virtual Machine.
Java Virtual Machine atau JVM adalah dasar dari platform Java. Arsitektur JVM menawarkan beberapa fitur menarik, salah satunya adalah JVM dapat diimplementasikan untuk berjalan pada berbagai macam operating system dan hardware. Ketika mengcompile sebuah program dengan C++ akan dihasilkan file executeable(*.exe) yang hanya dapat dijalankan pada Windows OS. Hal ini berbeda dengan Java, program akan dicompile dengan JIT-compiler dan menghasilkan bytecode. Bytecode inilah yang akan diterjemahkan oleh JVM dan dijalankan sebagai sebuah aplikasi.
• Application Programming Interfaces(API).
Dengan dukungan API yang luas, programmer dapat membuat berbagai macam program sesuai keinginannya dengan mudah dan cepat
Ketiga elemen di atas apabila disatukan akan membentuk platform Java. Java juga didesain untuk kompatibel dengan berbagai macam hardware komputer, mulai dari smart card hingga server. Java dibagi menjadi 3 edisi dan masing-masing memiliki fungsi yang berbeda, yaitu:
• Java 2 Platform, Standard Edition(J2SE)
J2SE didesain untuk digunakan pada komputer desktop atau PC. J2SE paling sering dijalankan pada OS X, Linux, Solaris, dan Microsoft Windows.
• Java 2 Platform, Enterprise Edition(J2EE)
J2EE adalah platform yang sangat luas untuk aplikasi multi-user dan banyak digunakan oleh perusahaan-perusahaan. J2EE berbasis pada J2SE dengan tambahan API untuk pemrograman sisi server.
• Java 2 Platform, Micro Edition(J2ME)
J2ME adalah satu set teknologi dan spesifikasi yang dikembangkan untuk perangkat kecil seperti pager dan hanphone. J2ME menggunakan subset dari komponen J2SE, seperti virtual machine yang lebih kecil dan API.
Berbeda dengan J2SE, J2ME bukanlah sebuah software atau sebuah spesifikasi tunggal. Perbedaan ini mungkin sangat membingungkan, bahkan untuk developer yang sudah mengenal J2SE. J2ME adalah sebuah platform, sebuah kumpulan dari teknologi dan spesifikasi yang didesain untuk perangkat kecil.
Karena J2ME mendukung banyak perangkat, tidak mungkin untuk membuat solusi “satu ukuran untuk semua”. Oleh karena itu, J2ME dibagi-bagi menjadi Configuration, Profiles, dan Package optional. Configurations adalah spesifikasi yang menjabarkan sebuah virtual machine dan satu set API dasar yang dapat digunakan dengan beberapa perangkat tertentu. Sebuah Configuration, sebagai contoh, mungkin ditujukan untuk perangkat yang memiliki memori dibawah 512KB dan koneksi jaringan yang naik turun. Virtual machine dapat berupa Java Virtual Machine lengkap atau berupa bagian dari Java Virtual Machine.
Sebuah profile dibangun berdasarkan Configuration, ditambah API yang lebih spesifik untuk membuat sebuah environment lengkap untuk pembuatan aplikasi. Walaupun sebuah Configuration mendeskripsikan sebuah JVM dan satu set API dasar, tetapi masih kurang untuk menspesifikasikan cukup detail untuk pembuatan aplikasi. Profile biasanya menyertakan API untuk siklus hidup, user interface dan persistent storage suatu aplikasi.
Sebuah optional Package menyediakan fungsionalitas yang mungkin tidak berhubungan dengan Configuration atau Profile tertentu. Sebuah contoh untuk optional Package adalah Bluetooth API(JSR 82), yang menyediakan API standar untuk mengakses jaringan Bluetooth. Optional Package ini dapat diimplementasikan dengan kombinasi Configuration dan Profile lainnya.
Here we go for our Video on Youtube:
Sample Code:
TodoDB.java
import javax.microedition.rms.RecordEnumeration;
import javax.microedition.rms.RecordStore;
import javax.microedition.rms.RecordStoreException;
import javax.microedition.rms.RecordStoreNotOpenException;
public class ToDoDB
{
RecordStore recordStore = null;
public ToDoDB(String paramString)
{
try
{
this.recordStore = open(paramString);
}
catch (RecordStoreException localRecordStoreException)
{
localRecordStoreException.printStackTrace();
}
}
public RecordStore open(String paramString)
throws RecordStoreException
{
return RecordStore.openRecordStore(paramString, true);
}
public void close()
throws RecordStoreNotOpenException, RecordStoreException
{
if (this.recordStore.getNumRecords() == 0)
{
String str = this.recordStore.getName();
this.recordStore.closeRecordStore();
RecordStore.deleteRecordStore(str);
}
else
{
this.recordStore.closeRecordStore();
}
}
public synchronized int addTaskRecord(String paramString)
{
byte[] arrayOfByte = paramString.getBytes();
try
{
return this.recordStore.addRecord(arrayOfByte, 0, arrayOfByte.length);
}
catch (RecordStoreException localRecordStoreException)
{
localRecordStoreException.printStackTrace();
}
return -1;
}
public synchronized void deleteTaskRecord(int paramInt)
{
try
{
this.recordStore.deleteRecord(paramInt);
}
catch (RecordStoreException localRecordStoreException)
{
localRecordStoreException.printStackTrace();
}
}
public synchronized RecordEnumeration enumerateTaskRecords()
throws RecordStoreNotOpenException
{
return this.recordStore.enumerateRecords(null, null, false);
}
}
ToDoList$ToDoItem.Java
import java.io.PrintStream;
class ToDoList$ToDoItem
{
private long date;
private String task;
private final ToDoList this$0;
ToDoList$ToDoItem(ToDoList paramToDoList, String paramString)
{
this.this$0 = paramToDoList;
parse(paramString);
}
public void parse(String paramString)
{
int i = paramString.indexOf(';');
System.out.println(paramString.substring(0, i));
System.out.println(paramString.substring(i + 1, paramString.length() - 1));
}
public long getDate(String paramString)
{
parse(paramString);
return this.date;
}
public String getTask(String paramString)
{
parse(paramString);
return this.task;
}}
ToDoList.java
import java.io.PrintStream;
import java.util.Calendar;
import java.util.Vector;
import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.DateField;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Form;
import javax.microedition.lcdui.List;
import javax.microedition.lcdui.TextField;
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;
import javax.microedition.rms.RecordEnumeration;
public class ToDoList extends MIDlet
implements CommandListener
{
private Command exitCommand = new Command("Exit", 7, 2);
private Command addCommand = new Command("Add", 1, 3);
private Command backCommand = new Command("Back", 2, 3);
private Command saveCommand = new Command("Save", 4, 3);
private Display display = Display.getDisplay(this);
private List mainScreen = new List("To Do List", 3);
private Form taskScreen;
private DateField dateField;
private TextField taskField;
private ToDoDB db = null;
private Vector taskIDs = new Vector();
public ToDoList()
{
this.mainScreen.addCommand(this.exitCommand);
this.mainScreen.addCommand(this.addCommand);
this.mainScreen.setCommandListener(this);
this.taskScreen = new Form("New Task");
this.dateField = new DateField("", 1);
this.taskScreen.append(this.dateField);
this.taskField = new TextField("", "", 20, 0);
this.taskScreen.append(this.taskField);
this.taskScreen.addCommand(this.backCommand);
this.taskScreen.addCommand(this.saveCommand);
this.taskScreen.setCommandListener(this);
try
{
this.db = new ToDoDB("tasks");
}
catch (Exception localException1)
{
System.err.println("EXCEPTION: Problem opening the database.");
}
RecordEnumeration localRecordEnumeration = null;
try
{
localRecordEnumeration = this.db.enumerateTaskRecords();
while (localRecordEnumeration.hasNextElement())
this.taskIDs.addElement(new Integer(localRecordEnumeration.nextRecordId()));
}
catch (Exception localException2)
{
System.err.println("EXCEPTION: Problem reading the task records.");
}
localRecordEnumeration.reset();
try
{
while (localRecordEnumeration.hasNextElement())
{
ToDoTask localToDoTask = new ToDoTask(localRecordEnumeration.nextRecord());
this.mainScreen.append(localToDoTask.getFormattedTask(), null);
}
}
catch (Exception localException3)
{
System.err.println("EXCEPTION: Problem reading the task records.");
}
}
public void startApp()
throws MIDletStateChangeException
{
this.display.setCurrent(this.mainScreen);
}
public void pauseApp()
{
}
public void destroyApp(boolean paramBoolean)
{
try
{
this.db.close();
}
catch (Exception localException)
{
System.err.println("EXCEPTION: Problem closing the database.");
}
}
public void commandAction(Command paramCommand, Displayable paramDisplayable)
{
if (paramCommand == this.exitCommand)
{
destroyApp(false);
notifyDestroyed();
}
else if (paramCommand == this.addCommand)
{
this.dateField.setDate(Calendar.getInstance().getTime());
this.taskField.setString("");
this.display.setCurrent(this.taskScreen);
}
else if (paramCommand == List.SELECT_COMMAND)
{
int i = this.mainScreen.getSelectedIndex();
int j = ((Integer)this.taskIDs.elementAt(i)).intValue();
this.db.deleteTaskRecord(j);
this.taskIDs.removeElementAt(i);
this.mainScreen.delete(i);
}
else if (paramCommand == this.backCommand)
{
this.display.setCurrent(this.mainScreen);
}
else if (paramCommand == this.saveCommand)
{
ToDoTask localToDoTask = new ToDoTask(this.dateField.getDate(), this.taskField.getString());
this.taskIDs.addElement(new Integer(this.db.addTaskRecord(localToDoTask.pack())));
this.mainScreen.append(localToDoTask.getFormattedTask(), null);
this.display.setCurrent(this.mainScreen);
}
}
}
ToDoTask.java
import java.util.Calendar;
import java.util.Date;
public class ToDoTask
{
private Date date;
private String task;
public ToDoTask(Date paramDate, String paramString)
{
this.date = paramDate;
this.task = paramString;
}
public ToDoTask(byte[] paramArrayOfByte)
{
unpack(new String(paramArrayOfByte));
}
public void unpack(String paramString)
{
int i = paramString.indexOf(';');
this.date = new Date(Long.parseLong(paramString.substring(0, i)));
this.task = paramString.substring(i + 1, paramString.length());
}
public String pack()
{
return String.valueOf(this.date.getTime()) + ';' + this.task;
}
public String getFormattedTask()
{
Calendar localCalendar = Calendar.getInstance();
localCalendar.setTime(this.date);
String str = localCalendar.get(2) + 1 + "/" + localCalendar.get(5) + " " + this.task;
return str;
}}
Result
Here we go...
Tidak ada komentar:
Posting Komentar